Compartir a través de


IDialogWaterfallStep interface

Firma para funciones pasadas como pasos para DialogAction.waterfall(). Las cascadas le permiten solicitar a un usuario información mediante una secuencia de preguntas. Cada paso de la cascada puede ejecutar una de las integradas, iniciar un nuevo cuadro de diálogo llamando a session.beginDialog(), avanzar al siguiente paso de la cascada manualmente mediante skip()o finalizar la cascada.

Cuando se llama a un cuadro de diálogo o un símbolo del sistema integrado desde un paso en cascada, los resultados de ese diálogo o mensaje se pasarán a través del parámetro results al siguiente paso de la cascada. Los usuarios pueden decir cosas como "nevermind" para cancelar las indicaciones integradas, por lo que debe protegerse de eso al menos comprobando si hay results.response antes de continuar. Se puede determinar una extensión más detallada de por qué se continúa la cascada examinando el código de devuelto para results.reanudado.

Puede avanzar manualmente al siguiente paso de la cascada mediante la función skip() pasada. Llamar a skip({ response: "some text" }) con un de IDialogResult le permite imitar con mayor precisión los resultados de un mensaje integrado y puede simplificar la lógica general de cascada.

Puede finalizar una cascada temprano pasando por cada paso de la cascada mediante llamadas a skip() o simplemente no iniciando otro mensaje o cuadro de diálogo.

nota: Cascadas tienen un último paso oculto que finalizará automáticamente el cuadro de diálogo actual si llama a un mensaje o diálogo desde el último paso. Esto es útil en el que tiene una pila profunda de diálogos y desea que una llamada a session.endDialog() del último elemento secundario de la pila para finalizar toda la pila. El cierre del último elemento secundario desencadenará que todos sus elementos primarios se muevan a este paso oculto, lo que pondrá en cascada el cierre hasta arriba de la pila. Este suele ser un comportamiento deseado, pero si quiere evitarlo o detenerlo en algún lugar del centro, deberá agregar un paso al final de la cascada que no haga nada o llame a algo como session.send() que no va a avanzar hacia delante de la cascada.