【FAQ&QA】疑难问题解答10.12(持续更新) 置顶
DuerOS-河徒 发布于2018-09-18 17:20 浏览:598 回复:9
2
收藏

Hi,Developer

本帖持续更新各类疑难问题的解答,欢迎大家踊跃查看~

如果本帖解决了你的困惑记得评论或点赞哦!

            

悄悄话本贴配合ctrl+F一起食用口感更佳

 

1,智能家居技能开发中Oauth认证Error Message列表和解决方法

msg

描述和说明

must have type or botName

缺少参数,type和botName至少要有一个,可能是回调地址拼接错误拿不到回调地址中的hash码

invalid type

没有定义的type,找不到type对应的oauth配置

invalid botName

没有定义的botName,找不到botName对应的oauth配置

save redirect_url error

保存redirect_url失败

code empty

code值为空,一般是请求回调时没有传code值

access fetch error

获取access_token失败,一般是请求oauth服务的token地址失败

save error

保存access_token失败,一般是access_token过长,限制长度512字节

HTTP ERROR 500

dueros的oauth服务会重定向到技能在平台上配置的授权地址,可能是在平台上填写的授权地址有误

 

2,在百度CFC函数里面,怎么进行http请求呢?

请参阅下面这个查询机票信息的nodejs代码。 

https://pan.baidu.com/s/1zQFr73_HvlcIabRoxkCmBg

 

3,申请上线时出现错误提示:请检查部署地址是否支持Https和head请求

此错误是由于开发者的技能服务器没有对DuerOS的技能探活动请求做出相应导致的。技能探活是指DuerOS通过HTTPS HEAD方式向技能发送请求,对技能进行健康检查。如果在响应时间内,DuerOS成功接收到技能返回的信息,并且返回码与HTTPS正常返回码匹配,则判断健康检查成功。如果在响应时间内DuerOS没有收到技能的返回信息,或者收到的返回信息的返回码与HTTPS正常返回码不匹配,则判断健康检查失败。以Java Servlet为例,开发者需要实现doHead方法并返回正常返回码。

说明:HTTPS正常返回码是指20开头的返回码,如返回码200,204等。

https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-deploy/health-check_markdown

 

4, 为什么我在CFC中从模板创建函数的时候显示“没有数据”?

请确认是在华北 – 北京 区域中进行操作。

 

5,如何在CFC的node.js中引用MySql?

目前MySql没有包含在模板中。开发者需要在CFC控制台下载完整ZIP程序包到本地,通过“npm install mysql --save”命令安装mysql库,然后再将程序包打包上传到CFC。

我们建议开发者使用bot-sdk在本地进行测试,具体内容请参阅 链接

后续我们会提供完整的开发测试流程文档,技能开发平台也会推出全新的API以方便开发者进行开发。敬请期待~

 

6,如何将UNIT的BOT发布到技能开放平台?

请参阅文档:https://ai.baidu.com/docs#/UNIT-v2-res-API/top

 

7,智能家居技能申请上线,设备列表一定要填写有效的吗?

是的。后续如需修改,请更新信息重新提交认证。

 

8,我们的技能发布之前,怎么部署到小度音箱上测试呢?

DuerOS技能开放平台提供真机测试功能,开发者在技能的控制台选择“真机测试”即可。

 

9,为什么上传图片的比例和模拟测试屏幕真正出现的比例不一致

模板中图片的显示大小是可以进行设置的。请参阅bot-sdk中相关内容(链接)。

 

10,开发者账号还没通过审核,就不能接入SDK吗?

开发者审核没有通过不影响技能的创建和调试。在技能提交上线的时候需要通过开发者审核。

 

11,使用bot-sdk里怎么设置可以在进入技能后不退出?

为确保技能不退出,需要将技能Response中的shouldEndSession设置为false。

PHP SDK示例:$this->waitAnswer();

Node.jsSDK示例:this.waitAnswer();

Python SDK示例:self.wait_answer()

 

12,技能开发者能拿到用户的原始语音吗?

不能。

 

13,技能可以主动推送信息到音箱端吗?

目前还不能。这个功能还在开发中,敬请期待。

 

14,如何引用意图确认呢?

使用bot-sdk开发技能是,实现意图确认有两种方式。需要注意的是下面两种方式不能够同时使用。
1)在意图配置页面勾选意图确认,并输入确认话术。然后在代码中使用setDelegate()方法。Node.js示例如下:

            if (!this.request.isDialogStateCompleted()) {

                this.nlu.setDelegate();

                return;

            }

2)在意图配置页面不勾选意图确认,在代码中实现意图确认。Node.js示例如下:

            let intentConfirmStatus = this.nlu.getIntentConfirmationStatus();

            if (intentConfirmStatus != 'CONFIRMED') {

                this.nlu.setConfirmIntent();

                return {

                    outputSpeech: '相关话术'

                };

            }

 

15,目前支持的SSML标签有哪些?

度秘支持的SSML标签参照 https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-custom/ssml_markdown

请注意:audio标签目前仅支持16K采样,16bit,单声道,44字节头的wav文件格式。background标签目前仅支持16K采样、16bit、单声道、44字节头的wav格式。audio标签和background标签目前仅支持百度云BOS的音频地址。

 

16,标识名前缀是ai.dueros的意图无法正常使用?

是的,请开发者不要创建以ai.dueros为前缀的意图。

补充说明ai.dueros是系统意图命名空间,自定义意图不能使用该命令空间。 

 

系统意图命令规则

系统意图有统一的命名规则:ai.dueros+.+domain+.+action_intent,其中

  • ai.dueros表示系统意图命名空间,自定义意图不能使用该命名空间。
  • domain表示意图所属的领域,通用意图的领域为common。
  • action_intent表示意图名称,其中action表示用户意图,intent是后缀。

如取消意图的命名是“ai.dueros.common.cancel_intent”,系统意图的名称是固定不变的。

 

17,CFC函数如何本地测试呢?

开发者可以使用bot-sdk完全在本地对技能进行测试,以node.js为例:
1,安装bot-sdk并建立和运行一个技能
具体过程请参阅: 跳转链接
★请注意,需要在Bot.js代码最后一行加入module.exports = Bot;
更多sample请参阅:跳转链接


2,安装postman或其他类似工具


3,运行postman,向本地地址 http://127.0.0.1:8016 发送POST请求进行测试

开发者也可以直接使用CFC进行测试。详情请参阅: 跳转链接

 

LaunchRequest示例:

{
"version": "v2.0",
"session": {
"new": true,
"sessionId": "42d3ee05-b243-4b71-bb17-a752c0f0cd92"
},
"context": {
"System": {
"user": {
"userId": "136003277",
"userInfo": {
"account": []
}
},
"application": {
"applicationId": "ccd1758b-99ed-1715-88d7-beb02a95d6fe"
},
"device": {
"deviceId": "ea5f61467aa0981250315bdc22a1216d",
"supportedInterfaces": {
"VoiceInput": [],
"VoiceOutput": [],
"AudioPlayer": [],
"Display": []
}
},
"apiAccessToken": "Sy/m20zTFjtd3wZVnuPjMI9Xop34tV4x4vrIBeeogKYiBvOs3LA1shUy/16LLVZahYJqKZrXFAXRcXlCHOQV9stp4XJ32RsepJyf/jAms4uZw96qkWo7s8JNRLocNEzkxPIG32Q4JRYZUTbhBrKuYtNmIj8OA1XZyXJ16Stow4cA7VAeclOK8IWqVTHkUSFORzELYTHvZsAtHEhb7uvBTzI0s3z9OE1DOL84UcZiJXfp0N8sEjRIWw5ypOwxodKuvnHtce/52ollg99WySV2MealypNYvX3/FcmcQO0qvEbbR5DbkCf6LMh7HEGmEm2G4CYikPlfPkKPjH3yQPRsTOEg531dXTGM05/3uPgiYFIJTS2TrHYXHlIvtsMkPxocgSz5BLMg47yMTL9IOuiXwA==",
"apiEndPoint": "https://xiaodu.baidu.com"
},
"Screen": {
"token": "",
"card": {
"title": "南京天气",
"content": "欢迎使用南京天气",
"image": "",
"type": "standard"
}
}
},
"request": {
"type": "LaunchRequest",
"requestId": "585e6b49d1cc43c4b6805c4ef82f455a_0#1_0",
"timestamp": "1537155915",
"dialogRequestId": "8a09ff0d-0a8b-4f66-8315-80bc394cdaac"
}
}
IntentRequest示例:
{
"version": "v2.0",
"session": {
"new": false,
"sessionId": "55acef3a-9b2e-45d7-9f07-e1d0127fc1c6",
"attributes": []
},
"context": {
"System": {
"user": {
"userId": "136003277",
"userInfo": {
"account": []
}
},
"application": {
"applicationId": "3324c9a0-0d4e-c37a-9b0d-368c7f527267"
},
"device": {
"deviceId": "2f8fb79987643a621070ceadbabde0a2",
"supportedInterfaces": {
"VoiceInput": [],
"VoiceOutput": [],
"AudioPlayer": [],
"Display": []
}
},
"apiAccessToken": "GfDnpb/lrPcpKkcIfwtKQyNz4fEQvZlY9JDx3ijbbrX/HanStGBtbHGLFTj7r2EEYEegk2tFayLFoGqu1dAighVVHp3gHtzzyU0SWGrS3txcQfMM9vSxaG36eKgVK0FQxPIG32Q4JRYZUTbhBrKuYtNmIj8OA1XZyXJ16Stow4e0/xzL79ZacUDhAiKsNeGQxCfgGOi6A2Ml0Q23yY3gGPvOJ6PPVfJtmIYauvhlWWHSTNGuEk3dPV8gmviiBye8vnHtce/52ollg99WySV2MealypNYvX3/FcmcQO0qvEabBSMgUBIVQDf7+xFvp1GO4CYikPlfPkKPjH3yQPRsTOEg531dXTGM05/3uPgiYFIJTS2TrHYXHlIvtsMkPxocgSz5BLMg47yMTL9IOuiXwA==",
"apiEndPoint": "https://xiaodu.baidu.com"
},
"Screen": {
"token": "f3b1bba8-534e-4551-9f01-aac409972beb",
"template": {
"textContent": {
"position": "BOTTOM-LEFT",
"text": {
"type": "PlainText",
"text": "wangchao"
}
},
"type": "BodyTemplate1",
"token": "f3b1bba8-534e-4551-9f01-aac409972beb"
}
}
},
"request": {
"query": {
"type": "TEXT",
"original": "我叫吃包子"
},
"dialogState": "COMPLETED",
"intents": [
{
"name": "getName",
"confirmationStatus": "NONE",
"slots": {
"name": {
"name": "name",
"value": "吃包子",
"values": [
"吃包子"
],
"confirmationStatus": "NONE"
}
}
}
],
"type": "IntentRequest",
"requestId": "be9b7b2276374ac3a1dc64381b73b2de_0#1_0",
"timestamp": "1537887682",
"dialogRequestId": "75fc8868-6ae3-42a0-a357-15ad7eafb7f0"
}
}

18,可以用一个账号登录多台设备在同一时间对开发中的技能进行真机测试吗?
可以

19,被下架的自定义技能怎么样才能重新上线?
技能状态查看和相应的操作可以在技能版本管理页面进行。
详情请参阅:https://dueros.baidu.com/didp/doc/dueros-bot-platform/dbp-version/version-information_markdown

20,有屏技能开发中,如何在展示模板怎么增加可点击链接?

开发者需要给展示模板每个item设置唯一Token关联具体资源。用户点击屏幕后,DuerOS会向技能发送Display.ElementSelected事件。开发者需要处理该事件,获取Token来执行具体的操作。

详情请参阅:https://github.com/dueros/bot-sdk-node.js#displayelementselected%E4%BA%8B%E4%BB%B6

21,如何使用Python SDK开发语录类技能模板

详情请参阅:https://dueros.baidu.com/forum/topic/show/293153

22,DuerOS Bot Python SDK CFC支持技能数据统计

详情请参阅:https://dueros.baidu.com/forum/topic/show/293198

收藏
点赞
2
个赞
共9条回复 最后由DuerOS-河徒回复于2018-09-27 18:51
#2DuerOS-河徒回复于2018-09-18

占楼

0
#3DuerOS-河徒回复于2018-09-18

占楼

0
#4DuerOS-河徒回复于2018-09-18

占楼

0
#5kunkun0830回复于2018-09-19

送你一颗小心心~

0
#6kunkun0830回复于2018-09-19

CFC函数如何本地测试呢?

0
#7用一句话描述回复于2018-09-19

打包后 无法识别语音 怎么解决啊?asr stream is terminated 错误代码10000

0
#8kunkun0830回复于2018-09-20

第5个问题的答案里有个错别字:然后再程序包打包上传到CFC

0
#9DuerOS-河徒回复于2018-09-20
#8 kunkun0830回复
第5个问题的答案里有个错别字:然后再将程序包打包上传到CFC

好厉害啊!兄dei

0
#10DuerOS-河徒回复于2018-09-27
#6 kunkun0830回复
CFC函数如何本地测试呢?

你的问题已经解答了,详情看17条

0
TOP