Mensajes

Los mensajes definen la manera en que tu acción procesa las respuestas a los usuarios y cómo la acción les solicita continuar. A medida que compilas tu acción, puedes agregar mensajes a las invocaciones y a varios lugares dentro de las escenas. Los mensajes pueden ser tan simples como una respuesta de texto o voz, o pueden ser más complejos y incluir contenido enriquecido, como tarjetas, imágenes y tablas.

Tipos de respuesta

Para cada mensaje, seleccionas entre una variedad de tipos de respuesta atractivas para que Asistente las presente a los usuarios:

  • Respuestas simples: Las respuestas simples toman la forma de una burbuja de chat visualmente y usan texto a voz (TTS) o lenguaje de marcación de síntesis de voz (SSML) para el sonido. Las respuestas simples son las únicas respuestas admitidas en todos los tipos de dispositivos.
  • Respuestas enriquecidas: Contienen elementos visuales o funcionales que mejoran las interacciones de los usuarios con tus Acciones. Con las respuestas enriquecidas, también puedes mostrar datos tabulares o reproducir contenido de audio de formato más largo.
  • Respuestas de selección visual: Las respuestas de selección visual proporcionan una interfaz visual para que los usuarios elijan entre varias opciones que se diferencian más fácilmente por su título o una imagen.
  • Respuestas multimedia: Las respuestas multimedia permiten que tus acciones reproduzcan contenido de audio de mayor duración que el SSML y proporcionan un componente visual con controles multimedia.
  • Interactive Canvas: Interactive Canvas renderiza las respuestas como vistas web en pantalla completa y funciona como una app web interactiva que Asistente envía como respuesta al usuario en una conversación. Canvas usa un formato de instrucción ligeramente diferente para adaptarse a los estándares web como HTML, CSS y JavaScript.

Cada uno de estos tipos de respuesta usa el mismo formato de instrucción base y tiene acceso a las mismas funciones generales que se describen a continuación.

Formato de un mensaje

En el proyecto de Acciones, defines los mensajes en formato YAML o JSON. Cada mensaje puede contener hasta dos respuestas simples y, de manera opcional, definir una respuesta enriquecida. Las respuestas se definen de las siguientes maneras:

  • first_simple: Es la respuesta inicial de texto o voz (simple) que se enviará al usuario.
  • content: Es el contenido de respuesta enriquecida complementaria para enviar después de respuestas simples.
  • last_simple Es la respuesta final de texto o voz (simple) para enviar al usuario.
  • canvas: Hace referencia a una app web que se integra con Interactive Canvas.

De forma predeterminada, las solicitudes se agregan entre sí en el orden anterior en una cola de mensajes. Antes de que el usuario pueda responder, Asistente le presenta todos los mensajes de la cola.

Además, le brindas flexibilidad a la instrucción a través de las siguientes funciones:

  • Candidatos: Los candidatos te permiten definir respuestas según las capacidades del dispositivo del usuario. Por ejemplo, puedes hacer que Asistente muestre respuestas enriquecidas solo cuando un usuario interactúa con tu Acción en un dispositivo compatible con pantallas.
  • Variantes: Las variantes son variantes alternativas de un solo mensaje. Por ejemplo, puedes hacer que Asistente elija entre cinco variantes diferentes de mensajes de bienvenida cada vez que un usuario invoque tu acción.
  • Sugerencias: Las sugerencias proporcionan chips de sugerencias a los usuarios de dispositivos con pantallas cuando Asistente muestra el mensaje.

Un mensaje predeterminado usa un candidato, una variante y una respuesta first_simple.

Candidatos

En un mensaje, el objeto candidates te permite definir respuestas según las capacidades del dispositivo del usuario. Por ejemplo, puedes hacer que Asistente muestre respuestas enriquecidas solo cuando un usuario interactúa con tu Acción en un dispositivo compatible con pantallas. Para definir los tipos de dispositivos en los que Asistente puede mostrar un candidato, usa la propiedad selector del objeto candidates.

En el siguiente ejemplo, la propiedad selector contiene la información de la capacidad del dispositivo. Las solicitudes configuradas en el primer candidato se envían a los usuarios en un dispositivo que puede renderizar respuestas enriquecidas. El segundo candidato contiene mensajes para los usuarios que solo pueden recibir respuestas de texto y voz.

YAML

candidates:
  - selector:
      surface_capabilities:
        capabilities:
          - RICH_RESPONSE
    first_simple:
      variants:
        - speech: Here's a simple message.
    content:
      card:
        title: Image card title
        text: Some details about the image
        image:
          url: 'https://www.example.com/image/'
  - first_simple:
      variants:
        - speech: Text explains what the image might have shown in more detail.
    

JSON

{
  "candidates": [{
    "selector": {
      "surface_capabilities": {
        "capabilities": ["RICH_RESPONSE"]
      }
    },
    "first_simple": {
      "variants": [{
        "speech": "Here's a simple message."
      }]
    },
    "content": {
      "card": {
        "title": "Image card title",
        "text": "Some details about the image",
        "image": {
          "url": "https://www.example.com/image/"
        }
      }
    }
  }, {
    "first_simple": {
      "variants": [{
        "speech": "Text explains what the image might have shown in more detail."
      }]
    }
  }]
}
    

Puedes proporcionar uno o más requisitos de capacidad para un candidato determinado. En la siguiente lista, se describe cada uno de los requisitos de capacidad disponibles:

  • SPEECH: El dispositivo puede hablar con el usuario mediante texto a voz o SSML.
  • RICH_RESPONSE: El dispositivo puede mostrar respuestas enriquecidas, como tarjetas, listas y tablas.
  • LONG_FORM_AUDIO: El dispositivo puede reproducir contenido multimedia de audio de larga duración, como música y podcasts.
  • INTERACTIVE_CANVAS: El dispositivo puede mostrar una respuesta de Interactive Canvas.
  • WEB_LINK: El dispositivo puede usar vínculos web en respuestas enriquecidas para abrir un navegador web.
  • HOME_STORAGE: El dispositivo puede almacenar datos en el almacenamiento de la casa y acceder a ellos.

Variantes

Las variantes proporcionan una manera de definir múltiples versiones de una respuesta. Cuando Asistente envía el mensaje a un usuario, se elige una de las variantes al azar. Como práctica recomendada en el diseño de conversaciones, proporciona a los usuarios respuestas alternativas cuando conversan con tu Acción.

Por ejemplo, proporciona diferentes variantes de mensajes de bienvenida para que los usuarios no escuchen la misma respuesta cada vez que invoquen tu acción:

YAML

candidates:
  - first_simple:
      variants:
        - speech: Hello.
        - speech: Hi there.
        - speech: Welcome.
    

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Hello."
      },{
        "speech": "Hi there."
      },{
        "speech": "Welcome."
      }]
    }
  }]
}
    

Sugerencias

Ejemplo de chips de sugerencias en una pantalla inteligente

Las sugerencias proporcionan chips de sugerencias a los usuarios de dispositivos con pantallas cuando Asistente muestra el mensaje. Usa chips de sugerencias para indicar las respuestas del usuario a fin de continuar o reorientar la conversación. Cuando se presiona, un chip de sugerencias devuelve el texto mostrado en la conversación, como si el usuario lo hubiera escrito.

Puedes tener un máximo de 8 sugerencias en un solo mensaje, cada una con una longitud máxima de 25 caracteres de texto simple.

Para agregar una sugerencia, proporciona un objeto Suggestion que contenga cada sugerencia en un campo title independiente. Cada título debe ser único en el conjunto de chips de sugerencias. En Actions Builder, este objeto se representa en YAML y JSON como suggestions.

Por ejemplo, puedes incluir "Sí" y "No" sugerencias junto a una pregunta:

YAML

candidates:
  - first_simple:
      variants:
        - speech: 'Welcome, do you want to play a game?'
    suggestions:
      - title: 'Yes'
      - title: 'No'
    

JSON

{
  "candidates": [{
    "first_simple": {
      "variants": [{
        "speech": "Welcome, do you want to play a game?"
      }]
    },
    "suggestions": [{
      "title": "Yes"
    }, {
      "title": "No"
    }]
  }]
}