1

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

  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 发出一个新请求,才能进入工作流程的下一步。那是对的吗?

4

2 回答 2

2

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

于 2019-07-26T09:21:17.230 回答
1

POST可以从 Mattermost更新附件。文档中的相关部分:如何管理交互式消息的属性?. 解决方案是将新附件包装在里面update.props,如下所示:

{
    "update": {
        "message": "Updates messsage",
        "props": {
            "attachments": [
                {
                    "text": "Updated attachment text",
                    "actions": [
                        {
                            "name": "Updated action.",
                            "integration": {
                                "url": "...",
                                "context": {
                                    "action": "do something"
                                }
                            }
                        }
                    ]
                }
            ]
        }
    }
}
于 2020-04-15T17:28:19.917 回答