actions-on-google - Google Assistant webhook 插槽填充自定义
问题描述
我正在使用带有 Spring Boot 应用程序的 Google Assistant 集成 webhook。
我在代理对话流中创建了 3 个插槽,都是必需的。a1,a2,a3。
假设 a2 的值取决于 a1 的值。
如果 a1 > 100,我想跳过 a2 并要求 a3。因此,当用户说出应该填充在 a3 中而不是 a2 中的内容时。
如果 a1<=100,则询问 a2,然后询问 a3。
如何告诉 google agent 哪个 slot 需要填充?
解决方案
您可以通过设置所需的上下文及其参数以编程方式在您的履行 webhook 中设置参数。请注意,这不是插槽填充的预期用途。
Dialogflow在填写参数时默认创建3个输出上下文
<intentId>_id_dialog_context
<intentname>_dialog_context
<intentname>_dialog_params_<parameterName>
您可以使用Webhookclient.contexts找到这些上下文
请注意,包含 parameterName 的上下文将根据 Dialogflow 要求的参数而改变。例如,如果您填写参数 a1,对话框将要求输入 a2。上下文将是<intentname>_dialog_params_a2
所有这些上下文都包含意图所需的参数。您可以使用这种方法以编程方式设置这些参数:
- 用户填写a1
- 在您的 webhook 中,确定是否应该询问或跳过 a2
- 如果它应该被问到,什么也不做或发送一个不同的提示使用
webhookClient.add(responses)
如果应该跳过:
- 使用设置两个
_dialog_context
上下文webhookClient.setContext(context)
- 在设置它们时,将参数 a2 作为不存在的东西发送
null
- 删除上下文 _params_a2
- 设置上下文_params_a3,参数相同
可能您的参数现在看起来像:
{a1 : 'someUserValue', a2 : 'someValueByWebhook', a3 : ''}
通过这样做,Dialogflow 已经有了 a2 的值,并且不会再要求它
推荐阅读
- python - boto3 get_metric_statistics 返回空数据点
- java - Swing Layout Extensions 消失了怎么办?
- excel - 使用 Excel VBA 创建数字序列的奇数错误
- iphone - 适用于 iOS 的增强现实和快速的前置摄像头应用程序
- parameters - Swagger-Dredd:为参数指定多个类型
- vba - 循环使用不同的行数?
- angular - ngIf 不重新调整变量值更改
- android - 如何在Android drawable中为环形制作圆角
- javascript - Oauth2 - 获取访问令牌,服务器访问谷歌云平台
- python - 递归 python-JSON 阅读器