6.3 逻辑处理服务设计
6.3 逻辑处理服务设计
在硬件终端搭建完成后,需要设计一组逻辑对话,适用于语音控制场景。例如:“打开卧室的台灯”,“关闭厨房电源”,“设置空调温度为24摄氏度”等。以及部署控制指令转发的服务器地址。在dueros官网,这些逻辑处理的对话场景统称为技能,所以只需要设计好逻辑对话技能,然后在服务器上部署,就可以实现语音控制。
首先需要在dueros官网,技能平台创建自定义技能,并编辑简单的对话模型,用于确定识别关键字位置。接着将常见控制关键字录入数据字典,dueros在分析对话内容时,通过关键字来确定是否是有效指令。在完成对话模型,字典设计后,可以通过网页端进行简单的语句理解测试,如果语句识别准确无误,即可以进行具体的逻辑设计了。
逻辑设计的内容将来会部署在服务器上,dueros给开发者提供了两种部署方式,一种是百度云cfc函数计算,另一种是“web server”部署,也就是开发者在第三方平台上的云服务器。针对这两种方式提供了两中对应的开发模板。支持的开发语言为java、php、nodejs,逻辑设计我将采用nodejs来完成,因为cfc函数计算默认开发语言为nodejs,虽然支持Python、java但是兼容不是很友好。
选用cfc函数计算,需要登陆百度云,创建cfc函数计算实例,选用模板创建会生成dueros匹配的代码模板,只需要改写入口参数,就可以在此基础上进行逻辑的扩展,且cfc函数计算代码可以直接在线编辑修改,非常方便。但是cfc函数计算运行环境是百度云提供的,只有一些必备的、常见的插件,我们没有办法去修改、添加或自定义自己的插件,所以cfc函数计算可以说是比较局限的,不太适合复杂,庞大的逻辑处理。因此,我将采用第二种方式,在自己云服务器上搭建一个web server,然后编写逻辑代码实现部署。
搭建“web server”首先需要搭建nodejs运行环境,具体步骤如下:
- 1.首先使用ssh方式登陆到云服务器上,在home目录下创建个node文件夹。
cd /home
mkdir node - 2.下载git工具, centos默认工具是“yum”,ubuntu替换为“apt-get”即可
sudo yum install git - 3.下载安装NVM版本管理工具
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.1/install.sh | bash - 4.重新加载“.bashrc”文件
source ~/.bashrc - 查询全部可以安装的nodejs版本号
nvm ls-remote
- 查询全部可以安装的nodejs版本号
- 6.安装指定版本(dueros要求nodejs版本必须大于v6.10)
nvm install v8.1.2 - 7.查看当前使用版本,验证安装是否成功
nvm current - 8.现在需要在npm上下载“bot-sdk”包,以及依赖的软件包
cd node
npm install bot-sdk –save
npm install express –save - 9.“web server”的方式,其实是搭建一个小型的http服务器,将逻辑对话按要求编写成文件,dueros服务器通过http请求访问逻辑服务器,逻辑服务器返回对应的对话,所以按照官网要求,需要用nodejs语言搭建个http服务器。
新建一个名为index.js的文件:
vi index.js
编写http服务器,代码如下:
1 | const express = require('express'); |
此段代码,启用http服务,监听8016端口,在官网技能服务配置时也应以“ip+端口”号方式来配置逻辑对话服务器地址,如:“http://154.36.24.8:8016”接下来就是设计编写逻辑对话的代码了,官方规定使用Bot.js来命名逻辑代码。下面注释了逻辑代码基础结构,自定义的逻辑对话内容的开发在此基础上迭代就可以,与设备云的连接控制,在逻辑处理的过程中以http请求的方式发送给设备云,即可对物联网只能家居硬件进行控制。
1 | const BaseBot = require('bot-sdk'); |
到此,语音交互设计就基本完成了,在完成上述工作后,可以在dueros技能平台测试调试你所编写的对话技能,在树莓派端使用或者调试的技能需要通过语音指令的方式,切换到调试技能模式,然后打开“xxx”技能,即可完成调试测试,但对于控制类的技能,官方是不允许通过自定义的技能方式申请上线的,也就是说通过自定义技能创建的具有智能家居功能的自定义技能,只可以在测试模式下使用,且只能被你个人所用。虽然控制功能现在基本已经实现,但这并不满足我要的结果。