Попытка отреагировать на Slack в зависимости от ответа другого API

#asynchronous #slack #node-red

#асинхронный #slack #узел-красный

Вопрос:

У меня возникают трудности с реагированием на Slack с использованием Node Red. Ответ должен ожидать ответа другого вызова REST. Я думаю, мне нужно что-то с async await? Но я не могу понять, как создать поток. Вот как должен работать процесс

  1. отправлено интерактивное сообщение Slack
  2. Пользователь нажимает на кнопку (отклонить или одобрить)
  3. в Slack отправляется сообщение о том, что запрос обрабатывается в другой системе
  4. запрос преобразуется и отправляется в другой API / другую систему
  5. Когда ответ получен, он должен отправить ответ обратно в 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 , как только оно закончит обработку другого запроса API

2. конечно, но мне нужно также задать текст «обрабатывается» и другой / 2-й ответ, когда внешний API завершит работу (HTTP 200)

3. первый ответ может содержать текст. Просто ответьте непосредственно на запрос Slack. Обратите внимание, что это сработает, только если первый / прямой ответ на запрос Slack включает HTTP 200. В противном случае Slack сообщит об ошибке тайм-аута.

4. Это может быть проблемой для языков программирования, которые отвечают HTTP 200 только после завершения работы приложения (например, PHP). Хотя понятия не имею, как это работает с node-red.

5. спасибо за ваш комментарий. Я отредактировал сообщение и добавил исходный код nodejs, который я использую в настоящее время (который работает, как описано), и я пытаюсь «преобразовать» в поток с узлами.