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 中。