Documentación de Oracle Cloud Infrastructure

C Navegación con keepTurn y transition

Utilice distintas combinaciones de las funciones keepTurn y transition para definir cómo continúa la conversación una vez que el componente ha terminado el procesamiento.
invoke: (conversation, done) ==> {
   ...
   conversation.keepTurn(true);
   conversation.transition ("success"); 
   done();
    }
Caso de uso Valores definidos para keepTurn y transition

Respuesta de un componente personalizado que no requiere interacción del usuario.

  • Defina keepTurn en true: conversation.keepTurn(true).

  • Defina transition con una cadena supportedActions (conversation.transition("success")) o sin argumentos (conversation.transition()).

Por ejemplo, un componente personalizado actualiza una variable de contexto con una lista de valores que, a continuación, es mostrada por un componente System.List definido para el estado siguiente en la definición del flujo de diálogo.
invoke: (conversation, done) => {
    const listVariableName = conversation.properties().variableName;
  ...
 
  //
write list of options to a context variable 
   conversation.variable(listVariableName, list);

   //navigate to next state. No user interaction.
   conversation.keepTurn(true);
   conversation.transition();
   done();
 }
Si el componente no pasa al estado siguiente, debe realizar un seguimiento de su propio estado mediante la creación de una variable de tiempo de ejecución con el método conversation.variable (“name”, variable).
Conversación de usuario secuencial en la que el usuario proporciona una entrada, el bot responde, etc.
  • Defina keepTurn en false.

  • Defina transition con una cadena supportActions

Por ejemplo:
conversation.keepTurn(false);
conversation.transition("success");
El bot devuelve el control al usuario sin navegar al siguiente estado del diálogo. Esto permite al componente procesar la entrada del usuario. A continuación, se ofrecen unos ejemplos:
  • Un componente transfiere la entrada del usuario para consultar un motor de búsqueda de backend. Si el chatbot solo puede contener un resultado, pero la consulta devuelve varios aciertos, el componente puede solicitar al usuario más información para filtrar los resultados. En este caso, el componente personalizado sigue manejando la entrada del usuario; mantiene la conversación hasta que el motor de búsqueda devuelve un solo acierto. Una vez satisfecho el sistema de backend, el componente llama a conversation.transition() para pasar al siguiente estado, tal y como se indica en la definición del flujo de diálogo.

  • Un cuestionario, en el que un componente personalizado maneja todas las preguntas y solo pasa al siguiente estado cuando todas ellas tienen respuesta.

  • No llame a transition.

  • Defina keepTurn en false.

Por ejemplo:
conversation.reply("text");
conversation.keepTurn(false);
done();

El componente personalizado entra en un bucle que no puede ser detenido por la entrada de usuario. Por ejemplo, un componente sondea un servicio remoto en busca del estado de un pedido hasta que se devuelve el estado accepted o el componente sufre un timeout. Si el estado accepted no se devuelve tras el quinto sondeo, el componente pasa al estado failedOrder, definido en el flujo de diálogo.

El bot transfiere los usuarios a un agente en directo. En este caso, las respuestas y la entrada del usuario se envían al agente. El componente pasa al siguiente estado definido en el flujo de diálogo cuando el usuario o el agente finalizan la sesión.

  • No llame a transition.

  • Defina keepTurn en true: conversation.keepTurn(true).

Por ejemplo:
conversation.reply("text");
conversation.keepTurn(true);
done();
Llame siempre a keepTurn después de reply y no antes, porque reply establece implícitamente keepTurn en false.