Slack 中的 Dialogflow 按钮从键入的条目生成单独的会话
Dialogflow buttons in Slack generating separate session from typed entries
我的 Dialogflow 会话似乎会随着我是手动输入文本还是单击按钮而改变。我的后端函数在 Dialogflow 中显示的松弛负载中生成按钮。
除非我需要来自输出上下文和现有会话的内容,否则按钮会正常显示并按预期工作。问题似乎是,当我在 Slack 中手动输入文本时,它是一个会话,而当我单击一个按钮时,它是另一个会话。我不知道为什么会这样,但我显然希望将它们视为一个会话。
我创建了一个简单的意图和 webhook 调用,它只是 returns 调用时的当前会话 ID。我创建了一个“什么会话”的意图。我创建了一个值为“什么会话”的“什么会话”按钮。当我键入“what session”(或“which session”)时,该会话会按预期作为特定会话返回。当我单击“什么会话”按钮时,除了它是一个不同的会话之外,我得到相同的结果。每次单击按钮时,我都在一个会话中,当我再次手动输入“什么会话”时,我得到的是原始会话。
在历史记录中,您可以看到两个不同的对话流。
那么,如何让按钮在单击时让用户保持在同一会话中?
这是按钮的格式(非常简单)。后端函数还使用会话值填充“文本”字段,但不会更改任何其他内容。
{
"slack": {
"text": "",
"attachments": [
{
"blocks": [
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "test"
},
"value": "test"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "what session"
},
"value": "what session"
}
]
}
]
}
]
}
}
这是在 slack 上(在移动设备上)的交互方式:
这是 Dialogflow 中显示两个独立流的历史记录:
Google 支持帮助了我 - 谢谢!
解决方案是将请求 URL 添加到“交互性和快捷方式”部分。
现在,想象一下当我重新阅读说明中的最后一步以执行此操作时我的尴尬:
“要使用丰富的消息,请复制下面的‘事件请求 URL’值并将其粘贴到 Slack 应用程序设置的交互式消息部分的 'Request URL' 字段中。”
然而,在我的辩护中,我想知道我是如何错过这两次的(因为我重新设置了所有内容以进行测试以查看我遗漏了什么)。我知道我会这样做的。奇怪的是,当我在 Slack 中完成该步骤时,我意识到我的更改并未保存在该页面上。我点击了“Save Changes”并假设它已经保存了,但是按钮并没有变成绿色,所以更改没有被保存。因此,我对遇到上述问题的任何人的建议是确保他们所有的更改都保存在 Slack 中。
我的 Dialogflow 会话似乎会随着我是手动输入文本还是单击按钮而改变。我的后端函数在 Dialogflow 中显示的松弛负载中生成按钮。
除非我需要来自输出上下文和现有会话的内容,否则按钮会正常显示并按预期工作。问题似乎是,当我在 Slack 中手动输入文本时,它是一个会话,而当我单击一个按钮时,它是另一个会话。我不知道为什么会这样,但我显然希望将它们视为一个会话。
我创建了一个简单的意图和 webhook 调用,它只是 returns 调用时的当前会话 ID。我创建了一个“什么会话”的意图。我创建了一个值为“什么会话”的“什么会话”按钮。当我键入“what session”(或“which session”)时,该会话会按预期作为特定会话返回。当我单击“什么会话”按钮时,除了它是一个不同的会话之外,我得到相同的结果。每次单击按钮时,我都在一个会话中,当我再次手动输入“什么会话”时,我得到的是原始会话。
在历史记录中,您可以看到两个不同的对话流。
那么,如何让按钮在单击时让用户保持在同一会话中?
这是按钮的格式(非常简单)。后端函数还使用会话值填充“文本”字段,但不会更改任何其他内容。
{
"slack": {
"text": "",
"attachments": [
{
"blocks": [
{
"type": "actions",
"elements": [
{
"type": "button",
"text": {
"type": "plain_text",
"text": "test"
},
"value": "test"
},
{
"type": "button",
"text": {
"type": "plain_text",
"text": "what session"
},
"value": "what session"
}
]
}
]
}
]
}
}
这是在 slack 上(在移动设备上)的交互方式:
这是 Dialogflow 中显示两个独立流的历史记录:
Google 支持帮助了我 - 谢谢! 解决方案是将请求 URL 添加到“交互性和快捷方式”部分。
现在,想象一下当我重新阅读说明中的最后一步以执行此操作时我的尴尬:
“要使用丰富的消息,请复制下面的‘事件请求 URL’值并将其粘贴到 Slack 应用程序设置的交互式消息部分的 'Request URL' 字段中。”
然而,在我的辩护中,我想知道我是如何错过这两次的(因为我重新设置了所有内容以进行测试以查看我遗漏了什么)。我知道我会这样做的。奇怪的是,当我在 Slack 中完成该步骤时,我意识到我的更改并未保存在该页面上。我点击了“Save Changes”并假设它已经保存了,但是按钮并没有变成绿色,所以更改没有被保存。因此,我对遇到上述问题的任何人的建议是确保他们所有的更改都保存在 Slack 中。