Slack 交互式消息:Slack 没有 POST 响应

Posted

技术标签:

【中文标题】Slack 交互式消息:Slack 没有 POST 响应【英文标题】:Slack Interactive Messages: No POST response from Slack 【发布时间】:2016-12-26 21:18:14 【问题描述】:

我正在构建并发送消息附件:

var zz = 
    "text": "Would you like to play a game??",
    "attachments": [
        
            "text": "Choose a game to play",
            "fallback": "You are unable to choose a game",
            "callback_id": "wopr_game",
            "color": "#3AA3E3",
            "attachment_type": "default",
            "actions": [
                
                    "name": "chess",
                    "text": "Chess",
                    "type": "button",
                    "value": "chess"
                
            ]
        
    ]


web.chat.postMessage(message.source.channel, '', zz);

带有按钮的消息在 Slack 上显示正常,但是当我点击一个按钮时,Slack 没有对我的本地 ngrok 或快速路由的 POST 响应:

app.post('/slackaction', function(req, res)

当其他消息正常发布到此路由时。

点击按钮后,我从 Slack 看到此错误:

"Oh no, something went wrong. Please try that again"

Slack 交互式消息request_url 设置为: https://xxx.ngrok.io/slackaction

【问题讨论】:

尝试使用GET app.get('/slackaction', function(req, res) 试过 GET 但没有改善。仍然收到同样的错误“哦,不,出了点问题。请再试一次” 您用于 chat.postMessage 的令牌是您在 OAuth 授权流程中为您配置请求 URL 的同一应用程序收到的令牌吗? @TaylorSingletary 你是说当有人使用 chat.postMessage API 的测试令牌时,开发/测试交互式消息的响应将不起作用? @hatter123 是的,交互式消息需要在整个端到端过程中使用 Slack 应用程序。消息必须来自同一个应用程序,该应用程序设置为处理由这些消息激活的操作。 【参考方案1】:

感谢 Taylor Singletary 的 cmets 为我指明了正确的方向。

自定义集成的测试令牌或机器人令牌可以发布交互式消息,但您需要一个应用程序来处理它们。

要修复它,您需要在此处将机器人添加到您的应用:https://api.slack.com/apps 然后获取该机器人的访问令牌。

您可以在此处使用 Slack 按钮生成器:https://api.slack.com/docs/slack-button# 获取 OAuth URL 并将其粘贴到浏览器上。

然后从您的应用处理 OAuth 流程,存储访问令牌并将其与 chat.postMessage 一起使用。

那么你应该会在点击消息按钮时收到 POST 请求。

【讨论】:

您的意思是在您的应用中添加一个机器人用户

以上是关于Slack 交互式消息:Slack 没有 POST 响应的主要内容,如果未能解决你的问题,请参考以下文章

通过 Slack 交互按钮上传图片

通过Slack API发送命令

Slack 请求验证:无法使用签名密钥计算匹配的请求摘要

将 botkit 用于 Slack 机器人,有没有办法在对话中更新消息?

团队交流沟通工具 slack 的使用

Intercative message