Opciones dinámicas
Una respuesta de opciones presenta a los clientes una lista de opciones que puede seleccionar. Puede utilizar el valor dynamic para generar la lista a partir de opciones que pueden ser diferentes cada vez.
Las opciones dinámicas se generan basándose en los datos almacenados en una variable, que debe estar disponible para el paso que hace la pregunta. La variable de origen debe contener una matriz de valores, cada uno de los cuales representa una
de las opciones que se presentarán al cliente. Los elementos de la matriz pueden ser valores simples como series o números (por ejemplo, [ "Raleigh", "Boston", "New York" ]
) u objetos JSON compuestos.
Un escenario común para las opciones dinámicas es cuando se devuelve una matriz desde una API externa a la que llama utilizando una extensión personalizada. Por ejemplo, puede utilizar una extensión personalizada para recuperar una lista de tarjetas de crédito asociadas a la cuenta de un cliente. A continuación, puede utilizar opciones dinámicas para preguntar al cliente qué tarjeta utilizar durante la conversación. (Para obtener más información sobre las extensiones personalizadas, consulte Llamada a una extensión personalizada.)
Las acciones también pueden llenar la variable de origen utilizando expresiones. Por ejemplo, puede utilizar una variable de sesión para crear un carro de la compra que contenga artículos que el cliente haya decidido comprar. Una acción para eliminar un artículo del carro de la compra podría utilizar opciones dinámicas para mostrar los artículos en el carro de la compra para que el cliente pueda seleccionar cuál desea eliminar. (Para obtener más información sobre cómo utilizar expresiones para valores de variable, consulte Utilización de una expresión para asignar un valor a una variable de sesión.)
Definición de opciones dinámicas
Para definir una respuesta de cliente de opciones dinámicas:
-
En un paso, pulse Definir respuesta del cliente.
-
Elija el tipo de respuesta Opciones.
-
Pulse el conmutador Dinámico.
-
En el campo Variable de origen, elija la variable que contiene la matriz que define las opciones dinámicas (por ejemplo, la variable que contiene la respuesta de una extensión personalizada que ha llamado en un paso anterior).
-
Opcional: En el campo Opción, escriba una expresión que correlacione los elementos de la matriz de origen con las opciones que se listarán. Esta expresión sirve como plantilla que convierte cada elemento de la matriz en un valor significativo que se mostrará al cliente. En esta expresión, utilice la variable dinámica
${item}
para representar el elemento.En algunas situaciones, no es necesario especificar una expresión:
-
Si los elementos de la matriz son valores simples como cadenas o enteros, el valor de cada elemento se muestra automáticamente como una opción. Sin embargo, es posible que desee definir una correlación si desea manipular o volver a formatear los elementos para que sean más significativos. Por ejemplo, puede utilizar la expresión
"Part #" + ${item}
para mostrar números de pieza utilizando el formatoPart #12345
. -
Si los elementos de la matriz son objetos JSON, la correlación predeterminada busca una propiedad denominada
label
y utiliza su valor (si está presente) como opción. Si el elemento no incluye una propiedadlabel
, o no desea utilizar el valor de la propiedadlabel
como opción, debe escribir una expresión para especificar una correlación. Puede utilizar la notación de puntos para hacer referencia a una propiedad del objeto utilizando su vía de acceso JSON (por ejemplo,${item}.name
).
-
-
Opcional: Pulse Añadir opción de reserva para incluir una opción estática, como
None of the above
, si las opciones no son las que desea el cliente. A continuación, puede añadir un paso que esté condicionado a esta opción estática para proporcionar más ayuda. Para añadir la condición, escriba una expresión como${step_id}.value == "None of the above"
.
Ejemplos de correlación
Supongamos que desea crear una acción que muestre una lista de mascotas disponibles para adopción y solicite al cliente que seleccione una mascota para ver más información sobre ella. La variable de origen contiene una matriz de una extensión personalizada en el formato siguiente:
[
{
"id": "123",
"name": "Casey",
"breed": "Shetland sheepdog",
"age": 3
},
{
"id": "987",
"name": "Phoebe",
"breed": "chihuahua",
"age": 7
}
]
El esquema para los elementos no incluye una propiedad label
, por lo que la correlación predeterminada no está disponible. En su lugar, puede utilizar una expresión para crear una etiqueta compleja que incluya datos tomados de varias
propiedades diferentes. Por ejemplo, puede utilizar la expresión ${item}.name + " (" + ${item}.breed + ", age " + ${item}.age + ")"
para definir las etiquetas de opción:
Recuerde que puede utilizar métodos de expresión para manipular valores de la variable de origen de varias maneras. Por ejemplo, es posible que tenga una acción que los clientes utilizan para seleccionar una tarjeta de crédito para el pago,
pero por motivos de seguridad no desea mostrar todo el número de tarjeta. Puede escribir una expresión que utilice el método substring()
para incluir sólo los últimos cuatro dígitos de cada número de tarjeta (por ejemplo, "Card ending in " + ${item}.card_number.substring(16, 20)
).
Cómo hacer referencia al elemento seleccionado
Después de que el cliente haya seleccionado una de las opciones generadas dinámicamente, probablemente tendrá que hacer referencia al elemento seleccionado en un paso posterior.
Si hace referencia a la variable de acción que representa la respuesta del cliente, el valor predeterminado es utilizar el valor de la opción seleccionada. Sin embargo, en algunas situaciones, es posible que no desee utilizar el mismo valor que se utilizó para mostrar la opción al cliente. En su lugar, es posible que tenga que utilizar un identificador exclusivo u otra propiedad que identifique sin ambigüedades la opción seleccionada.
Por ejemplo, si el cliente selecciona una mascota sobre la que mostrar más información, es probable que necesite utilizar un identificador exclusivo (la propiedad id
de nuestro ejemplo) para consultar la base de datos, ya que el
nombre, la edad y la raza de la mascota podrían no ser exclusivos. O si el cliente está seleccionando una tarjeta de crédito de las opciones que muestran sólo los últimos cuatro dígitos, tendrá que utilizar el número completo de la tarjeta
de crédito para acceder a los detalles de la cuenta o completar una transacción.
En esta situación, puede escribir una expresión para acceder a las propiedades originales del elemento seleccionado:
-
Cree o edite un paso que viene después del paso en el que el cliente selecciona entre las opciones dinámicas.
-
En la sección Valores de variable, escriba una expresión para asignar un valor a una variable de sesión. (Para obtener más información, consulte Utilización de una expresión para asignar un valor a una variable de sesión.)
-
En el editor de expresiones, escriba un signo de dólar (
$
) y, a continuación, seleccione el paso en el que el cliente ha seleccionado la opción dinámica. -
Utilice el nombre de propiedad
item
para representar el elemento seleccionado y la notación de puntos para acceder a sus propiedades. Por ejemplo, la expresión siguiente accede a la propiedadid
del elemento seleccionado en un paso anterior:${step_331}.item.id
Puede utilizar una expresión compleja para construir un valor utilizando varias propiedades del elemento seleccionado. Por ejemplo, puede utilizar una expresión como
${step_123}.item.firstname + " " + ${step_123}.item.lastname
para construir el nombre completo de una persona. Utilice la expresión para definir el valor en el formato que necesite para completar cualquier acción necesaria.