Я устанавливаю бот Slack, используя node.js. Система событий работает отлично и дает мне POST с действительными телами из Slack, и я могу успешно отправлять сообщения (как интерактивные, так и нет) в Slack.
Однако, POSTs Slack отправляет мне в ответ на взаимодействие с кнопками на интерактивных сообщениях пустое тело. Интересно, что заголовки Slack все еще хорошо сформированы, хотя он не проходит секретный тест подписи (который, как я знаю, я реализовал правильно, так как события POST из Slack проходят его).
Я настроил все для взаимодействий в соответствии с собственной документацией Слэка: https://api.slack.com/messaging/interactivity/enabling. Я использую экспресс, запрос и XMLHttpRequest для получения и отправки методов HTTP. Если кто-то сталкивался с этой проблемой или имел какие-то идеи, это было бы здорово. Спасибо!
Вот фрагмент кода для моей функции, получающей сообщения POST от взаимодействий:
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));
});