4、响应模块
* * * * *
4.1什么是响应模块?
响应模块可以理解为用来对用户的话进行响应的模块。如当用户说“帮我预订会议室”之后,我们需要对用户的这句话进行响应,那么我们就在响应模块中编写回复即可。对用户的回复可以是直接编写的一句话,也可以是调用从用户说的话中抽取的参数,也可以通过url请求您(或第三方)的服务来进行响应,下面我们将逐步解释如何来进行响应。
* * * * *
4.2如何创建响应模块?
在上文对于意图的介绍时,我们讲解了如何创建意图。响应模块的创建与意图的创建一致,也是在场景配置的页面中进行添加。如下图,我们在添加一个意图后,在响应模块的单元格中点击添加一个响应模块,在初次添加时,场景下没有可用响应模块,因此需要在弹框中选择新增模块,填写模块名称即可完成添加。与添加意图一样,此时仅是添加了一个空的响应模块,并没有添加具体的响应内容,在我们所有意图的响应模块关联之后,可以再逐步去完善响应模块。需要注意的是,一个响应模块可以对多个意图进行响应,如果在一个场景下,所有的响应都是通过文本响应,没有与第三方服务(或是开发者自己的服务)发生任何交互,那么一个场景仅添加一个响应模块即可。

* * * * *
4.3如何编辑响应?
4.3.1 不调用参数的文本响应
点击上面我们已经添加的响应模块“行政引导”,进入响应模块的配置。进入后可以看见,我们刚才编辑的“提出需要预订会议室”这个意图,这个意图并不需要与其他服务进行交互,因此我们选择文本响应即可。在意图响应这个单元格里,我们编写响应的内容即可,如“你想预订哪个会议室呢,当前可用的会议室有会议室1,会议室2”。填写完成后点击保存。

到此为止,我们已经完成了一个简单的意图创建,意图解析规则编写,词库创建,意图响应设置流程。可以在聊天对话框中进行测试体验了!

4.3.2 调用参数的文本响应。
(查看本部分内容前,请先查看意图教程中的高级教程)
在我们添加完“选择会议室”这个意图之后,需要编辑对于这个意图的响应,进入响应模块编辑页面,我们看见在“选择会议室”这个意图后面的“意图返回参数”单元格中,有一个“#{会议室}”,也就是我们在意图编辑中设置的必须参数。我们可以在意图的响应中调用这个参数来对用户进行响应,如“正在为您预定#{会议室},请问您的会议开始时间是?”。点击保存,我们就完成了通过调用参数来进行的文本响应了!在对话框中测试一下效果吧!


4.3.3 调用上下文返回的参数的文本响应
此部分参考上下文控制教程中的5.3 在意图间传递参数。
* * * * *
4.4响应模块高级教程
上文讲解了,如何在不调用其他服务的情况下通过文本来对用户进行响应,那如果需要通过开发者(或第三方)的服务来对用户进行响应呢?如预订会议室,场景对话只是对用户进行流程的引导,在通过多轮对话收集了“会议室名称”,“开始时间”,“结束时间”之后,我们实际上是需要将这三个参数传递给会议室预订服务来完成会议室预订的。
4.4.1 设置服务url
具体的设置如下图,响应模式选择与您(或第三方)的服务进行交互,在下方的框中填下一个可以通过post方法请求的url。

当前意图被触发后,我们将按照下方的协议请求这个url
{
"actionName": "行政引导",//意图响应模块名称
"cmd": "会议室1?",//用户说的话
"intentName": "选择会议室",//解析了用户说的话的意图名称
"semantic": {//意图解析出来的实体
"#{会议室}": "会议室1"
}
}
在您的服务处理了这个请求之后,按照以下协议格式返回数据即可
~~~
[
{
"type": 0,//输出类型(文本)
"value": "123456"//输出内容
},
{
"message": {//输出到附加信息
"info": "uuuuu"
},
"type": 1,//(图片)
"value": "123456"//资源地址
}
]
ype类型:
0 文本
1 图片
2 音频
3 视频
~~~
4.4.2 设置请求失败时的响应
当您的服务在2s之内没有对我们的请求做出响应时,我们会给用户一个特定的回复,也就是您在这里设置的回复,如

