我正在构建一个斜杠命令。我想象的流程是:
第 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 在这种情况下的工作原理。您无法处理来自 Mattermost 的 POST 并返回另一个交互式按钮,因为 Mattermost 不会评估响应正文。您必须向 API(或 Webhook)发出请求才能继续。
可以从 Mattermost 更新
POST
上的附件。文档中的相关部分:如何管理交互式消息的属性?。解决方案是将新附件包裹在 update.props
内,如下所示:
{
"update": {
"message": "Updates messsage",
"props": {
"attachments": [
{
"text": "Updated attachment text",
"actions": [
{
"name": "Updated action.",
"integration": {
"url": "...",
"context": {
"action": "do something"
}
}
}
]
}
]
}
}
}
经过测试,我认为问题在于你的反应。
您应该这样回复:
{
"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/