Slack 中的 Dialogflow 按钮从键入的条目生成单独的会话

问题描述

我的 Dialogflow 会话似乎随着我手动输入文本或单击按钮而改变。我的后端函数在 Dialogflow 中显示的 slack 负载生成按钮。

按钮显示正常并按预期工作,除非我需要输出上下文和现有会话中的某些内容。问题似乎是当我在 Slack 中手动输入文本时,它是一个会话,而当我单击一个按钮时,它是另一个会话。我不知道为什么会这样,但我显然希望它们被视为一个会话。

我创建了一个简单的意图和 webhook 调用,它在调用时简单地返回当前会话 ID。我创建了一个“什么会话”意图。我创建了一个“what session”按钮,其值为“what session”。当我输入“what session”(或“which session”)时,会话会作为某个会话返回,并按预期带有按钮。当我点击“什么会话”按钮时,我得到相同的结果,除了它是一个不同的会话。每次点击按钮时,我都在一个会话中,当我再次手动输入“什么会话”时,我得到了原始会话。

在历史记录中,您可以看到两个不同的对话流。

那么,我如何让按钮在点击时让用户保持在同一个会话中?

这是按钮的格式(非常简单)。后端函数还使用会话值填充“文本”字段,但不会更改任何其他内容

{
  "slack": {
    "text": "","attachments": [
      {
        "blocks": [
          {
            "type": "actions","elements": [
              {
                "type": "button","text": {
                  "type": "plain_text","text": "test"
                },"value": "test"
              },{
                "type": "button","text": "what session"
                },"value": "what session"
              }
            ]
          }
        ]
      }
    ]
  }
}

以下是 slack 上的交互(在移动设备上):

enter image description here

以下是 Dialogflow 中显示两个独立流的历史记录:

enter image description here

enter image description here

解决方法

Google 支持在这方面帮助了我 - 谢谢! 解决方案是将请求 URL 添加到交互性和快捷方式部分。

现在,想象一下当我重新阅读说明中的最后一步来执行此操作时的尴尬:

“要使用富消息,请复制下面的‘事件请求 URL’值并将其粘贴到 Slack 应用设置的交互式消息部分的‘请求 URL’字段中。”

然而,在我的辩护中,我想知道我怎么会错过两次(因为我重新设置了所有内容以进行测试以查看我错过了什么)。我知道我会这样做。奇怪的是,当我完成 Slack 中的步骤时,我意识到我的更改没有保存在该页面上。我点击了“Save Changes”并假设它已经保存,但按钮没有变成绿色所以没有保存更改。因此,我对遇到上述问题的任何人的建议是确保他们的所有更改都保存在 Slack 中。 enter image description here