百度自定义技能真机测试

       再有2天就过年了,终于在过年前调通了百度DuerOs自定义技能接口,可以初步实现语音交互功能.

       调试的过程非常坎坷.

  1.        开始根据文档和自己的判断,不知道在线调试的代码语音调用的事件需要自己编写.所以对于测试结果不知道怎么处理,群里问,回复说是要修改这个事件的代码.官网下载的代码粘贴过来,始终不能出现目标结果
  2.        官方群却不能给与具体的指导
  3.        因为是node.js,语言不熟悉
  4.        没有其他办法,今天在年前倒数第三天,终于2位前端熟悉js的同事帮助调整了js代码

       在线编辑代码方式的接口对接终于跑通了.充分验证了一句话,远亲不如近邻,2位js开发的同事很好,在以前的公司,很多同事是事不关己,不会伸出援手的.这是猪年一件很幸运的事情.也是我在年会感谢大家的一次回应.

        感悟是:

  1.      看似贫瘠的地方也有温暖,看似繁荣的地方也有荒芜.
  2.      多会一些知识,自信就多一些,尤其其他语言的代码,读懂,简单改写
  3.      不必再一个地方纠结时间太久,及早改变处理问题的策略,这次转变不算晚,很多意外,多种解决问题的方案.


开始调试不同的原因:


1.目前的自定义字典和百度官方文档不一样,开始以为是自定义词典配置的问题,调试不通,
后来经过学文和小乔调试node.js代码,而不是直接采用官方sdk的例子代码,测试才能跑通,注意事项参见下文红色标识。

下载的代码中没有这个分支:

if (this.request.isDialogStateCompleted())

每个分支的判断代码做了修改,目前都改成了card

2.一些坑,例如:表达式中不要使用“查个税”、“查询个税”等网络通用词汇

参考文档:


https://developer.dueros.baidu.c ... loy-sample_markdown


测试步骤:


1.创建自定义技能

选择入门模式,填写技能名称等信息


2.创建意图

其中包含了创建字典,创建表达式,创建槽位,测试意图,注意:表达式中不要使用“查个税”、“查询个税”等网络通用词汇,这个环节花费时间多,因为创建的自定义槽位和官网资料中的不一样,调试不通以为是这里的问题.后来放弃纠结这里,请同事帮忙测试.熟悉js的同事帮忙调试了代码

.
3.配置服务

选择在线调试模式,本案例采用node.js作为开发语言,注意:槽位标识不要使用location ,mothsalary,原因目前未知,换成其他测试通过。另外官网下载的源代码缺少结果返回的内容,根据说明文档做了代码修改.

“退出”指令能执行

//目前的输入表达式是写死的,音响只认识表达式中的内容,之外的不认识.后续需要写成活的.

代码:
const Bot = require('bot-sdk');
const privateKey = require("./rsaKeys.js").privateKey;

class DuerOSBot extends Bot {
    constructor(postData) {
        super(postData);

        this.addLaunchHandler(() => {
            this.waitAnswer();
            let card = new Bot.Card.TextCard('欢迎使用技能');
            return {
                card: card,
                outputSpeech: '欢迎使用技能'
            };
        });

        this.addSessionEndedHandler(() => {
            this.endSession();
            return {
                outputSpeech: '感谢您的使用'
            };
        });

        this.addIntentHandler('tax', () => {
            let loc = this.getSlot('city');
            let monthlySalary = this.getSlot('number');
            if (!monthlySalary) {
                this.nlu.ask('number');
                let card = new Bot.Card.TextCard('你工资多少呢');

                // 如果有异步操作,可以返回一个promise
                return new Promise(function (resolve, reject) {
                    resolve({
                        card: card,
                        outputSpeech: '你工资多少呢'
                    });
                });
            }

            if (!loc) {
                this.nlu.ask('city');
                let card = new Bot.Card.TextCard('你在哪呢');
                return {
                    card: card,
                    outputSpeech: '你在哪呢'
                };

            }
            if (this.request.isDialogStateCompleted()) {
                let card = new Bot.Card.TextCard('你需要缴纳税款167.40元,缴纳社保及公积金1776元,税后工资是6056.60元');
                return {
                    card: card,
                    outputSpeech: '<speak>你需要缴纳税款<say-as type="number">167.40</say-as>元,缴纳社保及公积金<say-as type="number">1776</say-as>元,税后工资是<say-as type="number">6056.60</say-as>元</speak>'
                };
            }

        });

    }
}

exports.handler = function(event, context, callback) {
    try {
        let b = new DuerOSBot(event);
        // 0: debug  1: online
        b.botMonitor.setEnvironmentInfo(privateKey, 0);
        b.run().then(function(result) {
            callback(null, result);
        }).catch(callback);
    } catch (e) {
        callback(e);
    }
}


4.模拟测试

 


5真机测试

注意:数字的语音输入如果是0,需要读“零”,例如:6000,应该读:“六零零零”,“退出”指令发出后,无语音回复

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值