【StarLight|开发日记】技能开发之“智能设备控制”
StarLight 发布于2017-11-27 01:30 浏览:4600 回复:30
3
收藏

【StarLight|开发日记】技能开发之“智能设备控制”

 

附上代码地址使用的springboot

git clone https://github.com/microxdd/dueros.git

当然使用官方php完全没问题

文章篇幅过长,难免出现错误,也请谅解

创建技能

image001.jpg

记录下创建技能的id,后面要用到

image002.png

创建词典(很重要)

主要是3个

设备名称,位置,动作

image003.png

image004.jpg

image005.jpg

image006.jpg

创建意图(意图说明最好从简单到复杂)

 

image007.jpg

image008.png

image009.jpg

 

常用表达最好是从简单再到复杂

最好是每添加一个在右边测试下。

因为有时候添加某些常用表达会出现”意图无法识别”,已知最有可能的是关键字打开导致的,那么正确的做法是再创建一个新的意图测试一下,如果测试通过,那么删掉之前的意图,使用新创建的意图。在这里我遇到过坑,各种试不行最后创建新的意图解决。

 

 

默认情况下会自动识别槽值,当然,你可以选择某个关键词,会自动弹出该词应该对应哪个词典,选中需要的词典即可。

image010.jpg

在添加完常用表达后会,槽位列表会自动出现所有的关键槽位

image011.jpg

其中必填就是说这个槽必须要有值才可以。不过当该槽位没有值得时候,可以添加追加语句,通过多轮对话来实现。

 

比如打开灯,但是并不知道位置,小度会再次问是哪里的设备?这时候回答卧室就行。(回答的文字必须要在词典里面有才可以)。

接下来 意图确认就不需要了。加上的话当槽位都匹配的时候会向用户再次确认。

如果在右边的技能测试中都没有问题的话,那么接下来直接保存即可

image012.jpg

配置服务

配置服务需要有自己的web服务器,可以使用百度的,可以使用 诸如ngrok等穿透软件来实现web服务,不过延迟一定要低。

image013.jpg

 

至此技能基本已经创建完成。接下来是服务端的搭建

项目是基于maven构建的,可以直接使用idea或者eclipse导入

git clone https://github.com/microxdd/dueros.git

 

需要修改xin.yysf.app.DuerOsBotDemoinit函数里面的意图描述和处理函数

并添加到服务中

public class DuerOsBotDemo {
    @Autowired
    private DuerOsService duerOsService;
 
    @PostConstruct
    public void init(){
        /**
         * 定义槽
         */
        List slots=new ArrayList<>();
        slots.add(new SlotDesc("device_name",true,"什么设备?"));
        slots.add(new SlotDesc("switch_control",true,"打开还是关闭"));
        slots.add(new SlotDesc("home_loc",true,"哪里的?"));
        IntentDesc desc=new IntentDesc("switch_control",slots);
 
        /**
         * 定义处理类
         */
        SwitchControlIntentHandler handler=new SwitchControlIntentHandler();
 
        duerOsService.addIntentHandler(desc,handler);
    }
 
 
 
    public static void main(String[] args) {
        SpringApplication.run(DuerOsBotDemo.class);
    }
}

 

直接运行xin.yysf.app.DuerOsBotDemo

 

打开http://localhost:8090/pub/bd/service看到说明成功运行

image014.jpg

 

打开模拟测试

image015.jpg

完工

 

关于如何打通设备和技能,可能需要在Python或者java sdk 上修改 dueros 请求消息

不过百度应该会开放的,如果想提前测试的话可以试试的

image016.jpg

框中的id即为技能的id。

不过不知是百度的问题还是百度的问题,一般情况下可以直接测试,但不知为什么有时候会无法调用。

解决办法使用模拟测试时候用到的access_token和deviceId是没有问题的

image017.jpg


收藏
点赞
3
个赞
共30条回复 最后由小贝电子回复于2018-06-12 20:55
#2StarLight回复于2017-11-27
0
#3小李飞刀刀回复于2017-11-27

膜拜大神。

0
#4NeverLand¥回复于2017-11-27

写得蛮好的,DBP官方的Java版的bot-SDK会在12月底发布,欢迎有兴趣的开发者一起参与进来呦

0
#5上校回复于2017-11-27

0
#6卡农回复于2017-11-27

我在UNIT也写了一个C#实现的http://ai.baidu.com/forum/topic/show/496560

0
#7happycool333回复于2017-11-28

不错。

有几个问题请教:

  1. 楼主的web服务是部署到本地了吗?

  2. 如果部署到云服务器,自己家的usb小灯如何和云服务器通信呢?

  3. 我查看演示视频没有声音,是可以直接和python sdk的小度对话来控制小灯开关了吗?

谢谢

0
#8StarLight回复于2017-11-28
#7 happycool333回复
不错。 有几个问题请教: 楼主的web服务是部署到本地了吗? 如果部署到云服务器,自己家的usb小灯如何和云服务器通信呢? 我查看演示视频没有声音,是可以直接和python sdk的小度对话来控制小灯开关了吗? 谢谢
展开

你好

  1. 演示当时使用了ngrok工具,是在本地进行测试的,方便开发

  2. 演示用的模块使用了esp8266 wifi模块,通讯使用了简洁的mqtt协议,后端使用java的brokermoquette ,所以很容易集成

  3. 使用的sdk也是全java的,源码也在git地址上https://github.com/microxdd/dueros.git


0
#9happycool333回复于2017-11-28
#8 StarLight回复
你好 演示当时使用了ngrok工具,是在本地进行测试的,方便开发 演示用的模块使用了esp8266 wifi模块,通讯使用了简洁的mqtt协议,后端使用java的brokermoquette ,所以很容易集成 使用的sdk也是全java的,源码也在git地址上https://github.com/microxdd/dueros.git
展开

谢谢。 我也打算使用ngrok

要不租个云服务器还有成本。

0
#10NeverLand¥回复于2017-11-29

这个写得也挺好的,如果后面符合bot-sdk的预期的话,我们会在官方推荐使用C#版的SDK的~

0
#11DuerOS-河童回复于2017-12-13

顶一下~

0
#12xiaoji回复于2017-12-14

楼主您好,我在技能平台自定义的一个技能要怎么在安卓设备上测试呢

0
#13xiaoji回复于2017-12-14

楼主您好,我下载了您的这个sdk,可是在Android studio无法使用,我要怎么做呢

0
#14StarLight回复于2017-12-14
#13 xiaoji回复
楼主您好,我下载了您的这个sdk,可是在Android studio无法使用,我要怎么做呢
展开

xiaoji 发表于 2017.12.14 10:18:01

楼主您好,我下载了您的这个sdk,可是在Android studio无法使用,我要怎么做呢

这个因为百度目前没有开放技能和设备的关联的通道,演示使用了  技能模拟测试时使用的 token 和deviceId

0
#15xiaoji回复于2017-12-14
#14 StarLight回复
xiaoji 发表于 2017.12.14 10:18:01 楼主您好,我下载了您的这个sdk,可是在Android studio无法使用,我要怎么做呢 这个因为百度目前没有开放技能和设备的关联的通道,演示使用了  技能模拟测试时使用的 token 和deviceId
展开

您好,我已经申请发布了一个自定义技能,请问大概要多久才可以通过审核,审核之后我要怎么在设备上测试呢

0
#16xiaoji回复于2017-12-15

没有发布上线之前在我自己账户下的技能别人可以使用吗?

那如果是发布之后呢,别人可以用吗?

0
#17StarLight回复于2017-12-15
#16 xiaoji回复
没有发布上线之前在我自己账户下的技能别人可以使用吗? 那如果是发布之后呢,别人可以用吗?
展开

从官方提供的功能目前没有发布别人是用不了的  只有发布之后  其他人也可以使用了

0
#18未来~创意者回复于2017-12-18

请问你这个设备控制端,自己做的么?我一直搞不懂设备端怎么弄.大神可以大概讲解一下么?

0
#19StarLight回复于2017-12-18
#18 未来~创意者回复
请问你这个设备控制端,自己做的么?我一直搞不懂设备端怎么弄.大神可以大概讲解一下么?
展开

设备端需要在每个请求加上一个特别的字段,在结尾处有详细的说明的

0
#20未来~创意者回复于2017-12-19

请问你的那个项目导入不了eclipse,提示找不到该项目,怎么破,大神

0
#21未来~创意者回复于2017-12-19
#19 StarLight回复
设备端需要在每个请求加上一个特别的字段,在结尾处有详细的说明的

嗯好的

0
TOP