来自交互式按钮 POST 的响应在 Mattermost 中被忽略

Response from interactive button POST is ignored in Mattermost

我正在构建一个斜杠命令。我想象的流程是:

  1. 用户在客户端触发斜杠命令
  2. 我的服务器处理请求和returns交互式下拉菜单
  3. 用户从客户端的下拉列表中选择选项
  4. 我的服务器处理来自选择的 POST 请求,并且 returns 一个交互式按钮
  5. 用户按下按钮

第 4 步和第 5 步之间似乎出了点问题。服务器处理选择和 returns 所需的响应:

{ 
  "update": {"message": "Updated!"}, 
  "ephemeral_text": "You updated the post!", 
  "attachments": [{
    "text": "Ready?", "actions": [{
      "name": "Go!", 
      "integration": {
        "url": "https://somewhere.com?foo=bar"
        "context": {"action": "event_submitted"}
      }
    }]
  }]
}

...但客户端中没有显示任何内容。

JSON有什么问题吗?我尝试过其他方法,比如只返回一条短信。

我想知道,如果我误解了文档,客户端甚至永远不会评估交互式消息触发的 POST 的响应。在那种情况下,我将不得不从我的服务器向 Mattermost API 发出一个新请求,以便进入我工作流程的下一步。对吗?

我误解了 Mattermost 在这种情况下的工作原理。您无法处理来自 Mattermost 的 POST 和 return 另一个交互式按钮,因为 Mattermost 不评估响应主体。您必须向 API(或 Webhook)发出请求才能继续。

可以从 Mattermost 更新 POST 上的附件。文档中的相关部分:How do I manage properties of an interactive message?。解决方案是将新附件包装在 update.props 内,如下所示:

{
    "update": {
        "message": "Updates messsage",
        "props": {
            "attachments": [
                {
                    "text": "Updated attachment text",
                    "actions": [
                        {
                            "name": "Updated action.",
                            "integration": {
                                "url": "...",
                                "context": {
                                    "action": "do something"
                                }
                            }
                        }
                    ]
                }
            ]
        }
    }
}