Mattermost 中忽略了交互式按钮 POST 的响应

问题描述 投票:0回答:3

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

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

mattermost
3个回答
2
投票

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


2
投票

可以从 Mattermost 更新

POST
上的附件。文档中的相关部分:如何管理交互式消息的属性?。解决方案是将新附件包裹在
update.props
内,如下所示:

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

0
投票

经过测试,我认为问题在于你的反应。

您应该这样回复:

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

您可能需要检查https://developers.mattermost.com/integrate/plugins/interactive-messages/

© www.soinside.com 2019 - 2024. All rights reserved.