1、前言
上节把百度端UNIT配置好了,这节主要记录App inventor的实现。
2、基本原理
UNIT调用时,需要读取系统为机器人分配的access _token。这个token有效期为1个月。为了方便,本次是手动获取并更新。其实可以能过网络微数据库来管理。
在获取access_token后。调用百度语音识别,识别结束后,通过web的post操作把问题推给机器人。
取得返回json文档后,把结果检索出来,然后用语音合成读出来。
3、基本界面
分别用了2个按钮和3个标签。主要是用于调试及返回。
另外增用了两个web端控件(HTTP客户端),为的是使用方便。如果不嫌麻烦,用一个web也可以的。
注意的是,screen中程序名要与我们在UNIT申请的语音包名称一致。
对应UNIT 这个名称 。另需注意的是,使用wxbit的app inventor时,应用包名称是带有”wxbit.“这个前缀的。在百度的语音包名称记得加上这个前缀。
相关传送门如下:App Inventor 语音交互技术
4 token获取
token获取的技术文档传送门: http://ai.baidu.com/docs#/Auth/top
对应在app inventor 中的程序块如下:
POST文本内容如下:grant_type=client_credentials&client_id=【你的ID】&client_secret=【你的secret】
对应的位置在这里:
返回是一个JSON文档。格式如下
我们解释出takon这个值 ,并放在一个变量中。
5 语音识别及问题推送
语音唤醒及识别不重点说明,重点记录怎么推送问题。
当语音识别完成后,先设置Web客户,设置块如下:
其中第一项文本内容是
https://aip.baidubce.com/rpc/2.0/unit/service/chat?
我选的是沙盒环境。记得”?“不能少。
然后是Body文件:
其中,service_id 对应机器人ID
SYS-REMEMBERD-SKILLS 对应的是技能ID。因为一个机器人是有多个技能的,虽然 我们这次只用了其中一个。
其它的按例填写就好了。
完整的技术方案传送门:UNIT机器人对话API文档
6 返回值处理
web返回的值也是一个JSON文档。超级长。我原来想一层一层地取键名和值。但太麻烦了,就当文字检索处理了。
这里是返回值的样例
我们只要取文本中"(say ” 以及 “)(type"的内容就好了。取文本的代码块如下:
7 测试
下图是测试结果,现在可以调用百度的UNIT了。
好了,UNIT调用通过了。它的意义在于,以后用App inventor也能轻松地调用百度开放的各类接口,也包括自己订制的机器人。
以上是Appinventor 的web 调用百度UNIT的过程,用谢谢阅读。