互动按钮POST的响应在Mattermost中被忽略

时间:2019-07-18 14:03:01

标签: mattermost

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

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

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

{ 
  "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发出新请求,以进入工作流程的下一步。正确吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

可以从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"
                                }
                            }
                        }
                    ]
                }
            ]
        }
    }
}