DuerOS与UNIT的api资源连通
卡农LLLL 发布于2017-11 浏览:34318 回复: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
#7DMLongger回复于2017-11

赞,厉害~

0
#6Micro五名小卒回复于2017-11

赞,收藏先

0
#5卡农LLLL回复于2017-11

好帖,谢谢以上大佬们的赞扬.

0
#4荒墨丶迷失回复于2017-11

好帖,赞一下~ 以上都是大佬

1
#3goJhou回复于2017-11

好贴,给你加精

0
#2用户已被禁言回复于2017-11

好贴

0
TOP
切换版块