会话机器人对接
说明
会话机器人支持个性化的开场欢迎语、热点问题推荐、会话中控、NLU分析, 具体如下:
特别说明,会话相关v2接口相关协议V6.4开已经不维护,建议对接v3协议
-
会话开始接口(可选):
- /core/v3/start
/api/v2/core/start
-
会话中控接口:
- /core/v3/query
/api/v2/core/query
- NLU分析 /api/v2/nlu/recognize
说明:
-
在数据传输上,需保证入参sessionId(见接口说明)统一:
- 若业务侧调用接口时不传sessionId,会话机器人会自动生成一个sessionId,业务侧需捕获第1个接口返回的sessionId,并作为后续接口调用的入参。
- 若业务侧调用接口传入自定义的sessionId,则保证调用会话开始接口和会话中控接口使用同一个sessionId即可。
- 整个session周期内请求的channel必须要一致,否则会导致统计数据有误。
请求Header说明:
key | value | 说明 |
---|---|---|
Authorization | token_info | NGD access_token: access_token是bot的属性,通过bot管理列表获取, 注意:字符“NGD”与access_token字符串中间有一空格; NGD Developer token: Developer token是agent的属性, 通过agent列表获取, 注意:字符“NGD”与Developer token字符串中间有一空格 |
Content-Type | application/json;charset=UTF-8 | post请求必须 |
上述方法使用的token对应关系如下表所示:
方法名 | token配置 |
---|---|
/core/v3/start | bot_access_token |
/api/v2/core/start | bot_access_token |
/api/v2/core/query | bot_access_token |
/core/v3/query | bot_access_token |
/api/v2/nlu/recognize | Developer token |
会话开始接口
接口说明
会话开始接口,用于获取欢迎语,热点推荐问题,支持只返回欢迎语, 只返回推荐问题或两者都返回。
接口地址
https://api-ngd.baidu.com/api/v2/core/start
https://api-ngd.baidu.com/core/v3/start
请求方法
GET/POST
请求参数说明(GET)
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
type | String | 否 | 请求类别,不传或空返回欢迎语和推荐问,welcome:只返回欢迎语;recommend:只返回推荐问 |
sessionId | String | 否 | 会话id。 可不传值,由会话机器人生成; 若传值,使用业务方传入的sessionId,用户传入的sessionId必须保证唯一,如UUID. |
channel | String | 否 | 渠道名称,保持整个会话周期一致 |
ext | Map | 否 | 调用方回传参数,格式为json,数据不做处理用来后期分析使用; 示例:调用会话时传入{ "uid",123 } 会话日志中ext将会存储该信息;用于后期分析 |
请求体(POST)
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
type | String | 否 | 请求类别,不传或空返回欢迎语和推荐问,welcome:只返回欢迎语;recommend:只返回推荐问 |
sessionId | String | 否 | 会话id。 可不传值,由会话机器人生成; 若传值,使用业务方传入的sessionId,用户传入的sessionId必须保证唯一,如UUID. |
channel | String | 否 | 渠道名称,保持整个会话周期一致 |
ext | Map | 否 | 调用方回传参数,格式为json,数据不做处理用来后期分析使用; 示例:调用会话时传入{ "uid",123 } 会话日志中ext将会存储该信息;用于后期分析 |
context | Map | 否 | 上下文信息 |
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
code | int | 错误码 |
msg | String | 错误信息 |
data | Map<String, Object> | 返回欢迎语和推荐问信息 |
data
参数名 | 类型 | 说明 |
---|---|---|
qaRecommend | List<String> | 推荐问题列表 |
qaRecommendTitle | String | 推荐问题列表引导话术 |
sessionId | String | 会话id |
String | 欢迎语(旧字段,6.5开始废弃) | |
queryId | String | 请求id |
queryTime | String | 请求时间 |
answerTime | String | 响应时间 |
source | String | 来源类型,默认system |
richWelcome | Map | 欢迎语富文本类型,兼容welcome字段,(内容格式与answer → answerContents格式一致) |
请求示例
1curl -X POST http://api-ngd.baidu.com/api/v2/core/start -H 'authorization: NGD 142c8d88-cd69-4b1e-a4d5-443da096c3c6' \
2-d '{
3 "sessionId": "5cb6e7b8-e3da-45bb-ac07-98265ac54a01",
4 "ext":{"uid":"0000001", "username":"ngd"}
5}'
响应结果示例
1{
2 "time": 1574308601082,
3 "data": {
4 "qaRecommend": [
5 "推荐问1?",
6 "推荐问2?",
7 "推荐问3?"
8 ],
9 "welcome": "您好,很高兴为您服务!这是demo哦",
10 "sessionId": "5cb6e7b8-e3da-45bb-ac07-98265ac54a01",
11 "botName": "租车bot",
12 "botDesc": null,
13 "botVersion": null,
14 "queryId": "6cc36192-593e-498e-a0af-ae312eb88c47",
15 "queryTime": null,
16 "answerTime": null,
17 "source": "system",
18 "agentType": 1,
19 "queryTime":"2019-11-21 11:11:11",
20 "answerTime":"2019-11-21 11:11:12"
21 },
22 "code": 200,
23 "msg": "OK"
24}
会话中控接口
/core/v3/query
接口说明
-
接口返回值答案answer字段解析:
- 若answerText存在值(下述两种方式任选其一): - 直接使用answer::answerText - 解析answer::answerContents列表,列表中答案类型根据具体type进行解析
- 若answerText不存在值: - 解析clarify字段
-
外呼/呼出类型agent对接:
- 会话开始时发起一次queryText为空的core/query接口请求,接口返回开场白节点欢迎语。
- 如果上层所有话术使用TTS播放,只需关注: answerText, 若answerText为空,则解析clarify。
- 会话中控接口请求状态为400情况下,错误说明如下:
code | msg | 说明 |
---|---|---|
4000019 | 用户请求过于频繁,请稍后再试 | qps大于阈值 |
4000647 | 当前agent不存在可用的会话引擎 | 无可用会话引擎 |
4002409 | bot token错误 | 非法bot token |
4002413 | 该bot已停用,请启用后再试 | bot已停用 |
4002010 | 包含敏感词,请检查 | 敏感词 |
4002012 | 服务器处理该请求失败,请检查请求是否合法 | 请求参数异常 |
4001104 | webhook接口返回答案类型不合法 | webhook服务错误 |
4000319 | 对话树配置的跳转存在死循环 | 对话树配置错误 |
4000346 | 会话引导异常,没有可以回退的场景,请检查开场白片段弱引导配置 | 引导配置错误 |
- 私有化部署时,7010和754以及后续版本调用会话中控接口时,如需生成会话记录,需要在请求接口时增加Header信息:
ACTIVE: online
接口地址
https://api-ngd.baidu.com/core/v3/query
请求方法
POST
请求参数说明
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
nlu | Boolean | 否 | 是否返回nlu识别信息(意图,实体,情感,态度) |
debug | Boolean | 否 | 是否打开调试模式,返回调试信息 |
queryId | String | 否 | 请求id,用于出现问题时快速定位排查,不传则系统生成uuid;建议用户设置,语音场景可能因为超时,丢失answer信息,通过请求query指定queryId,方便问题排查 |
POST body参数说明
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
queryText | String | 是 | 请求文本 |
sessionId | String | 否 | 会话id。 可不传值,由会话机器人生成; 若传值,使用业务方传入的sessionId,用户传入的sessionId必须保证唯一,如UUID. |
sources | List | 否 | 对话模式: 1. task_based:多轮 2. kg:知识图谱 3. faq:问答 4. chitchat:闲聊 5. 空或无该字段为智能对话 |
channel | String | 否 | 渠道信息,整个session周期固定 |
context | Map | 否 | 上下文信息。与当前的会话session中的上下文进行合并,若存在key冲突,以传入的key为准 |
collect | Boolean | 否 | 是否收集会话数据,用于用户标注。默认为false |
vad | String | 否 | 系统指令: silent:静默 interrupt:打断 |
ext | Map | 否 | 调用方回传参数,格式为json,数据不做处理用来后期分析使用; 示例:调用会话时传入{ "uid",001 } 会话日志中ext将会存储该信息用于后期分析。 |
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
code | int | 错误码 |
msg | String | 错误信息 |
data | Map<String, Object> | 返回答案的详细信息 |
data:
参数名 | 类型 | 说明 |
---|---|---|
sessionId | String | 会话id |
queryId | String | 请求id |
source | String | 会话模式(faq,task_based,chitchat,kg,clarify(澄清),none(澄清失败、系统默认回复等),auto_fill(实体自动填充),system(bot系统事件)、botEvent(bot自定义事件)第三方引擎ID、技能ID) |
solved | Boolean | 指定会话模式是否有答案.(多轮会话中,命中顶层节点且节点条件为anything_else,solved为false) |
confidence | Double | 相似度 |
nlu | Map | 当前query的nlu识别信息 |
answer | Map | 回复答案 |
queryTime | String | 请求时间,格式:yyyy-MM-dd HH:mm:ss:SSS |
responseTime | String | 响应时间,格式:yyyy-MM-dd HH:mm:ss:SS |
context | Map | 会话上下文信息 |
associateData | Map | 随路数据收集 |
actions | List |
透传的指令,如打断(interrupted ) |
webhook | Boolean | 是否使用webhook |
topAnythingElse | Boolean | 多轮是否命中顶层anythingElse节点 |
anythingElse | Boolean | 多轮是否命中anythingElse节点 |
debug | Map | 调试信息(开启debug模式后才会有值) |
nlu:
参数名 | 类型 | 说明 |
---|---|---|
intents | List | 识别的意图列表(格式同:debug → intents) |
entities | Map | 识别的实体列表(格式同:debug → entities) |
attitude | Map | 态度详情(格式同:debug → attitude) |
sentiment | Map | 情感详情(格式同:debug → sentiment) |
action | Map | 动作详情(格式同:debug → action) |
answer:
参数名 | 类型 | 说明 |
---|---|---|
clarify | Map | 澄清答案 |
clarifyType | String | 意图澄清:INTENT_CLARIFY 问答澄清:FAQ_CLARIFY 意图问答澄清:INTENT_FAQ_CLARIFY faq高置信度澄清:FAQ_HIGH_CLARIFY 问答核心词澄清:FAQ_CORE_CLARIFY 意图模版澄清:TEMPLATE_INTENT_CLARIFY 问答模版澄清:TEMPLATE_FAQ_CLARIFY 意图问答模版澄清:TEMPLATE_INTENT_FAQ_CLARIFY KG澄清:KG_CLARIFY 实体澄清:ENTITY_CLARIFY 第三方引擎澄清:THIRD_CLARIFY 技能澄清:SKILL_CLARIFY |
answerContents | List | 答案列表,元素类型有:1: 纯文本类型,2: link类型,3: 富文本类型,4: 图片类型,6: 录音类型,7: 录音拼变量类型,8: 列表类型 |
answerText | String | 根据answerContents列表拼接的文本推荐答案) |
recommendContents | List | 推荐答案列表,元素类型:8: 列表类型 |
clarify:
参数名 | 类型 | 说明 |
---|---|---|
voice | Map | 语音回复 |
text | Map | 文字回复 |
voice:
参数名 | 类型 | 说明 |
---|---|---|
content | String | 澄清语句 |
text:
参数名 | 类型 | 说明 |
---|---|---|
title | String | 澄清标题 |
list | List | 澄清问题列表 |
answerContents:
type: 1,纯文本类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 1:纯文本 |
text | String | 回复内容 |
type: 2,link类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 2:link |
text | String | 回复内容 |
url | String | url |
type: 3,富文本类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 3:富文本 |
text | String | 富文本回复内容 |
type: 4,图片类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 4:图片 |
url | String | 图片url |
type: 6,录音类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 6:录音 |
audio | Map | 录音内容 |
audio:
参数名 | 类型 | 说明 |
---|---|---|
duration | int | 录音时长 |
name | String | 录音文件名称 |
id | String | 录音文件id |
text | String | 录音内容文本 |
url | String | 录音url |
textModify | String | 修改后的录音内容 |
type: 7,录音拼变量
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 7:录音拼变量 |
values | List | 回复内容列表,列表中元素由类型6与类型1组成,即录音类型与文本类型组成 |
type: 8,列表类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 8:列表类型 |
title | String | 回复标题 |
list | List< String> | 回复列表 |
debug:
参数名 | 类型 | 说明 |
---|---|---|
botId | String | 会话bot的id |
queryId | String | 请求id |
nlu | Map | nlu分析当前query的详细结果 |
detail | Map | debug信息详情 |
nlu:
参数名 | 类型 | 说明 |
---|---|---|
rawQuery | String | 原始query |
nluQuery | String | nlu识别的query |
nluChangedQuery | String | nlu上下文改写后的query |
nluCorrectedQuery | String | nlu纠错后的query |
intents | List | 识别的意图列表 |
clarifyIntents | List | 识别的澄清意图 |
clarifyTemplates | List | 识别的澄清模版意图 |
entities | Map | 识别的实体列表 |
clarifyEntities | Map | 识别的实体澄清列表 |
attitude | Map | 态度详情 |
sentiment | Map | 情感详情 |
action | Map | 动作详情 |
entityAutoFillVoMap | Map | 复合实体填充信息 |
sensitiveWordsList | List<SensitiveVo> | 敏感词详情 |
intents/clarifyIntents/clarifyTemplates:
参数名 | 类型 | 说明 |
---|---|---|
id | String | 意图id |
name | String | 意图标识 |
nameZh | String | 意图中文名称 |
description | String | 意图描述 |
system | String | 是否系统意图 |
source | String | 算法名称 |
alias | String | 意图别名 |
templateStr | String | 模版字符串 |
attitude:
参数名 | 类型 | 说明 |
---|---|---|
prob | String | 置信度 |
source | String | 识别模型 |
name | String | 态度标识 |
nameZh | String | 态度中文名 |
sentiment:
参数名 | 类型 | 说明 |
---|---|---|
prob | String | 置信度 |
source | String | 识别模型 |
name | String | 情感标识 |
nameZh | String | 情感中文名 |
action:
参数名 | 类型 | 说明 |
---|---|---|
prob | String | 置信度 |
source | String | 识别模型 |
name | String | 动作标识 |
nameZh | String | 动作中文名 |
SensitiveVo:
参数名 | 类型 | 说明 |
---|---|---|
sensitiveWord | String | 敏感词 |
repositoryName | String | 所属词库 |
detail:
多轮 task_based模式:
参数名 | 类型 | 说明 |
---|---|---|
dialogs | List | 触发会话树节点详情 |
confidence | Double | 置信度 |
nlu | Map | 答案对应的nlu结果(结构同 debug-->nlu) |
lastNodeId | String | 最近一次触发的会话树节点id |
dialogs:
参数名 | 类型 | 说明 |
---|---|---|
dialogNodeId | String | 会话树节点id |
dialogNodeName | String | 会话树节点名 |
processId | String | 流程片段id |
processName | String | 流程片段名 |
outputIndex | int | 执行模块下标 |
values | List | 当前会话树节点回复内容的格式配置 |
jumpBackValues | String | 外呼当前会话树节点跳回话术格式配置(字段格式和values⼀致) |
webhook | Boolean | 是否使用webhook |
action | String | 指令 |
webhookInfo | Map | webhook接口调用结果 |
tags | List | 节点标签 |
知识图谱 kg模式:
参数名 | 类型 | 说明 |
---|---|---|
nlpSessionId | String | KG_DM的会话id |
confidence | Double | 置信度 |
type | String | 答案类型。 SATISFY("satisfy", "答上来了") CLARIFY("clarify", "需要澄清") FAILURE("failure", "没答上来") |
sayText | String | 答案话术 |
kgPatternType | String | 句式类型 |
kgClassName | String | 类目名称 |
kgPropertyName | String 属性名称 | |
kgPropertyArray | String 属性名称多值 | |
kgModQueryText | String | 改写后的Query |
kgQueryPattern | String | 句式pattern |
values | List | 回复内容(格式与answer → answerContents格式一致) |
问答 faq模式:
参数名 | 类型 | 说明 |
---|---|---|
id | String | 标准问ID |
standardQuestion | String | 标准问问题 |
confidence | double | 相似度 |
extendQuestion | String | 扩展问问题 |
suggest | List< String> | 关联问题列表 |
answer | Map | 答案详情 |
answer 答案详情
参数名 | 类型 | 说明 |
---|---|---|
type | int | 答案类别: 1:纯文本 3:富文本(html tag) 4:pic url link 6:audio |
text | String | type为1或3时使用,回复内容 |
url | String | type为4时使用,图片url |
audio | Map | type为6时使用,录音回复内容,(格式与suggestionAnswers → answerValues中的录音类型格式一致) |
闲聊 chitchat模式:
参数名 | 类型 | 说明 |
---|---|---|
id | String | 标准问ID |
standardQuestion | String | 标准问问题 |
extendQuestion | String | 扩展问问题 |
confidence | double | 相似度 |
answer | Map | 答案详情 |
answer 答案详情:
参数名 | 类型 | 说明 |
---|---|---|
type | int | 答案类别 1:纯文本 |
text | String | 回复内容 |
自动填充 auto_fill模式:
参数名 | 类型 | 说明 |
---|---|---|
entityAutoFill | Map | 复合实体自动填充 |
entityAutoFill:
参数名 | 类型 | 说明 |
---|---|---|
entityAutoFillVo | Map | 复合实体自动填充 |
entityAutoFillName | String | 自动填充实体 |
fillText | String | 自动填充文本 |
entityAutoFillVo:
参数名 | 类型 | 说明 |
---|---|---|
entity | Map | 复合实体自动填充 |
entityFillType | int | 实体填充类型 |
propertyVoMap | Map | 属性详情列表 |
propertyNames | List |
属性名称列表 |
currentFillVo | Map | 当前填充话术 |
entity:
参数名 | 类型 | 说明 |
---|---|---|
entityId | String | 实体id |
entryId | String | 实体值id |
value | String | 实体值 |
original | String | 实体原始值 |
name | String | 实体名称 |
nameZh | String | 实体中文名称 |
subName | String | 实体子名称 |
offset | int | 偏移量 |
system | Boolean | 是否系统实体 |
display | String | 实体显示值 |
type | int | 实体类型 |
combineValue | String | 复合实体组合值 |
extra | Map | 扩展属性 |
currentFillVo:
参数名 | 类型 | 说明 |
---|---|---|
propertyName | String | 属性名称 |
fillText | String | 填充话术 |
澄清 clarify模式:
参数名 | 类型 | 说明 |
---|---|---|
clarifyType | String | 澄清类型 |
clarifyQuestions | Map | 澄清 |
entityClarify | Map | 实体澄清 |
keywordConfirmQuestions | List | 模版澄清 |
highConfirmQuestions | List | 高置信度澄清 |
keywordConfirmQuestions/highConfirmQuestions:
参数名 | 类型 | 说明 |
---|---|---|
sore | String | 分值 |
clickable | Map | 是否可点击 |
source | Map | 来源 |
question | List | 澄清内容 |
bot系统事件模式:
参数名 | 类型 | 说明 |
---|---|---|
name | String | 策略名称 |
index | int | 策略序号 |
count | int | 当前计数次数 |
reply | Map | 策略配置 |
reply 策略配置:
参数名 | 类型 | 说明 |
---|---|---|
count | int | 当前计数次数 |
symbol | String | 策略符号,例如:>,<等 |
isWebhook | boolean | 是否启用webhook |
action | String | 指令 |
type | int | 返回答案类型 |
text | String | 文本返回答案内容,type为1时使用 |
audio | Map | 录音返回答案内容,type为6时使用,格式同:faq-→ answer→ audio |
bot自定义事件模式:
参数名 | 类型 | 说明 |
---|---|---|
name | String | 事件名称 |
values | Map | 当前会话节点回复内容格式配置 |
webhook | Boolean | 是否使用webhook |
action | String | 指令 |
interrupted | Boolean | 打断标识 |
outputIndex | int | 执行策略序号 |
nlu | Map | nlu信息 |
技能模式:
参数名 | 类型 | 说明 |
---|---|---|
skillInfo | SkillInfo | 技能信息 |
engineInfo | Map | 技能命中的某个引擎调试信息(task_based、faq等),详见上述相关字段 |
SkillInfo:
参数名 | 类型 | 说明 |
---|---|---|
skill | boolean | 是否是技能 |
skillName | String | 技能名 |
skillId | String | 技能Id |
sourceAgentId | String | 共享agentId |
shareAgentId | String | 当前使用agentId |
originSource | String | 对应资源命中的引擎名(task_based、faq等) |
answerInterventionRules:
参数名 | 类型 | 说明 |
---|---|---|
name | String | 干预规则名称 |
type | int | 干预规则类型: 1:全部替换 2:增加前后缀 |
valueMaps | Map | 规则内容 |
valueMaps(type=1):
参数名 | 类型 | 说明 |
---|---|---|
values | Map | 全文,见上文values答案描述介绍 |
valueMaps(type=2):
参数名 | 类型 | 说明 |
---|---|---|
prefixValues | Map | 前缀,见上文values答案描述介绍 |
suffixValues | Map | 后缀,见上文values答案描述介绍 |
appendAnswers:
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复类型: 1:文本 6:语音 7:录音拼变量 (更多type详见answer:dialogs:values参数描述) |
text/audio/values | String/Map/List | 外呼类型机器人跳回话术回复内容 |
请求示例
1curl -X POST 'https://api-ngd.baidu.com/core/v3/query?debug=true&nlu=true'
2-H 'Authorization:NGD 4f7f3cb9-4d1b-42e3-b03e-19771d8e7b07'
3-H 'Content-Type: application/json'
4-d '{"queryText":"租车","sessionId":"5cb6e7b8-e3da-45bb-ac07-98265ac54a01"}'
响应结果示例
任务式会话
1{
2 "time": 1586486514896,
3 "data": {
4 "sessionId": "11c8cddd-3d0c-493e-a33f-9a02ae5f99e5",
5 "source": "task_based",
6 "solved": true,
7 "confidence": 1,
8 "nlu": {
9 "sentiment": {
10 "query": "租车",
11 "label": 0,
12 "prob": 0.97234964,
13 "source": "model",
14 "name": "neutral",
15 "nameZh": "中立"
16 },
17 "intents": [
18 {
19 "id": "e5304670-6841-40f6-ba49-11bbca32c6a8",
20 "name": "rental",
21 "description": "",
22 "agentId": null,
23 "created": null,
24 "updated": null,
25 "confidence": 1,
26 "source": "knn",
27 "threshold": 0,
28 "system": false,
29 "alias": "",
30 "nameZh": "租车",
31 "examples": null,
32 "hasActiveCopy": false,
33 "templateStr": null,
34 "createdUserName": null,
35 "createdUserId": null,
36 "lastEditUserName": null,
37 "lastEditUserId": null,
38 "version": 0,
39 "industryIntent": false
40 }
41 ],
42 "entities": {},
43 "attitude": {
44 "query": "租车",
45 "label": 0,
46 "prob": 1,
47 "source": "model",
48 "name": "unknown",
49 "nameZh": "无态度"
50 }
51 },
52 "answer": {
53 "answerText": "指令级别的兜底话术请输入车型",
54 "answerContents": [
55 {
56 "original": "指令级别的兜底话术",
57 "text": "指令级别的兜底话术",
58 "type": 1
59 },
60 {
61 "type": 1,
62 "text": "请输入车型",
63 "original": "请输入车型"
64 }
65 ]
66 },
67 "context": {
68 "sys_counter": {
69 "租车": 1,
70 "检查车型实体节点_qwpg1bhv": 1
71 },
72 "api_response_status": false,
73 "sys_webhook_eval_success": false
74 },
75 "associateData": {},
76 "actions": [
77 "aciton"
78 ],
79 "webhook": true,
80 "debug": {
81 "responseTime": "2020-04-10 10:41:54:896",
82 "nlu": {
83 "clarifyEntities": {},
84 "sentiment": {
85 "query": "租车",
86 "label": 0,
87 "prob": 0.97234964,
88 "source": "model",
89 "name": "neutral",
90 "nameZh": "中立"
91 },
92 "intents": [
93 {
94 "id": "e5304670-6841-40f6-ba49-11bbca32c6a8",
95 "name": "rental",
96 "description": "",
97 "agentId": null,
98 "created": null,
99 "updated": null,
100 "confidence": 1,
101 "source": "knn",
102 "threshold": 0,
103 "system": false,
104 "alias": "",
105 "nameZh": "租车",
106 "examples": null,
107 "hasActiveCopy": false,
108 "templateStr": null,
109 "createdUserName": null,
110 "createdUserId": null,
111 "lastEditUserName": null,
112 "lastEditUserId": null,
113 "version": 0,
114 "industryIntent": false
115 }
116 ],
117 "nluQuery": "租车",
118 "entities": {},
119 "clarifyIntents": [],
120 "clarifyTemplates": [],
121 "attitude": {
122 "query": "租车",
123 "label": 0,
124 "prob": 1,
125 "source": "model",
126 "name": "unknown",
127 "nameZh": "无态度"
128 },
129 "rawQuery": "租车"
130 },
131 "queryTime": "2020-04-10 10:41:49:860",
132 "botId": "b4762b99-d0df-4d51-bb70-38000b5b3f79",
133 "detail": {
134 "nlu": {
135 "clarifyEntities": {},
136 "sentiment": {
137 "query": "租车",
138 "label": 0,
139 "prob": 0.97234964,
140 "source": "model",
141 "name": "neutral",
142 "nameZh": "中立"
143 },
144 "intents": {
145 "id": "e5304670-6841-40f6-ba49-11bbca32c6a8",
146 "name": "rental",
147 "description": "",
148 "agentId": null,
149 "created": null,
150 "updated": null,
151 "confidence": 1,
152 "source": "knn",
153 "threshold": 0,
154 "system": false,
155 "alias": "",
156 "nameZh": "租车",
157 "examples": null,
158 "hasActiveCopy": false,
159 "templateStr": null,
160 "createdUserName": null,
161 "createdUserId": null,
162 "lastEditUserName": null,
163 "lastEditUserId": null,
164 "version": 0,
165 "industryIntent": false
166 },
167 "nluQuery": "租车",
168 "entities": {},
169 "clarifyIntents": [],
170 "clarifyTemplates": [],
171 "source": "knn",
172 "attitude": {
173 "query": "租车",
174 "label": 0,
175 "prob": 1,
176 "source": "model",
177 "name": "unknown",
178 "nameZh": "无态度"
179 },
180 "rawQuery": "租车"
181 },
182 "confidence": 1,
183 "lastNodeId": "",
184 "dialogs": [
185 {
186 "dialogNodeName": "租车",
187 "webhook": true,
188 "values": {
189 "original": "指令级别的兜底话术",
190 "text": "指令级别的兜底话术",
191 "type": 1
192 },
193 "description": null,
194 "dialogNodeId": "3d2cdfb3-9158-4980-b78d-bb77586b1937",
195 "processVersion": 4,
196 "isBackTrack": false,
197 "endNode": false,
198 "outputIndex": 1,
199 "processId": "b229f5ec-5fe8-4401-8df3-9d329a69c329",
200 "processName": "fanlh",
201 "action": "aciton",
202 "processType": 0,
203 "isResult": false,
204 "value": "指令级别的兜底话术"
205 },
206 {
207 "dialogNodeName": "检查车型实体节点_qwpg1bhv",
208 "webhook": false,
209 "values": {
210 "type": 1,
211 "text": "请输入车型",
212 "original": "请输入车型"
213 },
214 "description": "检查车型实体节点",
215 "dialogNodeId": "b017e30c-3550-4fce-be32-f09d84d1dce1",
216 "processVersion": 4,
217 "isBackTrack": false,
218 "endNode": false,
219 "outputIndex": 1,
220 "processId": "b229f5ec-5fe8-4401-8df3-9d329a69c329",
221 "processName": "fanlh",
222 "processType": 0,
223 "isResult": false,
224 "value": "请输入车型"
225 }
226 ]
227 },
228 "queryId": "05903c5c-54b6-4565-8a27-c6d19fce01b2"
229 },
230 "code": 200,
231 "msg": "OK"
232 }
233}
Faq:
1{
2 "time": 1586499361098,
3 "data": {
4 "sessionId": "11c8cddd-3d0c-493e-a33f-9a02ae5f99e5",
5 "source": "faq",
6 "solved": true,
7 "confidence": 1,
8 "nlu": {
9 "sentiment": {
10 "query": "问答吗",
11 "label": 0,
12 "prob": 0.9999976,
13 "source": "model",
14 "name": "neutral",
15 "nameZh": "中立"
16 },
17 "intents": [],
18 "entities": {},
19 "attitude": {
20 "query": "问答吗",
21 "label": 0,
22 "prob": 0.9965682,
23 "source": "model",
24 "name": "unknown",
25 "nameZh": "无态度"
26 }
27 },
28 "answer": {
29 "answerText": "是的 这里是问答",
30 "answerContents": [
31 {
32 "original": "是的 这里是问答",
33 "text": "是的 这里是问答",
34 "type": 1
35 }
36 ]
37 },
38 "context": {},
39 "webhook": false,
40 "debug": {
41 "responseTime": "2020-04-10 14:16:01:098",
42 "nlu": {
43 "clarifyEntities": {},
44 "sentiment": {
45 "query": "问答吗",
46 "label": 0,
47 "prob": 0.9999976,
48 "source": "model",
49 "name": "neutral",
50 "nameZh": "中立"
51 },
52 "intents": [],
53 "nluQuery": "问答吗",
54 "entities": {},
55 "clarifyIntents": [],
56 "clarifyTemplates": [],
57 "attitude": {
58 "query": "问答吗",
59 "label": 0,
60 "prob": 0.9965682,
61 "source": "model",
62 "name": "unknown",
63 "nameZh": "无态度"
64 },
65 "rawQuery": "问答吗"
66 },
67 "queryTime": "2020-04-10 14:15:58:132",
68 "botId": "b4762b99-d0df-4d51-bb70-38000b5b3f79",
69 "detail": {
70 "standardQuestion": "这里是问答吗?",
71 "extentQuestion": "问答吗?",
72 "answer": {
73 "original": "是的 这里是问答",
74 "text": "是的 这里是问答",
75 "type": 1
76 },
77 "confidence": 1,
78 "id": "12837cac-215b-4d41-81cb-16636ab5a21d",
79 "suggest": []
80 },
81 "queryId": "49d7f755-7c92-4489-be9c-42924ca25083"
82 }
83 },
84 "code": 200,
85 "msg": "OK"
86}
澄清:
1{
2 "queryId": "87aff1df-9517-499a-a09d-c0208187473e",
3 "sessionId": "6cd8cd6a-ceff-4714-b39f-90313d0ee8bb",
4 "source": "clarify",
5 "solved": true,
6 "confidence": 0,
7 "answer": {
8 "clarify": {
9 "voice": "请问您想问的是租个车吗?",
10 "text": {
11 "title": "请问您想咨询的是?",
12 "list": [
13 "租个车"
14 ]
15 }
16 },
17 "clarifyType": "INTENT_CLARIFY"
18 },
19 "queryTime": "2021-08-16 16:14:12:787",
20 "answerTime": "2021-08-16 16:14:13:241",
21 "actions": [],
22 "webhook": false,
23 "topAnythingElse": false,
24 "anythingElse": false,
25 "debug": {
26 "botName": "call_in_bot",
27 "nlu": {
28 "clarifyEntities": {},
29 "sentiment": {
30 "query": "车",
31 "label": 0,
32 "prob": 0.9802588,
33 "source": "model",
34 "name": "neutral",
35 "nameZh": "中立"
36 },
37 "intents": [],
38 "nluQuery": "车",
39 "clarifyIntents": [
40 {
41 "_effect": 0,
42 "id": "23bba558-79a6-4507-82c2-33d66a310f12",
43 "name": "car_rental",
44 "description": "",
45 "agentId": null,
46 "created": null,
47 "updated": null,
48 "confidence": 0.717866837978363,
49 "source": "knn",
50 "threshold": 0,
51 "system": false,
52 "needClarify": false,
53 "alias": "租个车",
54 "nameZh": "租车",
55 "examples": null,
56 "hasActiveCopy": false,
57 "templateStr": null,
58 "createdUserName": null,
59 "createdUserId": null,
60 "lastEditUserName": null,
61 "lastEditUserId": null,
62 "version": 0,
63 "industryIntent": false,
64 "knnExampleStr": "租车",
65 "noResponse": false
66 }
67 ],
68 "clarifyTemplates": [],
69 "nluCorrectedQuery": null,
70 "entities": {},
71 "nluChangedQuery": null,
72 "action": null,
73 "sensitiveWordsList": [],
74 "entityAutoFillVoMap": null,
75 "attitude": {
76 "query": "车",
77 "label": 0,
78 "prob": 1,
79 "source": "model",
80 "name": "unknown",
81 "nameZh": "无态度"
82 },
83 "rawQuery": "车"
84 },
85 "botId": "c46e1b75-bf24-4562-aa88-834243aecf86",
86 "detail": {
87 "clarifyType": "INTENT_CLARIFY",
88 "answerInterventionRules": null,
89 "appendAnswers": null,
90 "confirmQuestions": [
91 {
92 "score": 0.717866837978363,
93 "clickable": true,
94 "source": "task_based",
95 "question": "租个车",
96 "faqId": null
97 }
98 ],
99 "clarifyTypeDesc": "意图澄清",
100 "highConfirmQuestions": null,
101 "clarifyQuestions": {
102 "voice": "请问您想问的是租个车吗?",
103 "text": {
104 "title": "请问您想咨询的是?",
105 "list": [
106 "租个车"
107 ]
108 }
109 },
110 "keywordConfirmQuestions": null,
111 "entityClarify": null
112 },
113 "queryId": "87aff1df-9517-499a-a09d-c0208187473e"
114 }
115}
闲聊:
1{
2 "time": 1586502732524,
3 "data": {
4 "sessionId": "11c8cddd-3d0c-493e-a33f-9a02ae5f99e5",
5 "source": "chitchat",
6 "solved": true,
7 "confidence": 1,
8 "nlu": {
9 "sentiment": {
10 "query": "闲聊吗",
11 "label": 0,
12 "prob": 0.9999223,
13 "source": "model",
14 "name": "neutral",
15 "nameZh": "中立"
16 },
17 "intents": [],
18 "entities": {},
19 "attitude": {
20 "query": "闲聊吗",
21 "label": 0,
22 "prob": 0.9947141,
23 "source": "model",
24 "name": "unknown",
25 "nameZh": "无态度"
26 }
27 },
28 "answer": {
29 "answerText": "这是闲聊",
30 "answerContents": [
31 {
32 "type": 1,
33 "text": "这是闲聊"
34 }
35 ]
36 },
37 "debug": {
38 "responseTime": "2020-04-10 15:12:12:524",
39 "nlu": {
40 "clarifyEntities": {},
41 "sentiment": {
42 "query": "闲聊吗",
43 "label": 0,
44 "prob": 0.9999223,
45 "source": "model",
46 "name": "neutral",
47 "nameZh": "中立"
48 },
49 "intents": [],
50 "nluQuery": "闲聊吗",
51 "entities": {},
52 "clarifyIntents": [],
53 "clarifyTemplates": [],
54 "attitude": {
55 "query": "闲聊吗",
56 "label": 0,
57 "prob": 0.9947141,
58 "source": "model",
59 "name": "unknown",
60 "nameZh": "无态度"
61 },
62 "rawQuery": "闲聊吗"
63 },
64 "queryTime": "2020-04-10 15:12:09:114",
65 "botId": "b4762b99-d0df-4d51-bb70-38000b5b3f79",
66 "detail": {
67 "standardQuestion": "闲聊吗",
68 "extentQuestion": null,
69 "answer": {
70 "type": 1,
71 "text": "这是闲聊"
72 },
73 "confidence": 1,
74 "id": "0ea8b370-f0b4-44fe-a0b7-bf25ffa20365"
75 },
76 "queryId": "cb204ea7-f6ec-4a3a-a72f-9cf58647485f"
77 }
78 },
79 "code": 200,
80 "msg": "OK"
81}
bot系统事件:
1 {
2 "queryId": "ffd58556-2cd8-4c63-a6d1-d79e3c2cc424",
3 "sessionId": "2375914d-ab78-4035-81dd-ede33297b0a0",
4 "source": "system",
5 "solved": true,
6 "confidence": 0,
7 "answer": {
8 "answerText": "silent",
9 "answerContents": [
10 {
11 "text": "silent",
12 "type": 1
13 }
14 ],
15 "recommendContents": []
16 },
17 "queryTime": "2021-08-16 16:39:25:445",
18 "answerTime": "2021-08-16 16:39:25:535",
19 "actions": [],
20 "webhook": false,
21 "topAnythingElse": false,
22 "anythingElse": false,
23 "debug": {
24 "botName": "call_in_bot",
25 "nlu": {
26 "clarifyEntities": null,
27 "sentiment": null,
28 "intents": null,
29 "nluQuery": "",
30 "clarifyIntents": null,
31 "clarifyTemplates": null,
32 "nluCorrectedQuery": null,
33 "entities": null,
34 "nluChangedQuery": null,
35 "action": null,
36 "sensitiveWordsList": [],
37 "entityAutoFillVoMap": null,
38 "attitude": null,
39 "rawQuery": ""
40 },
41 "botId": "c46e1b75-bf24-4562-aa88-834243aecf86",
42 "detail": {
43 "answerInterventionRules": null,
44 "appendAnswers": null,
45 "name": "silent",
46 "count": 1,
47 "index": 1,
48 "reply": {
49 "symbol": "=",
50 "count": 1,
51 "type": 1,
52 "text": "silent",
53 "audio": null,
54 "isWebhook": false,
55 "action": "",
56 "actionName": ""
57 }
58 },
59 "queryId": "ffd58556-2cd8-4c63-a6d1-d79e3c2cc424"
60 }
61}
/api/v2/core/query
接口说明 (V6.X系列开始不再维护v2协议,建议对接V3协议)
-
答案解析,按不同的source解析答案对应字段里的回复类型:
- source=task_based 按序挨个解析拼接answer:dialogs节点列表里对应的不同values
- source=faq 解析answer:answer
- source=chitchat 解析answer:answer
- source=clarify 解析clarifyQuestions:voice:content
- source=system 解析answer:reply
- source=none 解析suggestAnswer
-
呼出/外呼类型agent对接:
- 会话开始时发起一次queryText为空的core/query接口请求,接口返回开场白节点欢迎语。
- 如果上层所有话术使用TTS播放,只需关注: suggestAnswer, 若suggestAnswer为空,则检查clarifyQuestions
- 否则参照第一点进行答案解析
特别说明: 若appendAnswers存在值,也需要在答案最后按照对应的方式解析拼接,若answerInterventionRules存在值,也需要在答案生成的最后按照其干预格式字段说明解析处理答案
- 会话中控接口请求状态为400情况下,错误说明如下:
code | msg | 说明 |
---|---|---|
4000019 | 用户请求过于频繁,请稍后再试 | qps大于阈值 |
4000647 | 当前agent不存在可用的会话引擎 | 无可用会话引擎 |
4002409 | bot token错误 | 非法bot token |
4002413 | 该bot已停用,请启用后再试 | bot已停用 |
4002010 | 包含敏感词,请检查 | 敏感词 |
4001104 | webhook接口返回答案类型不合法 | webhook服务错误 |
4000319 | 对话树配置的跳转存在死循环 | 对话树配置错误 |
4000346 | 会话引导异常,没有可以回退的场景,请检查开场白片段弱引导配置 | 引导配置错误 |
接口地址
https://api-ngd.baidu.com/api/v2/core/query
请求方法
POST
POST body参数说明
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
sessionId | String | 否 | 会话id。 可不传值,由会话机器人生成; 若传值,使用业务方传入的sessionId,用户传入的sessionId必须保证唯一,如UUID. |
queryText | String | 是 | 请求文本 |
context | Map | 否 | 上下文信息。与当前的会话session中的上下文进行合并,若存在key冲突,以传入的key为准 |
sources | List | 否 | 对话模式: 1. task_based:多轮 2. kg:知识图谱 3. faq:问答 4. 空或无该字段为智能对话 |
collectConversation | Boolean | 否 | 是否收集会话数据,用于标注 |
channel | String | 否 | 渠道信息,整个session周期固定 |
ext | Map | 否 | 调用方回传参数,格式为json,数据不做处理用来后期分析使用; 示例:调用会话时传入{ "uid",123 } 会话日志中ext将会存储该信息;用于后期分析, 兼容5.1版本静默、挂机、打断配置 |
vad | String | 否 | silent:静默 interrupt:打断 |
返回参数说明
参数名 | 类型 | 说明 |
---|---|---|
code | int | 错误码 |
msg | String | 错误信息 |
data | Map<String, Object> | 返回答案的详细信息 |
data
参数名 | 类型 | 说明 |
---|---|---|
suggestAnswer | String | 回复文本 |
appendAnswers | List | 外呼拼接话术 |
answerInterventionRules | Map | 答案干预规则信息 |
source | String | 会话模式(faq,task_based,chitchat,clarify,auto_fill,system,none); 当source为clarify时,suggessAnswer及answer字段的值为空,回复内容取clarifyQuestions字段的值. 其余source对应答案的详细信息见下文 |
solved | Boolean | 指定会话模式是否有答案.(多轮会话中,命中顶层节点且节点条件为anything_else,solved为false) |
confidence | Double | 相似度 |
clarifyQuestions | Map | 问题澄清,suggestAnswer存在时,该字段一定不存在 |
clarifyType | String | 澄清类型 |
queryId | String | 请求id |
queryTime | String | 请求时间,格式:yyyy-MM-dd HH:mm:ss:SSS |
answerTime | String | 响应时间,格式:yyyy-MM-dd HH:mm:ss:SS |
sessionId | String | 会话id,使用uuid |
actions | List |
透传的指令 |
answer | Map | 详细的回复信息 |
context | Map | 会话上下文信息和answer里context一致 |
botName | String | bot名称 |
webhook | Boolean | 是否使用webhook |
appendAnswers:
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复类型: 1:文本 6:语音 7:录音拼变量 (更多type详见answer:dialogs:values参数描述) |
text/audio/values | String/Map/List | 外呼类型机器人跳回话术回复内容 |
answerInterventionRules:
参数名 | 类型 | 说明 |
---|---|---|
name | String | 干预规则名称 |
type | int | 干预规则类型: 1:全部替换 2:增加前后缀 |
valueMaps | Map | 规则内容 |
valueMaps(type=1):
参数名 | 类型 | 说明 |
---|---|---|
values | Map | 全文,见上文values答案描述介绍 |
valueMaps(type=2):
参数名 | 类型 | 说明 |
---|---|---|
prefixValues | Map | 前缀,见上文values答案描述介绍 |
suffixValues | Map | 后缀,见上文values答案描述介绍 |
clarifyQuestions:
参数名 | 类型 | 说明 |
---|---|---|
voice | Map | 语音回复 |
text | Map | 文字回复 |
voice:
参数名 | 类型 | 说明 |
---|---|---|
content | String | 澄清语句 |
text:
参数名 | 类型 | 说明 |
---|---|---|
questions | List | 问题 |
title | String | 标题 |
answer:
source为task_based:
参数名 | 类型 | 说明 |
---|---|---|
dialogs | List | 触发会话树节点详情 |
context | Map | 会话上下文信息,(兼容旧版本,保留) |
collectInfo | Map | 外呼信息收集 |
intent | String | 意图名称 |
intentMap | Map | 意图详情 |
entity | Map | 实体详情 |
lastNodeId | String | 最近一次触发的会话树节点id |
lastEnterTopNodeName | String | 上个场景名 |
enterTopNodeIndex | int | 进入场景次数 |
enterTopNodeName | String | 场景名 |
dialogs:
参数名 | 类型 | 说明 |
---|---|---|
dialogNodeId | String | 会话树节点id |
dialogNodeName | String | 会话树节点名 |
processId | String | 流程片段id |
processName | String | 流程片段名 |
value | String | 当前会话节点回复内容 |
values | Map | 当前会话节点回复内容格式配置 |
jumpBackValue | String | 外呼当前会话节点跳回话术 |
jumpBackValues | Map | 外呼当前会话节点跳回话术格式配置(字段格式和values⼀致) |
webhook | Boolean | 是否使用webhook |
action | String | 指令 |
outputIndex | int | 执行模块下标 |
values 详情:
type: 1,纯文本类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 1:纯文本 |
text | String | 回复内容 |
type: 2,link类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 2:link |
text | String | 回复内容 |
url | String | url |
type: 3,富文本类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 3:富文本 |
text | String | 富文本回复内容 |
type: 4,图片类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 4:图片 |
url | String | 图片url |
type: 6,录音类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 6:录音 |
audio | Map | 录音内容 |
audio:
参数名 | 类型 | 说明 |
---|---|---|
duration | int | 录音时长 |
name | String | 录音文件名称 |
id | String | 录音文件id |
text | String | 录音内容文本 |
url | String | 录音url |
textModify | String | 修改后的录音内容 |
type: 7,录音拼变量
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 7:录音拼变量 |
values | List | 回复内容列表, 列表中元素由类型6与类型1组成,即录音类型与文本类型组成 |
type: 8,列表类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 8:列表类型 |
title | String | 回复标题 |
list | List< String> | 回复列表 |
type: 9,多语义答案类型
参数名 | 类型 | 说明 |
---|---|---|
type | int | 回复内容类型 9:多语义答案类型 |
list | List< Object> | 多语义答案列表,对应上述不同的type类型对象 |
answer:
source 为 faq:
参数名 | 类型 | 说明 |
---|---|---|
standardQuestion | String | 标准问问题 |
extendQuestion | String | 扩展问问题 |
id | String | 标准问ID |
suggest | List< String> | 关联问题列表 |
confidence | double | 相似度 |
answer | Map | 答案详情 |
answer 答案详情
参数名 | 类型 | 说明 |
---|---|---|
type | int | 答案类别: 1:纯文本 3:富文本(html tag) 4:pic url link 6:audio |
text | String | type为1或3时使用,回复内容 |
url | String | type为4时使用,图片url |
audio | Map | type为6时使用,录音回复内容 |
audio:
参数名 | 类型 | 说明 |
---|---|---|
duration | int | 录音时长 |
name | String | 录音文件名称 |
id | String | 录音文件id |
text | String | 录音内容文本 |
url | String | 录音url |
textModify | String | 修改后的录音内容 |
source 为 chitchat:
参数名 | 类型 | 说明 |
---|---|---|
id | String | 标准问ID |
standardQuestion | String | 标准问问题 |
extendQuestion | String | 扩展问问题 |
confidence | double | 相似度 |
answer | Map | 答案详情 |
answer 答案详情
参数名 | 类型 | 说明 |
---|---|---|
type | int | 答案类别 1:纯文本 |
text | String | 回复内容 |
source 为 auto_fill(复合实体):
参数名 | 类型 | 说明 |
---|---|---|
entityAutoFill | Map | 复合实体自动填充 |
entityAutoFill:
参数名 | 类型 | 说明 |
---|---|---|
entityAutoFillVo | Map | 复合实体自动填充 |
entityAutoFillName | String | 自动填充实体名称 |
fillText | String | 自动填充文本 |
entityAutoFillVo:
参数名 | 类型 | 说明 |
---|---|---|
entity | Map | 自动填充的复合实体 |
entityFillType | int | 实体填充类型 |
propertyNames | Map | 属性名称列表 |
propertyVoMap | Map | 属性详情列表 |
currentFillVo | Map | 当前填充话术 |
entity:
参数名 | 类型 | 说明 |
---|---|---|
entityId | String | 实体id |
entryId | String | 实体值id |
value | String | 实体值 |
original | String | 实体原始值 |
name | String | 实体名称 |
nameZh | String | 实体中文名称 |
subName | String | 实体子名称 |
offset | int | 偏移量 |
system | Boolean | 是否为系统实体 |
display | String | 实体特殊显示值 |
type | int | 实体类型 |
extra | Map | 扩展属性 |
combineValue | String | 复合实体组合值 |
currentFillVo:
参数名 | 类型 | 说明 |
---|---|---|
propertyName | String | 属性名称 |
fillText | String | 填充话术 |
source为system(系统指令,静默、打断、挂机)
参数名 | 类型 | 说明 |
---|---|---|
name | String | 策略名称 |
index | int | 策略序号 |
count | int | 当前计数次数 |
reply | Map | 策略配置 |
reply 策略配置
参数名 | 类型 | 说明 |
---|---|---|
count | int | 当前计数次数 |
symbol | String | 策略符号,例如:>,<等 |
isWebhook | boolean | 是否启用webhook |
action | String | 指令 |
type | int | 答案类别: 1:纯文本 3:富文本(html tag) 4:pic url link 6:audio |
text | String | type为1或3时使用,回复内容 |
url | String | type为4时使用,图片url |
audio | Map | type为6时使用,录音回复内容 |
audio:
参数名 | 类型 | 说明 |
---|---|---|
duration | int | 录音时长 |
name | String | 录音文件名称 |
id | String | 录音文件id |
text | String | 录音内容文本 |
url | String | 录音url |
textModify | String | 修改后的录音内容 |
请求示例
1curl -X POST https://api-ngd.baidu.com/api/v2/core/query -H 'Authorization:
2NGD 4f7f3cb9-4d1b-42e3-b03e-19771d8e7b07' -H 'Content-Type: application/json' -d '{"queryText":"","sessionId":"5cb6e7b8-e3da-45bb-ac07-98265ac54a01"}'
响应结果示例
任务式会话
1{
2 "time": 1574309239335,
3 "data": {
4 "suggestAnswer": "请问您要在什么时间租车?[外呼拼接跳回话术]",
5 "appendAnswers": [
6 {
7 "type": 1,
8 "text": "[外呼拼接跳回话术]"
9 }
10 ],
11 "source": "task_based",
12 "solved": true,
13 "confidence": 1,
14 "queryId": "37a4a7a0-16b0-4be2-85da-dea4f86f2454",
15 "queryTime": "2019-11-21 12:07:19:197",
16 "answerTime": "2019-11-21 12:07:19:335",
17 "sessionId": "5cb6e7b8-e3da-45bb-ac07-98265ac54a01",
18 "actions": [],
19 "answer": {
20 "intentMap": {
21 "id": "a7603c96-e007-401c-8891-5f12a2e192c7",
22 "name": "car_rental",
23 "description": "",
24 "agentId": null,
25 "created": null,
26 "updated": null,
27 "confidence": 1,
28 "source": "knn",
29 "threshold": 0,
30 "system": false,
31 "alias": "",
32 "nameZh": "租车意图",
33 "examples": null,
34 "hasActiveCopy": false,
35 "templateStr": null,
36 "createdUserName": null,
37 "createdUserId": null,
38 "lastEditUserName": null,
39 "lastEditUserId": null
40 },
41 "intent":"car_rental",
42 "enterTopNodeName": "租车意图",
43 "lastEnterTopNodeName": null,
44 "context": {
45 "sys_counter": {
46 "check_租车意图_sys_date": 1,
47 "租车意图": 1
48 }
49 },
50 "collectInfo": {},
51 "enterTopNodeIndex": 1,
52 "lastNodeId": null,
53 "intent": "car_rental",
54 "entity": {},
55 "dialogs": [
56 {
57 "dialogNodeName": "租车意图",
58 "webhook": false,
59 "description": null,
60 "dialogNodeId": "f106cbfc-ef9f-40e4-bb2c-8002561a543f",
61 "processVersion": 2,
62 "isBackTrack": false,
63 "endNode": false,
64 "jumpBackValue": null,
65 "outputIndex": 1,
66 "processId": "fb077db8-bcba-4740-b7e3-2ae9eba2ab75",
67 "processName": "租车场景",
68 "action": "",
69 "processType": 0,
70 "isResult": false,
71 "value": null
72 },
73 {
74 "dialogNodeName": "check_租车意图_sys_date",
75 "webhook": false,
76 "description": "检查sys_dateaa",
77 "dialogNodeId": "827db511-3982-4e48-b1ef-d6e89097485d",
78 "processVersion": 2,
79 "isBackTrack": false,
80 "endNode": false,
81 "jumpBackValue": null,
82 "outputIndex": 1,
83 "processId": "fb077db8-bcba-4740-b7e3-2ae9eba2ab75",
84 "processName": "租车场景",
85 "action": "",
86 "processType": 0,
87 "isResult": false,
88 "value": "请问您要在什么时间租车?"
89 }
90 ]
91 },
92 "context": {
93 "sys_counter": {
94 "check_租车意图_sys_date": 1,
95 "租车意图": 1
96 }
97 },
98 "botName": "租车bot",
99 "botDesc": null,
100 "botVersion": 1,
101 "agentType": 1,
102 "webhook": false
103 },
104 "code": 200,
105 "msg": "OK"
106}
Faq:
1{
2 "time": 1574309920227,
3 "data": {
4 "suggestAnswer": "是的。",
5 "appendAnswers": null,
6 "source": "faq",
7 "solved": true,
8 "confidence": 1,
9 "queryId": "b01da250-8d68-417b-ad34-73ea81080ef6",
10 "queryTime": "2019-11-21 12:18:40:104",
11 "answerTime": "2019-11-21 12:18:40:227",
12 "sessionId": "1a9a18a1-3b46-4b90-b71a-76e4e5f53ff9",
13 "answer": {
14 "standardQuestion": "这是问答库",
15 "answer": {
16 "text": "是的。",
17 "type": 1
18 },
19 "faq": {
20 "id": "774502fb-b971-41cd-bfdc-f4a2d680a755",
21 "standardQuestion": "这是问答库",
22 "extendQuestion": null,
23 "faqId": "774502fb-b971-41cd-bfdc-f4a2d680a755",
24 "template": null,
25 "answerText": "是的。",
26 "answerType": 1,
27 "answer": {
28 "text": "是的。",
29 "type": 1
30 },
31 "confidence": 1,
32 "suggest": [],
33 "context": {},
34 "isActiveHook": 0,
35 "instruction": "",
36 "confirmSimilarity": 0.6,
37 "minSimilarity": 0.8,
38 "similaritySource": "unit",
39 "channelAnswer": false
40 },
41 "confidence": 1,
42 "id": "774502fb-b971-41cd-bfdc-f4a2d680a755",
43 "extendQuestion": null,
44 "suggest": [],
45 "isChannelAnswer": false
46 },
47 "context": {},
48 "botName": "租车bot",
49 "botDesc": null,
50 "botVersion": 1,
51 "agentType": 1,
52 "webhook": false
53 },
54 "code": 200,
55 "msg": "OK"
56}
澄清:
1{
2 "time": 1581653248305,
3 "data": {
4 "suggestAnswer": null,
5 "appendAnswers": null,
6 "source": "clarify",
7 "solved": true,
8 "confidence": 0,
9 "clarifyQuestions": {
10 "voice": {
11 "questions": [
12 "请问您想问的是你是谁吗?"
13 ],
14 "content": "请问您想问的是你是谁吗?"
15 },
16 "text": {
17 "questions": [
18 "你是谁"
19 ],
20 "title": "请问您想咨询的是?"
21 }
22 },
23 "confirmQuestions": [
24 {
25 "score": 1,
26 "clickable": true,
27 "source": "faq",
28 "question": "你是谁"
29 }
30 ],
31 "queryId": "3393911b-bc1c-4964-b9f3-dae2efd7c6c2",
32 "queryTime": "2020-02-14 12:07:27:866",
33 "answerTime": "2020-02-14 12:07:28:305",
34 "sessionId": "1c55f8a3-3a74-49ab-b583-415304ecff70",
35 "answer": null,
36 "context": null,
37 "botName": "bot16jj3r",
38 "botDesc": null,
39 "botPublishVersion": 1,
40 "agentType": 3,
41 "webhook": null
42 },
43 "code": 200,
44 "msg": "OK"
45}
闲聊:
1{
2 "time": 1574310130987,
3 "data": {
4 "suggestAnswer": "在呢在呢",
5 "appendAnswers": null,
6 "source": "chitchat",
7 "solved": true,
8 "confidence": 1,
9 "queryId": "166c859c-6db1-4f46-aad8-4ac4fd19b04a",
10 "queryTime": "2019-11-21 12:22:10:913",
11 "answerTime": "2019-11-21 12:22:10:987",
12 "sessionId": "e718f46a-89d6-4415-b804-c2b14240d679",
13 "answer": {
14 "chitchat": {
15 "id": "e2cb06ca-caca-4cf5-898a-c00ad8261caa",
16 "standardQuestion": "小度小度",
17 "extendQuestion": null,
18 "chitchatId": "e2cb06ca-caca-4cf5-898a-c00ad8261caa",
19 "answerText": "在呢在呢",
20 "confidence": 1
21 },
22 "standardQuestion": "小度小度",
23 "answer": {
24 "type": 1,
25 "text": "在呢在呢"
26 },
27 "confidence": 1,
28 "id": "e2cb06ca-caca-4cf5-898a-c00ad8261caa",
29 "extendQuestion": null
30 },
31 "context": null,
32 "botName": "租车bot",
33 "botDesc": null,
34 "botVersion": 1,
35 "agentType": 1,
36 "webhook": null
37 },
38 "code": 200,
39 "msg": "OK"
40}
系统设置:
1{
2 "time": 1574318085952,
3 "data": {
4 "suggestAnswer": "这是重述哦",
5 "appendAnswers": null,
6 "source": "system",
7 "solved": true,
8 "confidence": 1,
9 "queryId": "afdbf45b-0a68-4017-a0ed-32fc9b74e1ed",
10 "queryTime": "2019-11-21 14:34:45:884",
11 "answerTime": "2019-11-21 14:34:45:952",
12 "sessionId": "3cdd81e2-edbc-4d26-87a1-c6ce9ebaa0da",
13 "answer": {
14 "count": 2,
15 "index": 1,
16 "symbol": null,
17 "reply": {
18 "symbol": "=",
19 "count": 2,
20 "isWebhook": false,
21 "type": 1,
22 "text": "这是重述哦",
23 "action": "",
24 "url": "",
25 "audio": null,
26 "hangup": 1
27 }
28 },
29 "context": null,
30 "botName": "租车bot",
31 "botDesc": null,
32 "botVersion": 1,
33 "agentType": 1,
34 "webhook": null
35 },
36 "code": 200,
37 "msg": "OK"
38}
未匹配回复:
1{
2 "time": 1581654593238,
3 "data": {
4 "suggestAnswer": "抱歉,我不太理解您的意思",
5 "appendAnswers": null,
6 "source": "none",
7 "solved": false,
8 "confidence": 0,
9 "queryId": "eed1e1da-2516-4eb1-80f6-684bc9762700",
10 "queryTime": "2020-02-14 12:29:53:117",
11 "answerTime": "2020-02-14 12:29:53:238",
12 "sessionId": "1f4eb0a4-bb86-4f71-8475-0ee8feea109d",
13 "answer": null,
14 "context": null,
15 "botName": "test",
16 "botDesc": null,
17 "botPublishVersion": 0,
18 "agentType": 2,
19 "webhook": null
20 },
21 "code": 200,
22 "msg": "OK"
23}
NLU 预测接口
接口地址
https://api-ngd.baidu.com/api/v2/nlu/recognize
请求方式
POST
请求参数说明
request body
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
query | string | 否 | 用户query |
返回参数说明
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
code | int | 是 | 错误码 |
msg | string | 是 | 错误信息 |
data | json | 是,结构如下 |
data:
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
rawQuery | String | 是 | 原始query |
nluQuery | String | 是 | nlu分析query |
intents | List | 否 | 识别出的意图列表 |
clarifyIntents | List | 否 | 识别出的意图澄清列表 |
clarifyTemplates | List | 否 | 识别出的模版澄清列表 |
entities | Map | 否 | 识别出的实体列表 |
clarifyEntities | Map | 否 | 识别出的实体澄清列表 |
nluEntityClarifyList | List | 否 | 识别出的实体澄清列表 |
sentiment | Map | 否 | 识别出的情感 |
attitude | Map | 否 | 识别出的态度 |
action | Map | 否 | 识别出的动作 |
sensitiveWords | List< String> | 否 | 识别出的敏感词 |
noResponse | Boolean | 否 | 是否意图不响应问 |
intents/clarifyIntents/clarifyTemplates:
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
id | String | 是 | 意图id |
name | String | 是 | 意图英文名称 |
nameZh | String | 是 | 意图中文名称 |
description | String | 否 | 意图描述 |
system | Boolean | 是 | 是否系统意图 |
source | String | 是 | 算法名称 |
alias | String | 否 | 意图别名 |
templateStr | String | 是 | 模版字符串 |
nluEntityClarifyList:
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
entityId | String | 否 | 实体id |
entryId | String | 否 | 实体值id |
value | String | 是 | 识别出的实体值 |
original | String | 是 | 原始query实体值 |
name | String | 是 | 实体英文名称 |
nameZh | String | 是 | 实体中文名称 |
offset | int | 是 | 原始query实体偏移量 |
system | Boolean | 是 | 是否为系统实体 |
display | String | 否 | 实体显示值 |
extra | Map | 否 | 其他信息 |
sentiment:
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
query | String | 是 | 用户query |
prob | String | 是 | 置信度 |
source | String | 是 | 来自模型 |
name | String | 是 | 标签别名称 |
nameZh | String | 是 | 标签中文名, 消极、积极、中立 |
attitude:
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
query | String | 是 | 用户query |
prob | String | 是 | 置信度 |
source | String | 是 | 来自模型 |
name | String | 是 | 标签别名称 |
nameZh | String | 是 | 标签中文名,肯定、否定、无态度 |
action:
参数名 | 类型 | 必选 | 说明 |
---|---|---|---|
query | String | 是 | 用户query |
prob | String | 是 | 置信度 |
source | String | 是 | 来自模型 |
name | String | 是 | 动作英文名 |
nameZh | String | 是 | 动作中文名 |
请求示例
1curl -i "https://api-ngd.baidu.com/api/v2/nlu/recognize" -H 'Authorization: NGD develop_token' -H 'Content-Type: application/json' -XPOST -d '{"query":"气温怎么样"}'
响应结果示例
1{
2 "time": 1582079541029,
3 "data": {
4 "rawQuery": "气温怎么样",
5 "nluQuery": "气温怎么样",
6 "intents": [
7 {
8 "id": "04ac48d8-c87a-42c0-b5fe-cb0eff396741",
9 "name": "climate",
10 "description": "",
11 "agentId": "9a5b56e7-d682-419d-95ff-85877e1c563b",
12 "created": "52104-02-07 08:40:00",
13 "updated": "52104-02-07 08:40:00",
14 "confidence": 1,
15 "source": "template",
16 "threshold": 0,
17 "system": false,
18 "alias": "cold",
19 "nameZh": "查气候",
20 "examples": null,
21 "hasActiveCopy": false,
22 "templateStr": "气温怎么样",
23 "createdUserName": null,
24 "createdUserId": null,
25 "lastEditUserName": null,
26 "lastEditUserId": null,
27 "version": 0
28 },
29 {
30 "id": "c3eee251-525d-4d67-aeae-419d8900e39f",
31 "name": "get_weather",
32 "description": null,
33 "agentId": null,
34 "created": null,
35 "updated": null,
36 "confidence": 1,
37 "source": "template",
38 "threshold": 0,
39 "system": false,
40 "alias": "查天气",
41 "nameZh": "查天气",
42 "examples": null,
43 "hasActiveCopy": false,
44 "templateStr": "气温怎么样",
45 "createdUserName": null,
46 "createdUserId": null,
47 "lastEditUserName": null,
48 "lastEditUserId": null,
49 "version": 0
50 }
51 ],
52 "clarifyIntents": [],
53 "entities": {
54 "whether": [
55 {
56 "entityId": "f8bd843e-41cb-4d96-8b8f-765a85c975ed",
57 "entryId": "0e0f96bd-f126-4661-b374-1cb58078b893",
58 "value": "气温",
59 "original": "气温",
60 "name": "whether",
61 "nameZh": "天气",
62 "subName": null,
63 "offset": 0,
64 "system": false,
65 "display": null,
66 "extra": null
67 }
68 ],
69 "climate": [
70 {
71 "entityId": "89340252-3e32-47cb-9bbd-dacc12c72676",
72 "entryId": "6ef82bfe-b84a-4e72-b5a8-58527640132b",
73 "value": "气温",
74 "original": "气温",
75 "name": "climate",
76 "nameZh": "气候",
77 "subName": null,
78 "offset": 0,
79 "system": false,
80 "display": null,
81 "extra": null
82 }
83 ]
84 },
85 "clarifyEntities": {},
86 "sentiment": {
87 "query": "气温怎么样",
88 "label": 0,
89 "prob": 1,
90 "source": "model",
91 "name": "neutral",
92 "nameZh": "中立"
93 },
94 "source": null,
95 "attitude": {
96 "query": "气温怎么样",
97 "label": 0,
98 "prob": 1,
99 "source": "model",
100 "name": "unknown",
101 "nameZh": "无态度"
102 },
103 "sensitiveWords": [],
104 "entityClarifyList": [],
105 "nluEntityClarifyList": [],
106 "clarifyTemplates": [
107 {
108 "id": "04ac48d8-c87a-42c0-b5fe-cb0eff396741",
109 "name": "climate",
110 "description": "",
111 "agentId": "9a5b56e7-d682-419d-95ff-85877e1c563b",
112 "created": "52104-02-07 08:40:00",
113 "updated": "52104-02-07 08:40:00",
114 "confidence": 1,
115 "source": "template",
116 "threshold": 0,
117 "system": false,
118 "alias": "cold",
119 "nameZh": "查气候",
120 "examples": null,
121 "hasActiveCopy": false,
122 "templateStr": "气温怎么样",
123 "createdUserName": null,
124 "createdUserId": null,
125 "lastEditUserName": null,
126 "lastEditUserId": null,
127 "version": 0
128 },
129 {
130 "id": "c3eee251-525d-4d67-aeae-419d8900e39f",
131 "name": "get_weather",
132 "description": null,
133 "agentId": null,
134 "created": null,
135 "updated": null,
136 "confidence": 1,
137 "source": "template",
138 "threshold": 0,
139 "system": false,
140 "alias": "查天气",
141 "nameZh": "查天气",
142 "examples": null,
143 "hasActiveCopy": false,
144 "templateStr": "气温怎么样",
145 "createdUserName": null,
146 "createdUserId": null,
147 "lastEditUserName": null,
148 "lastEditUserId": null,
149 "version": 0
150 }
151 ],
152 "noResponse": false
153 },
154 "code": 200,
155 "msg": "OK"
156}
常见问题
- 问题1: 访问core/start,core/query接口返回错误信息「bot token错误」? - 原因1: bot未发布。 - 原因2: bot token错误。bot token可以在Bot管理列表中复制Token获取。