#javascript #amazon-web-services #aws-lambda #slack #slack-api
#javascript #amazon-веб-сервисы #aws-lambda #слабина #slack-api
Вопрос:
Я пытаюсь обработать модальную отправку в slack, но между ними есть некоторые операции с базой данных, которые занимают несколько секунд времени, из-за этой задержки я получаю: We had some trouble connecting error when submitting slack dialog (Slack API)
Я знаю, что в node.js мы можем сделать что-то вроде этого:
app.post('/', async (req, res){
res.status(200).send({text: 'Acknowledgement received !'});
// handle other task
return res.json({done: 'Yipee !'})
})
Но в AWS Lambda-функции я понятия не имею, как я буду обрабатывать этот ответ подтверждения за 3 секунды.
module.exports.events = async (event, context, callback) => {
??? -> How to handle acknowledgement here, it must be handled at top.
// handle task
return {
statusCode: 200,
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({text: 'Done !'})
}
}
Ответ №1:
Если все, что вы хотите сделать, это получить уведомление об успешном вызове, а затем заставить lambda продолжать выполнять свои собственные действия, вы можете вызвать lambda асинхронно, установив для параметра InvocationType значение Event . https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html#API_Invoke_RequestSyntax
Ответ №2:
API Slack может быть сложно обрабатывать с бессерверной архитектурой, поскольку большинству бессерверных реализаций нравится, когда ответ является последним, что они делают, а не первым. Один из подходов состоял бы в том, чтобы обернуть любое требуемое поведение в обещание и разрешить это обещание только после того, как вы справитесь с задачей. Смотрите здесь пример этого.