Bot Framework: Как остановить ChoicePrompt от повторного запуска - PullRequest
0 голосов
/ 25 июня 2019

Я разработал веб-страницу через React, в которой взаимодействуют Webchat-Bot и React App.Приложение React содержит таймер, который должен остановить любой диалог, запущенный в данный момент.Это происходит при отправке события через Direct-Line.В любом случае, я получаю нежелательное поведение, что, если логика бота находится в Водопаде, где шаг - это (Выбор-) Подсказка, Вопрос повторяется.(Потому что он не получил требуемый ответ от пользователя).У меня вопрос:

Как мне остановить ChoicePrompt от Reprompting?

Когда бот получает событие 'timeout', он останавливает текущий диалог с помощью await endDialog() и начинает новый диалогкоторый отправляет новые сообщения.После следующего пользовательского ввода появится запрос «До».Таким образом, я предполагаю, что Подсказка в фоновом режиме все еще ждет одного из ответов, и, поскольку он не получил его, он запускается снова или повторяется.

Я попытался установить maxRetries в 0:

var options = {maxRetries: '0'};
await step.prompt(CONFIRM_PROMPT, `text abc..`, ['sure', 'not sure'], options);

фрагмент кода для всплывающего события ..

async onTurn(turnContext) {
const dc = await this.dialogs.createContext(turnContext);
..
if (turnContext.activity.name === 'time-feedback') {
    ..
    await dc.endDialog(); // when a choice-prompt is active, it keeps reprompting, before the next line gets activated. I wish to end the reprompt and current (waterfall dialog) immediately
    await dc.beginDialog(PromptForStartingNew); // start a new waterfall dialog

}
...