Если вы не учитываете псевдо-водопады, созданные с помощью WaterfallDialog.createHandler
, то счетчик шагов водопада увеличивается только в WaterfallDialog.dialogResumed
, и это только когдапричина возобновления не reprompt
или back
:
public dialogResumed(session: Session, result: IDialogResult<any>): void {
let step = session.dialogData[consts.Data.WaterfallStep];
switch (result.resumed) {
case ResumeReason.reprompt:
// Ignore re-prompts
return;
case ResumeReason.back:
step--;
break;
default:
step++;
break;
}
this.doStep(session, step, result);
}
Когда вы говорите о звонке next
, я предполагаю, что вы имеете в виду skip
. Стоит отметить, что skip
сама вызывает dialogResumed
:
var skip = (result?: IDialogResult<any>) => {
result = result || <any>{};
if (result.resumed == null) {
result.resumed = ResumeReason.forward;
}
this.dialogResumed(session, result);
};
Кроме того, dialogResumed
будет вызываться только тогда, когда диалоговое окно в верхней части диалогового окна водопада заканчивается, так что вы должнывключите в шаги водопада подсказки, если вы хотите, чтобы водопад продвигался автоматически на последующих шагах.
Поскольку вы упомянули о желании использовать какой-либо оператор трассировки, нет очевидного места для добавления оператора трассировки в ваш собственный код, которыйбудет выполняться всякий раз, когда водопад переходит к следующему шагу. Однако вы можете использовать WaterfallDialog.onBeforeStep
, чтобы включить BeforeWaterfallStepHandler
, который выполняется перед обработкой любого шага, независимо от того, является ли он следующим или нет:
export type BeforeWaterfallStepHandler = (session: Session, step: number, args: any, next: (step: number, args: any) => void) => void;
Обратите внимание, что BeforeWaterfallStepHandler
включает параметр next
, но вызов его просто переходит к следующему обработчику, а не к следующему шагу водопада (хотя вы можете вызывать его с увеличенным значением step
).
Помните, что SDK v3 устарел, и всем рекомендуется как можно скорее перейти на v4. Вам будет все труднее получать какую-либо помощь с v3.