Crea modelos de conversación

Un modelo de conversación define lo que los usuarios pueden decir a tus Acciones y cómo estas responden a los usuarios. Los componentes básicos del modelo de conversación son intents, tipos, escenas y mensajes. Después de invocar una de tus acciones, Asistente de Google entrega esa acción al usuario, y esta inicia una conversación con él en función de tu modelo de conversación, que consiste en lo siguiente:

  • Solicitudes válidas de los usuarios: Para definir lo que los usuarios pueden decir a tus Acciones, crea una colección de intents que aumente la CLN de Asistente a fin de que pueda comprender las solicitudes específicas de tus Acciones. Cada intent define frases de entrenamiento que describen lo que los usuarios pueden decir para hacer coincidir ese intent. La CLN de Asistente expande estas frases de entrenamiento para incluir frases similares, y la agregación de esas frases da como resultado el modelo de lenguaje del intent.

  • Lógica de acción y respuestas: Las escenas procesan intents, llevan a cabo la lógica necesaria y generan mensajes que se mostrarán al usuario.

Figura 1: Un modelo de conversación consta de intents, tipos, escenas y mensajes que definen la experiencia del usuario. Los intents aptos para la invocación también son válidos para las coincidencias en tus conversaciones.

Define solicitudes de usuario válidas

Para definir lo que los usuarios pueden decir a tus acciones, usa una combinación de intents y tipos. Los intents y tipos de usuario te permiten aumentar la CLN de Asistente con tus propios modelos de lenguaje. Los intents y tipos del sistema te permiten aprovechar los modelos de idioma integrados y la detección de eventos, como los usuarios que quieren salir de la Acción o Asistente cuando no detecta ninguna entrada.

Cómo crear intents de usuario

Los intents de usuario te permiten definir tus propias frases de entrenamiento para definir lo que los usuarios podrían decir a tus acciones. La CLN de Asistente usa estas frases para entrenarse a sí mismo a fin de comprender lo que dicen los usuarios. Cuando los usuarios dicen algo que coincide con el modelo de idioma del intent del usuario, Asistente asocia el intent y notifica a tu Acción para que puedas llevar a cabo la lógica y responder a los usuarios.

Figura 1: Ejemplo de un intent del usuario

Para crear un intent de usuario, haz lo siguiente:

  1. En la pestaña Develop, haz clic en User intents > ⊕ (New intent), especifica un nombre y presiona Intro para crear el intent.
  2. Haz clic en el intent recién creado en el menú de la izquierda. Aparecerá el Editor de intents.
  3. Agrega frases de entrenamiento al intent. Debes agregar tantas frases de entrenamiento como sea posible para entrenar la CLN de Asistente.
  4. Opcional: Anota las frases de entrenamiento para indicarle a la CLN de Asistente que analice y extraiga parámetros escritos de la entrada del usuario que coincidan con un tipo especificado:
    1. Ingresa un nombre para el parámetro en el campo Agregar parámetro nuevo.
    2. Selecciona un tipo de sistema en el menú desplegable o crea un tipo personalizado.
    3. Especifica si el parámetro es una lista. Esto permite que el parámetro recopile varios valores del mismo tipo.
    4. En la sección Agregar frases de entrenamiento, destaca el texto al que deseas aplicar el tipo. Esto le indica a la CLN de Asistente que trate el texto destacado como un parámetro. Si los usuarios dicen algo que coincide con el tipo, la CLN extrae ese valor como parámetro.

Crea intents del sistema

Los intents del sistema te permiten aprovechar los intents con modelos de lenguaje predefinidos para eventos comunes, como usuarios que desean salir de tu Acción o cuando se agota el tiempo de espera de la entrada del usuario. Para crear intents del sistema, haz lo siguiente:

  1. En la pestaña Develop, haz clic en System intents. Hay un conjunto de intents del sistema disponible, como NO_MATCH, NO_INPUT y CANCEL.
  2. Cada intent del sistema contiene sus propios controladores, que puedes personalizar para cada tipo de intent del sistema. Por ejemplo, los intents del sistema te permiten activar eventos de webhook y enviar mensajes estáticos cuando se produce el evento.

Cómo crear tipos personalizados

Los tipos personalizados te permiten crear tu propia especificación de tipo para entrenar la CLN a fin de comprender un conjunto de valores que deben asignarse a una sola clave.

Figura 2: Ejemplo de un tipo personalizado

Para crear un tipo personalizado, sigue estos pasos:

  1. En la pestaña Develop, haga clic en Types > ⊕ (New type).
  2. Selecciona cómo proporcionar los valores de tipo en la sección ¿Qué tipo de valores admiten este tipo?:

    • Las palabras y los sinónimos te permiten asignar varios valores a una sola clave, que se denominan una entrada. Tu tipo puede contener una o más entradas. Si eliges esta opción, también puedes habilitar la siguiente configuración de CLN:
      • Habilitar coincidencia parcial: Esta opción permite que las entradas con más de una palabra coincidan, incluso cuando las palabras se pronuncian en un orden diferente.
      • Aceptar valores desconocidos: Cuando no puedas especificar todos los valores posibles, aceptará palabras o frases desconocidas basadas en datos de entrenamiento de intents y entradas circundantes, como artículos que podrían agregarse a una lista de compras.
    • Las expresiones regulares permiten que el tipo coincida en patrones de expresiones regulares basados en el estándar RE2 de Google.
    • El texto de formato libre permite que el tipo coincida con lo que diga el usuario.
  3. Especifica los valores de tipo en la sección Add entries. Si eliges Texto de formato libre, tu tipo coincide con cualquier texto, por lo que no es necesario que proporciones ninguna entrada.

Cómo compilar lógica de acción y respuestas

La CLN de Asistente hace coincidir las solicitudes de los usuarios con los intents para que la Acción pueda procesarlas en escenas. Las escenas son ejecutores lógicos potentes que te permiten procesar eventos durante una conversación.

Figura 3: Ejemplo de una escena personalizada

Crea una escena

En las siguientes secciones, se describe cómo crear escenas y definir la funcionalidad para la etapa del ciclo de vida de cada escena.

Para crear una escena, haz lo siguiente:

  1. En la pestaña Develop, haz clic en Scenes > ⊕ (New genre), especifica un nombre y presiona Intro para crear una escena.
  2. Haz clic en la escena recién creada en el menú de la izquierda. Aparecerá el Editor de escenas.

Cómo definir la configuración única

Cuando se activa una escena por primera vez, puedes realizar tareas únicas en la etapa Entrar. La etapa de entrada se ejecuta solo una vez y es la única que no se ejecuta dentro del bucle de ejecución de una escena.

  1. Dentro de una escena, haz clic en la etapa Al ingresar para especificar su funcionalidad. En esta etapa, puedes especificar las siguientes funcionalidades:

    • Llamar a tu webhook: Activa un webhook. Consulta la documentación sobre webhooks para obtener más información al respecto.
    • Send prompts: especifica mensajes estáticos al usuario para que sepa cómo continuar con la conversación. Consulta la documentación sobre mensajes para obtener más información sobre cómo especificarlos.
    Figura 4: Ejemplo de la escena en ascenso

Comprobar condiciones

Las condiciones te permiten verificar el relleno de ranuras, el almacenamiento de la sesión, el almacenamiento del usuario y los parámetros de almacenamiento de la casa para controlar el flujo de ejecución de la escena.

  1. Dentro de una escena, haz clic en el ícono + para la etapa Condición (Condition). El editor de condiciones aparecerá a la derecha. En esta etapa, puedes especificar la siguiente funcionalidad:

    • Condición: Especifica la declaración condicional real en la que se basa la lógica. Consulta la documentación de conditions para obtener información sobre la sintaxis.
    • Llamar a tu webhook: Activa un webhook. Consulta la documentación sobre webhooks para obtener más información al respecto.
    • Send prompts: especifica mensajes estáticos que se enviarán al usuario, de modo que sepa cómo continuar con la conversación. Consulta la documentación sobre mensajes para obtener más información sobre cómo especificarlos.
    • Transition: Especifica la escena a la que realizar la transición cuando la declaración condicional es verdadera.
Figura 5: Ejemplo de la etapa de condiciones de una escena

Cómo definir el relleno de espacios

Los espacios te permiten extraer parámetros escritos de la entrada del usuario.

En el editor de escenas, haz clic en el ícono + correspondiente a la etapa Relleno de ranuras. El editor del espacio aparecerá a la derecha. Puedes especificar las siguientes propiedades de una ranura:

  • Slot name:Especifica el nombre de la ranura. Si deseas aprovechar la asignación de valor de ranura, usa el mismo nombre que el parámetro de intent correspondiente.
  • Slot type: Especifica el type de ranura mediante un tipo de sistema o un tipo personalizado.
  • This slot is required: Marca este espacio como obligatorio. Si se habilita, el relleno de ranuras no se completará hasta que se rellene este espacio.
  • Asigna un valor predeterminado a este espacio:Especifica un valor predeterminado para la ranura que se lee desde el parámetro de sesión especificado.
  • Personaliza la escritura de valor de ranura: Especifica un parámetro de sesión para conservar el valor del espacio después de que se completa el relleno de espacios.
  • Validación de ranuras: Activa un webhook cuando se llena una ranura. Esta configuración se aplica a todos los espacios.
  • Llama a tu webhook (habilitado cuando se requiere el espacio necesario): Activa un webhook. Consulta la documentación sobre webhooks para obtener más información al respecto.
  • Send prompts (habilitado cuando se requiere el espacio disponible): Especifica los mensajes estáticos que se enviarán al usuario, de modo que sepa cómo continuar con la conversación. Consulta la documentación sobre mensajes para obtener más información sobre cómo especificarlos.

Para ciertos tipos de espacios (como los relacionados con las transacciones o la participación de los usuarios), aparece una sección adicional en la que puedes configurarlo. La configuración de las ranuras puede cambiar la experiencia de conversación de los usuarios según las propiedades que proporciones.

Para configurar una ranura, proporciona propiedades en un objeto JSON en tu entrega (a la que se hace referencia como un parámetro de sesión) o en el editor de JSON intercalado. Puedes encontrar las propiedades disponibles para cada tipo de espacio en la referencia de JSON de Actions Builder. Por ejemplo, el tipo de ranura actions.type.DeliveryAddressValue corresponde al contenido de referencia de la ranura DeliveryAddressValue.

Figura 6: Ejemplo de la configuración de relleno de espacios de una escena

Asignación de valor de ranura

En muchos casos, una coincidencia de intent anterior puede incluir parámetros que completan de forma parcial o total los valores de ranura de una escena correspondiente. En estos casos, todos los espacios que completan los parámetros del intent se asignan al relleno de espacios de la escena si el nombre del espacio coincide con el del parámetro del intent.

Por ejemplo, si un usuario coincide con un intent para pedir una bebida diciendo "Quiero pedir un café grande de vainilla", las ranuras existentes por tamaño, sabor y tipo de bebida se consideran completadas en la escena correspondiente si esa escena define las mismas ranuras.

Procesar entrada

Durante esta etapa, puedes hacer que la CLN de Asistente haga coincidir la entrada del usuario con los intents. Para determinar el alcance de los intents que coinciden con una escena específica, agrega los intents deseados a la escena. Esto te permite controlar el flujo de conversación si le indicas a Asistente que haga coincidir intents específicos cuando hay escenas específicas activas.

  1. Dentro de una escena, haz clic en el ícono + de la etapa User intent intent (Administración de intent del usuario) o System intent() (Manejo de intents del sistema). El editor del controlador de intents aparece a la derecha. Puedes especificar las siguientes funciones del controlador de intents:

    • Intent: Especifica el intent con el que deseas hacer coincidir dentro de esta escena.
    • Llamar a tu webhook: Activa un webhook. Consulta la documentación sobre webhooks para obtener más información sobre cómo manejar una solicitud de webhook.
    • Send prompts: especifica mensajes estáticos al usuario, de modo que sepa cómo responder. Consulta la documentación sobre mensajes para obtener más información sobre cómo especificarlos.
    • Transition (if applicable): Especifica la escena a la que se realizará la transición cuando coincide el intent especificado.
Figura 7: Ejemplo del controlador de intents del usuario de una escena
Figura 8: Ejemplo del controlador de intents del sistema de una escena