【发布时间】:2019-06-13 14:56:42
【问题描述】:
我正在使用 node.js 设置一个 Slack 机器人。事件系统运行良好,并为我提供了来自 Slack 的有效正文的 POST,我能够成功地将消息(交互式和非交互式)发送到 Slack。
但是,Slack 发送给我以响应与交互式消息上的按钮的交互的 POST 的正文是空的。有趣的是,Slack 标头仍然格式正确,尽管它未能通过签名秘密测试(我知道我已正确实施,因为来自 Slack 的事件 POST 通过了它)。
我已经根据 Slack 自己的文档在此处设置了交互的所有内容:https://api.slack.com/messaging/interactivity/enabling。我正在使用 express、request 和 XMLHttpRequest 来接收和发送 HTTP 方法。如果有人遇到过这个问题或有任何见解,那就太好了。谢谢!
这是我的函数从交互中接收 POST 的代码 sn-p:
var express = require('express');
var request = require('request');
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var bodyParser = require('body-parser');
var app = express();
app.use(bodyParser.json());
app.post('/interaction', (req, res) => {
res.sendStatus(200);
var payload = {
"channel": req.body.payload.channel, // Breaks here since req.body is empty
"text": "Selected choice " + req.body.payload.actions.text.text
}
var r = new XMLHttpRequest();
r.onload = () => { var status = request.status; var data = request.responseText; }
r.open("POST", request_url, true);
r.setRequestHeader("Content-Type", "application/json");
r.setRequestHeader("Authorization", "Bearer " + botToken);
r.send(JSON.stringify(payload));
});
【问题讨论】:
-
感谢您在 SO 上发布问题。社区已准备好帮助您找到解决方案,但如果您编写代码添加代码的相关部分以及从 Slack 接收到的消息的示例,这将非常有帮助。 TY