DuerOS与UNIT的api资源连通
卡农LLLL 发布于2017-11 浏览:34261 回复:26
7
收藏

 

由于UNIT没有一个好的信源输出,DuerOS的信源很丰富.所以一直想使用DuerOS的信源,用UNIT的语义解析.

现在UNIT提供了资源api的功能.可以完美实现从DuerOS直接调用UNIT的解析.现在记录一下接入的步骤.

资源API的详细文档参考 http://ai.baidu.com/docs#/UNIT-res-API/top 

1.肯定是配置好UNIT.具体的可以参考goJhou大神写的帖子.需要注意的是.

要使用资源api.在单元中.必须选择执行函数.

2.训练好以后.选择发布到DuerOS.

发布的时候需要填写资源API的URL.

这个URL对应的是我们服务端的逻辑代码.这个后面点来说.

3.跳转到DuerOS平台.

可以看到是UNIT类型的技能,不用配置其他东西.这时候在平台的工作就算完成了.然后看看我们服务端的代码

 

服务端我是用C#写的.

其实很方便.DuerOS在识别语音以后.如果是符合我们设置的函数规则.就会回调API资源设置的URL.

在这个URL里面.我们来处理接收到的JSON

        [HttpPost]
        [ActionName("callback")]

        public ActionResult CallBack()
        {
            byte[] byts = new byte[Request.InputStream.Length];
            Request.InputStream.Read(byts, 0, byts.Length);
            string req = System.Text.Encoding.UTF8.GetString(byts);
            req = Server.UrlDecode(req);

            var response = new UNITRespons();
            response.error_code = 0;
            response.error_msg = "";
            response.result = new UNITResponsResult() { type = "text" };
            response.result.content = "这次很成功的调用";

            return Json(response);
        }

实体类是

        public class UNITRespons
        {
            public int error_code { get; set; }
            public string error_msg { get; set; }
            public UNITResponsResult result { get; set; }

        }
        public class UNITResponsResult
        {
            public string type { get; set; }
            public string content { get; set; }
        }

是不是很简单..不要实体类的话.动态解析也就几句代码搞定.当然.具体的控制转发等.需要自己在代码的req里面来写了.

然后我们去DuerOS的模拟测试去试试.

OK.搞定.

这样我们就可以完美的在DuerOS里面调用UNIT的训练技能了.UNIT的训练真的很智能.就是时间有点.^-^

收藏
点赞
7
个赞
共26条回复 最后由zhiaizwt回复于2022-10
#27zhiaizwt回复于2022-10

aa

0
#26133******31回复于2022-09

我想请问下,目前现在的UNIT版本好像没有这个功能了,那么DuerOS 还能与UNIT进行资源联通吗? 如果不能的话,楼主可有好的实现方案吗

0
#25平原asd95回复于2018-05

请问楼主这里模拟测试的时候,已经发布到成功dueros了吗?我的资源API地址已经填好,服务端也写好了,只是还没发布,在等开发者认证。现在模拟测试时可以成功进入这个场景,但进入后再输入其他指令就回复“系统暂时无法为您服务”,并没有向服务端发送post请求似乎,请问为什么呢,是因为还没发布吗?

下面是我测试的python服务端代码。

0
#24卡农LLLL回复于2018-02
#22 mrss梦梦回复
我想请问一下,选择执行函数后,对这个函数名有要求吗?是自己随便取的吗?文档里执行向函数介绍的太少,新手刚刚接触,不太懂,望指点。
展开

是自己随便取的名字.到时候会发到你的服务端

0
#23mrss梦梦回复于2018-02

上面说的好像没表达清楚,我是想问,当规则满足时,会触发执行函数,那这个执行函数与服务器端的代码有什么关联吗?还是要单独写这个触发函数

0
#22mrss梦梦回复于2018-02

我想请问一下,选择执行函数后,对这个函数名有要求吗?是自己随便取的吗?文档里执行向函数介绍的太少,新手刚刚接触,不太懂,望指点。

0
#21卡农LLLL回复于2017-12

现在有个尴尬的事了...unit处理的request里面没有用户鉴权.导致没法确定是哪个用户发起的请求.

dueros那边又没法接收unit的解析json...导致我没法控制到某一个具体的设备上.

0
#20卡农LLLL回复于2017-12
#19 荒墨丶迷失回复
666手机APP来搞呀

对啊。手机APP搞。现在只想拿Dueros的信源。和UNIT的训练。

0
#19荒墨丶迷失回复于2017-12
#16 卡农LLLL回复
我是拿手机搞的....

666手机APP来搞呀

1
#18卡农LLLL回复于2017-12
#17 goJhou回复
= =你6666

搞不来硬件啊.没办法..我其实有个标准版的板子...

0
#17goJhou回复于2017-12
#16 卡农LLLL回复
我是拿手机搞的....

= =你6666

0
#16卡农LLLL回复于2017-12
#14 荒墨丶迷失回复
我才刚拿到板子 准备唤醒小度 hhh

我是拿手机搞的....

0
#15goJhou回复于2017-12
#14 荒墨丶迷失回复
我才刚拿到板子 准备唤醒小度 hhh

可以啊 有板子了!

0
#14荒墨丶迷失回复于2017-12
#13 卡农LLLL回复
是通过小度小度来打开的.没法自己搞.. 自己的APP其实就不用说打开了.
展开

我才刚拿到板子 准备唤醒小度 hhh

1
#13卡农LLLL回复于2017-12
#12 荒墨丶迷失回复
默认回复 这个不能自己先来个语音合成的播放嘛  嘿嘿~

是通过小度小度来打开的.没法自己搞..

自己的APP其实就不用说打开了.

0
#12荒墨丶迷失回复于2017-12
#10 见龙回复
技能平台有模拟测试,打开XXX现在默认回复的是“欢迎使用”,希望这个可以自定义。
展开

默认回复 这个不能自己先来个语音合成的播放嘛  嘿嘿~

1
#11卡农LLLL回复于2017-12
#10 见龙回复
技能平台有模拟测试,打开XXX现在默认回复的是“欢迎使用”,希望这个可以自定义。
展开

是啊.好像还真没有.这个能自定义会更棒的.

0
#10见龙回复于2017-12
#9 卡农LLLL回复
现在没发布到技能商店.还没有打开"XXX"的例子吧.听说要等渡鸦一起发布
展开

技能平台有模拟测试,打开XXX现在默认回复的是“欢迎使用”,希望这个可以自定义。

0
#9卡农LLLL回复于2017-12
#8 见龙回复
打开XX程序后面的回复能否在unit里自定义

现在没发布到技能商店.还没有打开"XXX"的例子吧.听说要等渡鸦一起发布

0
#8见龙回复于2017-12

打开XX程序后面的回复能否在unit里自定义

0
TOP
切换版块