#asynchronous #slack #node-red
#асинхронный #slack #узел-красный
Вопрос:
У меня возникают трудности с реагированием на Slack с использованием Node Red. Ответ должен ожидать ответа другого вызова REST. Я думаю, мне нужно что-то с async await? Но я не могу понять, как создать поток. Вот как должен работать процесс
- отправлено интерактивное сообщение Slack
- Пользователь нажимает на кнопку (отклонить или одобрить)
- в Slack отправляется сообщение о том, что запрос обрабатывается в другой системе
- запрос преобразуется и отправляется в другой API / другую систему
- Когда ответ получен, он должен отправить ответ обратно в Slack.
Кто-нибудь может мне помочь в этом? (Я пытаюсь изучить узел Red)
Nodejs, который делает именно то, что я намереваюсь сделать:
app.post('/review', urlencodedParser, async (req,res) => {
try{res.send(`Contract is currently being processed`)
var request = JSON.parse(req.body.payload);
var slackmessage = await SlackContractReviewContent(request);
var response = await sendContractReview(slackmessage.entity, slackmessage.status);
var Slackresponse = await sendSlackDelayedMessage(slackmessage,response);
console.log(Slackresponse);
res.end()
} catch (err) {
console.log(`Could not be processed!`);
res.end();
};
Комментарии:
1. в общем: ваше приложение должно отвечать напрямую с помощью HTTP 200 (шаг 3) и отправлять полный ответ (шаг 5) на
response_url
, как только оно закончит обработку другого запроса API2. конечно, но мне нужно также задать текст «обрабатывается» и другой / 2-й ответ, когда внешний API завершит работу (HTTP 200)
3. первый ответ может содержать текст. Просто ответьте непосредственно на запрос Slack. Обратите внимание, что это сработает, только если первый / прямой ответ на запрос Slack включает HTTP 200. В противном случае Slack сообщит об ошибке тайм-аута.
4. Это может быть проблемой для языков программирования, которые отвечают HTTP 200 только после завершения работы приложения (например, PHP). Хотя понятия не имею, как это работает с node-red.
5. спасибо за ваш комментарий. Я отредактировал сообщение и добавил исходный код nodejs, который я использую в настоящее время (который работает, как описано), и я пытаюсь «преобразовать» в поток с узлами.