Всем доброго! Ври написании небольшого бота для Viber столкнулся с проблемой при вызове колбека
onFinish в методе
onConversationStarted
https://github.com/Viber/viber-bot-node#Conversati...
В принципе, код из примера работает
bot.onConversationStarted((userProfile, isSubscribed, context, onFinish) =>
onFinish(new TextMessage(`Hi, ${userProfile.name}! Nice to meet you.`)));
но если перед
onFinish попытатся сделать какой-то асинхронный запрос к БД или куда-то еще, получаются проблемы
bot.onConversationStarted((userProfile, isSubscribed, context, onFinish) =>
doSomeRequest(context)
.then(responseData =>{
onFinish(new TextMessage(`Hi! here is data from responseData ${responseData}`))
})
);
В таком случае после первого запуска бота (не сервере)
onFinish не срабатывает (бот не отправляет сообщения), но если потом попытатся обратится к боту,
onFinish уже срабатывает (бот отправил сообщения).
Дальше еще интереснее, наблюдаю что-то вроде кеша.
Когда
onFinish все же сработал, бот отправил сообщения, получается, что бот отправил сообщения со страрыми данными, то есть данными предыдущего сообщения.
То есть если в
onConversationStarted в текущей сесии/запросе к боту в параметр
context, скажем, было передано
2, далее это значения было передано в запрос
doSomeRequest. и в ответе
responseData получено что-то типа
responseData2, то если перед этим был запрос к боту, но с
context, равным
1, то вопреки тому, что в даном запросе мы работаем с входными даными, значения
context, которые сейчас равны
2, то
onFinish и, соответствено, сообщения в боте, я получаю с результатом
1.
Подскажите, пожалуйста, может кто-то уже сталкивался с подобным?