Как выполнить длинную задачу в Microsoft Bot Framework

У меня проблема в Telegram, когда для выполнения какого-либо шага из моего диалога требуется более 15 секунд. Описание ошибки: Время ожидания POST для name_of_bot истекло через 15 секунд.

Я нашел возможность сделать это с помощью функции проактивных сообщений из фреймворка, но я не хотел бы создавать целую архитектуру, основанную на проактивных сообщениях. Это кажется неправильным.

Итак, как лучше всего выполнять длительные задачи в Microsoft Bot Framework без тайм-аута?


person Antônio Flávio    schedule 06.09.2019    source источник
comment
Кажется, мы нашли решение. Мы удалили асинхронность из действия контроллера, которое является конечной точкой бота. Тайм-аут остановлен.   -  person Antônio Flávio    schedule 10.09.2019


Ответы (1)


К сожалению, из-за текущей архитектуры Bot Framework вам необходимо использовать проактивное сообщение, если процесс ответа на входящую активность займет больше 15 секунд.

Пакет SDK Bot Framework версии 4 (узел)

this.onMessage(async context => {
  const conversationReference = TurnContext.getConversationReference(context.activity);
  context.adapter.continueConversation(conversationReference, async turnContext => {
    await new Promise(resolve => setTimeout(resolve, 20000));
    await turnContext.sendActivity('Hello, World!');
  });
});
person tdurnford    schedule 09.09.2019