跳到主要内容
版本:1.10.0

多槽接口单元

本章将讲解什么是多槽接口单元,以及如何使用多槽接口单元。

基本概念

在对话流程中,有时候机器人需要从第三方接口获取多个信息,并将这些信息填入对应的接收词槽中以便在后续流程中继续使用,这时候,我们就可以通过使用多槽接口单元来实现。多槽接口单元能够在一个单元内,通过一次对第三方接口的调用,完成多个词槽值的获取。

接口配置

我们可以在正式接口下方填入第三方接口URL,并为之设置超时时间。
webhook-setting-zh-v1.9

接口请求格式

在发送请求时,可以根据第三方接口的需要,拼接多个词槽的值进行发送。
接口请求的格式如下:

http://yourhttpserver:port?attr1_name={slot1_name}&attr2_name={_slot2_name}

其中,词槽名称有两种写法:
使用{slot1_name}时,如果该值属于某个实体,会统一使用实体值归一后的值。
使用{_slot2_name}会直接使用slot2的文本值。

比如,用户在2022年1月1日跟机器人说:“我要预定今天的会议室。”词槽“会议日期”获取到词槽值“今天”,并查询到“今天”属于实体“日期”。

如果用:

http://yourhttpserver:port?attr_name={会议日期}

那么,attr_name=“2022-01-01”。
如果用:

http://yourhttpserver:port?attr_name={_会议日期}

那么,attr_name=“今天”。

接口返回格式

多槽接口单元可以从第三方接口接收多个词槽的值,以及待发送给用户的回复信息。

接收词槽的值:通常需要返回,否则词槽为空,影响单元正常跳转。
待发送给用户的回复:可选。

接口返回参数如下:

 {
"slots": [{
"name":"new_slot_name",
"value":"new_slot_value"
},{
"name":"new_slot_name",
"value":"new_slot_value"
}
],
"msg_body": [{
"data":{
"content": "测试文本消息"
},
"type":"text"
}]
}

模拟接口填槽

如果当前单元需要的接口尚未开发完成,我们可以设置接口模拟值,以便于顺利测试后续的对话流程。

比如,在订机票的对话流程中,机器人需要调用第三方接口获取航班信息,主要包括航班号和出发时间,为了顺利测试,我们可以用下图中的格式手动输入航班信息,这样,当对话进行到这一单元时,机器人便会使用我们填写的模拟值去填槽,然后成功进入后续的流程。
mock-slot-value-zh-v1.9

跳转关系

因为多槽接口单元涉及到第三方接口调用,接口返回可能出现成功、失败以及返回结果为空的情况,我们可以为每一种情况配置单独的跳转关系,使对话流程更为完整。
webhook-block-routes-zh-v1.9