У меня была похожая проблема, когда я регистрировал записи и ответ перезаписывал запрос. Я нашел простой цикл, который позволил мне установить задержку в мс, и он отлично работал для меня. Функция ожидания:
async wait(milliseconds) {
var start = new Date().getTime();
for (var i = 0; i < 1e7; i++) {
if ((new Date().getTime() - start) > milliseconds) {
break;
}
}
}
Так что вы должны иметь возможность вызывать ее следующим образом:
async greetUser(step) {
...
await step.context.sendActivity(firstReply);
await this.wait(2000);
await step.context.sendActivity(secondReply);
}
Теперь это похоже на функцию сна, с которой у меня нет опытас участием. У меня не было никаких проблем с ним, и он вызывается дважды за ход, чтобы зарегистрировать и запрос, и ответ, хотя моя задержка составляет всего 250 мс, а не 2000.
Мне было бы интересно узнать, есть лиэто лучший способ ввести задержку разговора.
Редактировать: Как уже упоминалось в комментариях ниже, ожидание обещания было бы лучшим решением. Но оставив здесь оригинальный ответ на случай, если это кому-то выгодно. Внутри асинхронной функции кажется, что await new Promise(resolve => setTimeout(resolve,2000));
даст те же результаты без недостатков.