dialogContext.activeDialog всегда неопределен при использовании диалога водопада - PullRequest
0 голосов
/ 04 февраля 2019

Я не знаю, почему поле activeDialog dialogContext всегда не определено.Мне нужно использовать его, чтобы увидеть, находится ли пользователь в середине диалога с водопадом.Вот как выглядит мой бот-код (в машинописном тексте):

export class MyBot{
    constructor(){
        this.dialogState = this.conversationState.createProperty("dialog-state");
        this.dialogs = new DialogSet(this.dialogState);
        this.dialogs.add(new ChoicePrompt("choice-prompt"));

        const steps = [
            step => step.prompt("choice-prompt", "What browser are you currently using?", ["!", "1"]),
            step => step.prompt("choice-prompt", "And what device are you using?", "!", "1")
        ];

        this.dialogs.add(new WaterfallDialog("something", steps));
    }

    public async onTurn(context: TurnContext) {
        const dc = await this.dialogs.createContext(context);
        console.log(dc.activeDialog); // always logs undefined
        return dc.beginDialog("something");
    }
}

1 Ответ

0 голосов
/ 04 февраля 2019

Вам нужно сохранить состояние разговора в конце хода, иначе состояние диалога будет начинаться заново при каждом ходу.Попробуйте добавить это к (или около) концу вашего onTurn метода:

this.conversationState.saveChanges(context);

Кроме того, я бы отметил, что нет смысла возвращать результат вызова dc.beginDialog из onTurn метод, потому что технически не ожидается, что onTurn будет возвращать какое-либо значение.

...