【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用

这篇具有很好参考价值的文章主要介绍了【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

前言

适用人群:本教程适合大赛接入小布语音技能的同学以及初次使用小布助手的开发者
本篇文章是博主弄了多次测试才勉强弄明白的,OPPO的开发文档和没有没啥区别
很多人会问:“为啥有更成熟的其他语音技能平台放着不用?”
答:“因为我在参加的比赛是由oppo主办方举办的,若要想进决赛,必须要接入OPPO开放平台”
所以,我为了冲一冲决赛,昨晚在喝了咖啡的加持下,硬是把代码逻辑弄明白了,文章分为两部分:猜想测试部分实际操作部分,请根据你的需要进行跳过选择


实际操作

由于部分注册图片博主未截图故采用站外的

注册OPPO平台账号

【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

点我注册oppo开放平台账号,注册有两种资质选项:

【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

  • 个人开发者:
    需要手持身份证认证
    权限没有URL(开发文档有,咨询后个人没有)
    有APP、卡片、文字等技能能力
  • 企业开发者:
    需要对公账户等
    全部都有

打开创建技能界面

注册成功后,在开放能力中找到并点击【小布语音技能】【发布技能】,如图所示:

【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手
博主这里没有条件认证企业,认证的是个人开发者,所以URL接口能力没有,但是后面发现是我没有仔细看,无论有没有URL接口能力,我们都可以通过代码来进行构造,请继续往下看

创建技能

【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手
说明:

名称 说明
技能名称 用于开发者标识且能识别的字符
技能调用名 用于技能调用的名称,例如:小布小布,打开{云联印}

个人开发者,需要接口能力,请选择【代码编译


创建意图

点击创建意图,输入中英文意图名称,我们以==今天是多少号?==来进行意图说明,方便更直观的槽位解析
【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手
选中槽位解析后,找到下方输入框,将多种意图表达方式输入其中,进行解析,不要的可以进行删除

【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

完成后,点击保存即可

槽位解析

在刚刚的意图创建中,我们对时间进行了一个提问,在小布技能助手这里开放日期查询接口,打开即可输出当前的日期
【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

对话管理

对话管理,这里显示一个IDE窗口,我猜测他是获取用户说的话,这里有个奇怪的问题,这里开发文档并没有说,测试验证请看下面猜想测试部分
【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

 args = request.get_json()["params"]["query"]
 print("=………===……===……………………… ")
 print(args)

 args = request.get_json()["params"]
 print("=………===……===……………………… ")
 print(args["query"])

返回竟然不相同?第二个报错?所以我建议还是按第一种方式来

对话测试

刚刚建立了“今天几号”的意图,在询问后会返回当前时间

“现在是几点”相关意图并未建立,所以找不到配置过的回复
【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

接口代码编写

由于URL不对我们开放,所以我们需要自己编写python代码
【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

接口创建

在后端新建一个接口

'''get_config.php'''
<?php

  die(
        json_encode(
            array(
            'code' => 200,
            'msg' => '请求成功',
            'data' => 'hahahahahah'
        ),480)
);

新建一个python的requests get请求

import requests

url = "http://web.taila.club/get_config.php"

response = requests.get(url)

data = response.json()  # 如果返回的是JSON数据,则使用response.json()解析
print(data)

整合封装到对话管理中去

#!/usr/bin/env python  
# -*- coding:utf-8 _*-
"""
     ____                                    _   ____    ____
   / __ )________  ___  ____  ____         / | / / /   / __ \
  / __  / ___/ _ \/ _ \/ __ \/ __ \       /  |/ / /   / /_/ /
 / /_/ / /  /  __/  __/ / / / /_/ /      / /|  / /___/ ____/
/_____/_/   \___/\___/_/ /_/\____/      /_/ |_/_____/_/

"""
from flask import request, jsonify
from flask import current_app
import requests


def main():
    # 获取 request 中相关参数
    args = request.get_json()["params"]
    #current_app.logger.info(f"\n\n输入参数:{args}")
    print("=………===……===……………………… ")
    url = "http://web.taila.club/get_config.php"

    response = requests.get(url)
	data = response.json()
    print(data)
    print(args)
    # 拼接返回结果
    

    # 返回 JSON Response
    #return args

这里很遗憾,在我做了测试后发现requests模块报错,看了文档《代码编辑-开发文档.pdf》才知道对方只支持:

1、flask ~= 1.0.4
2 、bjoern
3、 python-dateutil
4 、redis
5 、hiredis
6 、gevent
7、 xlrd
8、 pandas
9 、sentry-sdk[flask]
10、 scikit-learn

无奈,为了能参加比赛绞劲脑汁,我联系了平台开发者看能不能添加下这个库,这里暂时跳过,我们来对一些逻辑进行验证,使小布助手能够回答:

新建意图

【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

对话管理

from flask import request, current_app, jsonify
data = {
     "文件": "正在发送[我的文件]到打印机",
      "消息": "已绑定账户",
    }

def main():
    args = request.get_json()["params"]
    nlu = args['nlu'][0]    # 获取nlu(意图分类)的结果
    current_app.logger.info(f"nlu 结果:\n{str(nlu)}\n")
    tts = "没有查询到相关结果"
    if nlu["intent_list"]:
        intent = nlu["intent_list"][0]
        intent_name = intent["intent_name"]# 获取
        if intent_name == "send":
            tts = data['文件']# 根据槽位值从数据中选择回复
        if intent_name == "add":
            tts = data['消息']# 根据槽位值从数据中选择回复
    text_card = {
    "type": "textCard",
    "title": "云联印+",
    "content": tts,
    "recommend": []
    }
     # 拼接返回结构体
    response = {
    "dialog_type": "completed", # 对话状态
    "response": text_card,
    "permanent_state": {}, # 永久存储 DS
    "dialog_state": {} # 临时 DS
    }
    current_app.logger.info(f"intent_name:\n{str(text_card)}\n")
     # 将文本卡片转换为 json 对象
    response = jsonify(response)
    return response

测试

【智能交互】OPPO接入小布语音技能通关教程

ps:这个仅仅能够使小布助手进行指定对话回复,并不能触发接口,为了完成比赛设计,这个是没有办法的办法了,演示的时候找一个人进行模拟即可伪造

猜想测试

通过打印args 发现,返回的竟是一个json数据
通过打印print("=………===……===……………………… ")来确定代码位置

 args = request.get_json()["params"]
 print("=………===……===……………………… ")
 print(args)

通过模拟对话测试,看一下日志
【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用,Python爬虫脚本项目实战,交互,小布语音技能助手

===================================
Function: 759ab2f1-0bc2-4662-b7b6-8cb2f8502f08
Environment: python3
Namespace: python3
Pod: poolmgr-python3-python3-434009664-df7bbcb94-jhrhg
Container: python3
Node: 10.56.168.93
===================================
1
64
*** Starting uWSGI 2.0.20 (64bit) on [Tue Jul 18 11:26:34 2023] ***
compiled with version: 4.8.5 20150623 (Red Hat 4.8.5-44) on 07 December 2022 02:08:23
os: Linux-3.10.0-957.27.2.el7.x86_64 #1 SMP Mon Jul 29 17:46:05 UTC 2019
nodename: poolmgr-python3-python3-434009664-df7bbcb94-jhrhg
machine: x86_64
clock source: unix
pcre jit disabled
detected number of CPU cores: 40
current working directory: /app
detected binary path: /usr/local/python3/bin/uwsgi
*** WARNING: you are running uWSGI without its master process manager ***
your processes number limit is 204800
your memory page size is 4096 bytes
detected max file descriptor number: 2000000
lock engine: pthread robust mutexes
thunder lock: disabled (you can enable it with --thunder-lock)
uwsgi socket 0 bound to TCP address 0.0.0.0:8888 fd 3
Python version: 3.7.4 (default, Dec 7 2022, 02:06:06) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]
Python main interpreter initialized at 0x285cac0
python threads support enabled
your server socket listen backlog is limited to 100 connections
your mercy for graceful operations on workers is 60 seconds
mapped 731648 bytes (714 KB) for 64 cores
*** Operational MODE: threaded ***
WSGI app 0 (mountpoint=‘’) ready in 0 seconds on interpreter 0x285cac0 pid: 8 (default app)
*** uWSGI is running in multiple interpreter mode ***
spawned uWSGI worker 1 (and the only) (pid: 8, cores: 64)
[2023-07-18 14:11:52,547] [INFO] [fnId]= [TraceId]=8dc292ee5d210cab712789e441ec4eab [module]=server recieved specialize request, body: {‘filepath’: ‘/userfunc/deployarchive’, ‘functionName’: ‘user.main’, ‘mPodName’: ‘’, ‘parameters’: None, ‘url’: ‘’, ‘handler’: ‘user.main’, ‘fnId’: ‘759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘fnName’: ‘open-dialog-open.2016060-NEW’, ‘revisionId’: ‘rs-759ab2f1-0bc2-4662-b7b6-8cb2f8502f08-18’, ‘bsoCrdName’: ‘rs-759ab2f1-0bc2-4662-b7b6-8cb2f8502f08-18-up’, ‘bsoCrdNamespace’: ‘python3’, ‘bsoTriggerKey’: ‘trigger-serverless-rs-759ab2f1-0bc2-4662-b7b6-8cb2f8502f08-18’, ‘burrfishDomain’: ‘burrfish-trigger-service.burrfish.svc.uranus-prod001-prod.oke.oppo.local:8084’, ‘monitorReceiverUrl’: ‘metrics.ums.oppo.local/api/v2/metrics’, ‘fnNs’: ‘759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘podId’: ‘13010070-c9fe-4694-b40f-d20772a54421’, ‘podName’: ‘poolmgr-python3-python3-434009664-df7bbcb94-jhrhg’, ‘runtime’: ‘python3’, ‘concurrencyThresholds’: [0.55], ‘maxRequest’: 150, ‘specializePort’: 8888, ‘mqTrigger’: {‘metadata’: {‘creationTimestamp’: None}, ‘spec’: {‘fnId’: ‘’, ‘envns’: ‘’, ‘alias’: ‘’, ‘type’: ‘’, ‘clusterName’: ‘’, ‘clusterId’: ‘’, ‘mqUrl’: ‘’, ‘scaleFramework’: ‘’, ‘tag’: ‘’, ‘lagThreshold’: 0, ‘topic’: ‘’, ‘groupId’: ‘’, ‘respTopic’: ‘’, ‘errorTopic’: ‘’}, ‘status’: {‘status’: ‘’}}, ‘functionType’: ‘web’, ‘envVersion’: 3, ‘isAsync’: False, ‘specializeUrl’: ‘’, ‘bindLayerOrNot’: False, ‘layerRevisionId’: ‘’, ‘debugMode’: False}
[2023-07-18 14:11:52,547] [INFO] [fnId]= [TraceId]=8dc292ee5d210cab712789e441ec4eab [module]=server /v2/specialize called with filepath = “/userfunc/deployarchive” handler = “user.main”
[2023-07-18 14:11:52,547] [DEBUG] [fnId]= [TraceId]=8dc292ee5d210cab712789e441ec4eab [module]=server funcModuleName=“user” funcName=“main”
[2023-07-18 14:11:52,547] [DEBUG] [fnId]= [TraceId]=8dc292ee5d210cab712789e441ec4eab [module]=server package = “”
[2023-07-18 14:11:52,549] [DEBUG] [fnId]= [TraceId]=8dc292ee5d210cab712789e441ec4eab [module]=server specialize success…
[pid: 8|app: 0|req: 1/1] 127.0.0.1 () {36 vars in 548 bytes} [Tue Jul 18 14:11:52 2023] POST /v2/specialize => generated 0 bytes in 7 msecs (HTTP/1.1 200) 2 headers in 78 bytes (1 switches on core 61)
[2023-07-18 14:11:52,592] [DEBUG] [fnId]=759ab2f1-0bc2-4662-b7b6-8cb2f8502f08 [TraceId]=16896607125150a9073f305781497365 [module]=server Function call POST request received, {‘params’: {‘record_id’: ‘fceefcd0-2531-11ee-953e-13211fb1fdc4’, ‘user_id’: ‘df279e30-2524-11ee-953e-13211fb1fdc4’, ‘nlu’: [{‘intent_list’: [{‘match_confidence’: 0.99996, ‘intent_name’: ‘what_is_the_date_today’, ‘slot_list’: [{‘raw_value’: ‘今天’, ‘start’: 0, ‘end’: 2, ‘slot_name’: ‘DATE_TIME’, ‘value’: ‘{“indexArray”:“[0, 1]”,“value”:“[2023-07-18, ]”,“resultType”:“complete”,“key”:“今天”,“keyWord”:“今天”}’}]}], ‘domain_name’: ‘open.2016060’}], ‘query’: ‘打开云联印今天是几号?’, ‘dialog_state’: {}, ‘turn’: 1, ‘permanent_state’: {}}}
[2023-07-18 14:11:52,592] [INFO] [fnId]=759ab2f1-0bc2-4662-b7b6-8cb2f8502f08 [TraceId]=16896607125150a9073f305781497365 [module]=server Function req_context: {‘body’: {‘params’: {‘record_id’: ‘fceefcd0-2531-11ee-953e-13211fb1fdc4’, ‘user_id’: ‘df279e30-2524-11ee-953e-13211fb1fdc4’, ‘nlu’: [{‘intent_list’: [{‘match_confidence’: 0.99996, ‘intent_name’: ‘what_is_the_date_today’, ‘slot_list’: [{‘raw_value’: ‘今天’, ‘start’: 0, ‘end’: 2, ‘slot_name’: ‘DATE_TIME’, ‘value’: ‘{“indexArray”:“[0, 1]”,“value”:“[2023-07-18, ]”,“resultType”:“complete”,“key”:“今天”,“keyWord”:“今天”}’}]}], ‘domain_name’: ‘open.2016060’}], ‘query’: ‘打开云联印今天是几号?’, ‘dialog_state’: {}, ‘turn’: 1, ‘permanent_state’: {}}}, ‘queryString’: {}, ‘headers’: {‘Host’: ‘10.144.181.189:8888’, ‘User-Agent’: ‘Apache-HttpClient/4.5.2 (Java/1.8.0_252)’, ‘Content-Length’: ‘543’, ‘Accept-Encoding’: ‘gzip,deflate’, ‘Content-Type’: ‘application/json’, ‘Fc-Accesskey-Id’: ‘ee52ba67-285e-4059-b1b2-32cc4f18df32’, ‘Fc-Authorization’: ‘FC ee52ba67-285e-4059-b1b2-32cc4f18df32:0HB6Ex+1dGdI4oXpm578H5vUlJu4V6MkCd4Z8/8bdqk=’, ‘Fc-User-Id’: ‘80252515’, ‘Forwarded’: ‘host=serverless-api.cloud.oppo.local;’, ‘Level’: ‘1.10’, ‘Request-Receive-Time’: ‘1689660712515’, ‘T-Domain’: ‘serverless-api.cloud.oppo.local’, ‘T-Req-Ttl’: ‘60000’, ‘Traceid’: ‘16896607125150a9073f305781497365’, ‘X-B3-Sampled’: ‘0’, ‘X-B3-Spanid’: ‘62f5d24fb8aa0462’, ‘X-B3-Traceid’: ‘e2a21fcb0ab131d67d5c46468af009ac’, ‘X-Forwarded-For’: ‘10.90.214.184, 10.56.162.135’, ‘X-Forwarded-Host’: ‘serverless-api.cloud.oppo.local’, ‘X-Forwarded-Proto’: ‘http’, ‘X-Proto’: ‘HTTP’, ‘X-Real-Ip’: ‘10.90.214.184’, ‘X-Uranus-Full-Url’: ‘/uranus-function/759ab2f1-0bc2-4662-b7b6-8cb2f8502f08/759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘X-Uranus-Function-Name’: ‘759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘X-Uranus-Function-Namespace’: ‘759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘X-Uranus-Function-Resourceversion’: ‘747185962’, ‘X-Uranus-Function-Uid’: ‘19d33cd9-4e7f-4829-8a71-26b72d49e219’, ‘X-User-Ip’: ‘10.90.214.184’, ‘Connection’: ‘close’}}
[2023-07-18 14:11:52,592] [DEBUG] [fnId]=759ab2f1-0bc2-4662-b7b6-8cb2f8502f08 [TraceId]=16896607125150a9073f305781497365 [module]=server Start to call userfunc…
=………===……===………………………
{'record_id': 'fceefcd0-2531-11ee-953e-13211fb1fdc4', 'user_id': 'df279e30-2524-11ee-953e-13211fb1fdc4', 'nlu': [{'intent_list': [{'match_confidence': 0.99996, 'intent_name': 'what_is_the_date_today', 'slot_list': [{'raw_value': '今天', 'start': 0, 'end': 2, 'slot_name': 'DATE_TIME', 'value': '{"indexArray":"[0, 1]","value":"[2023-07-18, ]","resultType":"complete","key":"今天","keyWord":"今天"}'}]}], 'domain_name': 'open.2016060'}], 'query': '打开云联印今天是几号?', 'dialog_state': {}, 'turn': 1, 'permanent_state': {}}
[2023-07-18 14:11:52,592] [INFO] [fnId]=759ab2f1-0bc2-4662-b7b6-8cb2f8502f08 [TraceId]=16896607125150a9073f305781497365 [module]=server function call result: None
Exception on / [POST]
Traceback (most recent call last):
File “/usr/local/python3/lib/python3.7/site-packages/flask/app.py”, line 2077, in wsgi_app
response = self.full_dispatch_request()
File “/usr/local/python3/lib/python3.7/site-packages/flask/app.py”, line 1526, in full_dispatch_request
return self.finalize_request(rv)
File “/usr/local/python3/lib/python3.7/site-packages/flask/app.py”, line 1545, in finalize_request
response = self.make_response(rv)
File “/usr/local/python3/lib/python3.7/site-packages/flask/app.py”, line 1702, in make_response
f"The view function for {request.endpoint!r} did not"
TypeError: The view function for ‘f’ did not return a valid response. The function either returned None or ended without a return statement.
[pid: 8|app: 0|req: 2/2] 10.144.185.159 () {76 vars in 1559 bytes} [Tue Jul 18 14:11:52 2023] POST / => generated 265 bytes in 4 msecs (HTTP/1.1 500) 2 headers in 99 bytes (1 switches on core 62)
[2023-07-18 14:11:52,600] [DEBUG] [fnId]=759ab2f1-0bc2-4662-b7b6-8cb2f8502f08 [TraceId]=16896607125150a9073f305781497365 [module]=server Function call POST request received, {‘params’: {‘record_id’: ‘fceefcd0-2531-11ee-953e-13211fb1fdc4’, ‘user_id’: ‘df279e30-2524-11ee-953e-13211fb1fdc4’, ‘nlu’: [{‘intent_list’: [{‘match_confidence’: 0.99996, ‘intent_name’: ‘what_is_the_date_today’, ‘slot_list’: [{‘raw_value’: ‘今天’, ‘start’: 0, ‘end’: 2, ‘slot_name’: ‘DATE_TIME’, ‘value’: ‘{“indexArray”:“[0, 1]”,“value”:“[2023-07-18, ]”,“resultType”:“complete”,“key”:“今天”,“keyWord”:“今天”}’}]}], ‘domain_name’: ‘open.2016060’}], ‘query’: ‘打开云联印今天是几号?’, ‘dialog_state’: {}, ‘turn’: 1, ‘permanent_state’: {}}}
[2023-07-18 14:11:52,601] [INFO] [fnId]=759ab2f1-0bc2-4662-b7b6-8cb2f8502f08 [TraceId]=16896607125150a9073f305781497365 [module]=server Function req_context: {‘body’: {‘params’: {‘record_id’: ‘fceefcd0-2531-11ee-953e-13211fb1fdc4’, ‘user_id’: ‘df279e30-2524-11ee-953e-13211fb1fdc4’, ‘nlu’: [{‘intent_list’: [{‘match_confidence’: 0.99996, ‘intent_name’: ‘what_is_the_date_today’, ‘slot_list’: [{‘raw_value’: ‘今天’, ‘start’: 0, ‘end’: 2, ‘slot_name’: ‘DATE_TIME’, ‘value’: ‘{“indexArray”:“[0, 1]”,“value”:“[2023-07-18, ]”,“resultType”:“complete”,“key”:“今天”,“keyWord”:“今天”}’}]}], ‘domain_name’: ‘open.2016060’}], ‘query’: ‘打开云联印今天是几号?’, ‘dialog_state’: {}, ‘turn’: 1, ‘permanent_state’: {}}}, ‘queryString’: {}, ‘headers’: {‘Host’: ‘10.144.181.189:8888’, ‘User-Agent’: ‘Apache-HttpClient/4.5.2 (Java/1.8.0_252)’, ‘Content-Length’: ‘543’, ‘Accept-Encoding’: ‘gzip,deflate’, ‘Content-Type’: ‘application/json’, ‘Fc-Accesskey-Id’: ‘ee52ba67-285e-4059-b1b2-32cc4f18df32’, ‘Fc-Authorization’: ‘FC ee52ba67-285e-4059-b1b2-32cc4f18df32:0HB6Ex+1dGdI4oXpm578H5vUlJu4V6MkCd4Z8/8bdqk=’, ‘Fc-User-Id’: ‘80252515’, ‘Forwarded’: ‘host=serverless-api.cloud.oppo.local;’, ‘Level’: ‘1.10’, ‘Request-Receive-Time’: ‘1689660712515’, ‘T-Domain’: ‘serverless-api.cloud.oppo.local’, ‘T-Req-Ttl’: ‘60000’, ‘Traceid’: ‘16896607125150a9073f305781497365’, ‘X-B3-Sampled’: ‘0’, ‘X-B3-Spanid’: ‘8d78ca43b1dd583e’, ‘X-B3-Traceid’: ‘d76c9e1c481b9d224847f853bc9eeec3’, ‘X-Forwarded-For’: ‘10.90.214.184, 10.56.162.104’, ‘X-Forwarded-Host’: ‘serverless-api.cloud.oppo.local’, ‘X-Forwarded-Proto’: ‘http’, ‘X-Proto’: ‘HTTP’, ‘X-Real-Ip’: ‘10.90.214.184’, ‘X-Uranus-Full-Url’: ‘/uranus-function/759ab2f1-0bc2-4662-b7b6-8cb2f8502f08/759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘X-Uranus-Function-Name’: ‘759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘X-Uranus-Function-Namespace’: ‘759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘X-Uranus-Function-Resourceversion’: ‘747185962’, ‘X-Uranus-Function-Uid’: ‘19d33cd9-4e7f-4829-8a71-26b72d49e219’, ‘X-User-Ip’: ‘10.90.214.184’, ‘Connection’: ‘close’}}
[2023-07-18 14:11:52,601] [DEBUG] [fnId]=759ab2f1-0bc2-4662-b7b6-8cb2f8502f08 [TraceId]=16896607125150a9073f305781497365 [module]=server Start to call userfunc…
=………===……===………………………
{'record_id': 'fceefcd0-2531-11ee-953e-13211fb1fdc4', 'user_id': 'df279e30-2524-11ee-953e-13211fb1fdc4', 'nlu': [{'intent_list': [{'match_confidence': 0.99996, 'intent_name': 'what_is_the_date_today', 'slot_list': [{'raw_value': '今天', 'start': 0, 'end': 2, 'slot_name': 'DATE_TIME', 'value': '{"indexArray":"[0, 1]","value":"[2023-07-18, ]","resultType":"complete","key":"今天","keyWord":"今天"}'}]}], 'domain_name': 'open.2016060'}], 'query': '打开云联印今天是几号?', 'dialog_state': {}, 'turn': 1, 'permanent_state': {}}
[2023-07-18 14:11:52,601] [INFO] [fnId]=759ab2f1-0bc2-4662-b7b6-8cb2f8502f08 [TraceId]=16896607125150a9073f305781497365 [module]=server function call result: None
Exception on / [POST]
Traceback (most recent call last):
File “/usr/local/python3/lib/python3.7/site-packages/flask/app.py”, line 2077, in wsgi_app
response = self.full_dispatch_request()
File “/usr/local/python3/lib/python3.7/site-packages/flask/app.py”, line 1526, in full_dispatch_request
return self.finalize_request(rv)
File “/usr/local/python3/lib/python3.7/site-packages/flask/app.py”, line 1545, in finalize_request
response = self.make_response(rv)
File “/usr/local/python3/lib/python3.7/site-packages/flask/app.py”, line 1702, in make_response
f"The view function for {request.endpoint!r} did not"
TypeError: The view function for ‘f’ did not return a valid response. The function either returned None or ended without a return statement.
[pid: 8|app: 0|req: 3/3] 10.144.176.204 () {76 vars in 1559 bytes} [Tue Jul 18 14:11:52 2023] POST / => generated 265 bytes in 2 msecs (HTTP/1.1 500) 2 headers in 99 bytes (1 switches on core 63)
[2023-07-18 14:11:53,222] [INFO] [fnId]= [TraceId]= [module]=concurrency_algo 指标push线程启动…
[2023-07-18 14:11:56,243] [ERROR] [fnId]= [TraceId]= [module]=concurrency_algo 扩缩容指标推送失败 , url: http://metrics.ums.oppo.local/api/v2/metrics, reqBody: [{‘metric’: ‘function_runtime_active_request’, ‘instance’: ‘rs-759ab2f1-0bc2-4662-b7b6-8cb2f8502f08-18’, ‘value’: 0.0, ‘tags’: {‘category’: ‘FaaS’, ‘function_runtime_max_request’: ‘150’, ‘fnId’: ‘759ab2f1-0bc2-4662-b7b6-8cb2f8502f08’, ‘bsoCrdName’: ‘rs-759ab2f1-0bc2-4662-b7b6-8cb2f8502f08-18-up’, ‘bsoCrdNamespace’: ‘python3’, ‘bsoTriggerKey’: ‘trigger-serverless-rs-759ab2f1-0bc2-4662-b7b6-8cb2f8502f08-18’, ‘hostname’: ‘poolmgr-python3-python3-434009664-df7bbcb94-jhrhg’, ‘concurrencyThresholds’: ‘0.55’}, ‘timestamp’: 1689660713}], Err:HTTPConnectionPool(host=‘metrics.ums.oppo.local’, port=80): Max retries exceeded with url: /api/v2/metrics (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x7f5f846ca910>: Failed to establish a new connection: [Errno 110] Connection timed out’))

json处理后

{
	'record_id': 'fceefcd0-2531-11ee-953e-13211fb1fdc4',
	'user_id': 'df279e30-2524-11ee-953e-13211fb1fdc4',
	'nlu': [{
		'intent_list': [{
			'match_confidence': 0.99996,
			'intent_name': 'what_is_the_date_today',
			'slot_list': [{
				'raw_value': '今天',
				'start': 0,
				'end': 2,
				'slot_name': 'DATE_TIME',
				'value': '{"indexArray":"[0, 1]","value":"[2023-07-18, ]","resultType":"complete","key":"今天","keyWord":"今天"}'
			}]
		}],
		'domain_name': 'open.2016060'
	}],
	'query': '打开云联印今天是几号?',
	'dialog_state': {},
	'turn': 1,
	'permanent_state': {}
}

数据都获取到了剩下的不用我教了吧


相关文档

小布技能平台《个人开发者使用手册》

小布技能平台《个人开发者开发文档》文章来源地址https://www.toymoban.com/news/detail-591397.html

到了这里,关于【智能交互】OPPO接入小布语音技能通关教程:个人开发者实现接口调用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 人工智能语音交互技术在智能出行中的应用

    作者:禅与计算机程序设计艺术 智能出行是未来出行的趋势,而人工智能语音交互技术将是智能出行的重要组成部分。人工智能语音交互技术,可以使得智能出行更加便捷、安全、智能化。本文将介绍人工智能语音交互技术在智能出行中的应用。 本文旨在介绍人工智能语音

    2024年02月07日
    浏览(87)
  • 人工智能技术在智能语音交互中的应用:如何让交互更加智能、便捷和安全,提升用户体验

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 随着人工智能技术的快速发展,智能语音助手已经成为人们生活中不可或缺的一部分。智能语音助手不仅能够帮助人们完成一些琐碎的任务,还能够为人们提供便捷的交互体验。然而,智能语音助手的设计和实现仍然面临着

    2024年02月16日
    浏览(56)
  • 人工智能技术在智能音箱中的应用:智能语音识别与智能交互

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 智能音箱作为智能家居的重要组成部分,近年来得到了越来越多的用户青睐。随着人工智能技术的不断发展,智能音箱的核心功能之一——智能语音识别与智能交互也越来越受到人们的关注。智能语音识别技术可以让用户更

    2024年02月07日
    浏览(53)
  • 《语音优先》智能语音技术驱动的交互界面设计与语音机器人设计(译者序)...

    “言为心声,语为心境”,语言与对话是我们沟通与协作的重要方式。而智能语音技术是一种基于人工智能和自然语言处理技术的语音交互技术。它可以通过语音识别技术将用户的语音指令转换为文本,然后通过自然语言处理技术对文本进行分析和理解,最终生成相应的响应或

    2024年03月15日
    浏览(64)
  • 三分钟把ChatGPT接入Siri,让你的语音助手化身智能AI

    最近 ,各种各样使用 ChatGPT 的方式都出现了,但是有很多都需要在电脑操作,或者点击别人的各种各样的链接,而且有些可能还要魔法上网才能实现,这些都是稍微有点繁琐的。 那么 ,最方便的还是直接使用我们的手机一键打开或者语音唤醒就可以实现链接 ChatGPT 的,下边

    2024年02月05日
    浏览(43)
  • Windows系统实现唤醒+合成+命令词智能语音交互

    1、之前写过离线能力调用,今天来个终极版,实现智能交互或者结合大模型的智能交互示例,下面进入正题。上B站效果离线唤醒+离线合成+离线命令词实现智能交互_哔哩哔哩_bilibili 2、到讯飞开放平台下载唤醒+合成+命令词的离线组合包,找到msc_64.dll复制三份出来,一定要注

    2024年02月16日
    浏览(54)
  • “无限交互,全新驾驶体验!智能语音小车,与您共同开创未来出行。”#51单片机最终项目《智能语音小车》【中】

      本篇博文介绍的是用51单片机的最终项目《智能语音小车》【中】,包含循迹小车基本原理和方案,根据循迹原理实现循迹功能代码编写,解决冲出赛道不转弯问题,优化转弯平滑。加入电机调速,跟随小车,摇头测距小车01_舵机和超声波封装,摇头测距小车02_实现疯狂

    2024年02月21日
    浏览(55)
  • AI与语音识别合成:开启智能交互新时代

    引言: 随着人工智能(AI)技术的不断发展,语音识别和语音合成成为了人机交互领域的重要组成部分。语音识别技术使得机器能够理解人类的语言,而语音合成则使得机器能够以人类自然的语音形式进行回应。本文将深入探讨AI与语音识别合成的技术原理、应用场景以及未

    2024年04月23日
    浏览(43)
  • 扫地机语音提示芯片,智能家居语音交互首选方案,WT588F02B-8S

    智能家居已经成为现代家庭不可或缺的一部分,而语音交互技术正是智能家居的核心。在智能家居设备中,扫地机无疑是最受欢迎的产品之一。然而,要实现一个更智能的扫地机,需要一颗语音提示芯片,以提供高质量的语音交互体验。在众多的选择中,它能为智能扫地机带

    2024年02月15日
    浏览(38)
  • 人工智能交互革命:探索ChatGPT的无限可能 第5章 ChatGPT-语音助手

    语音助手是一种能够通过语音识别和自然语言处理等技术,帮助人们完成各种任务和提供各种服务的人工智能系统。它们通常可以在智能手机、智能音箱、车载系统和家庭自动化系统等设备中使用,帮助人们与设备交互和控制设备。 语音助手的发展可以追溯到20世纪80年代初

    2023年04月23日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包