Opciones dinámicas
Una respuesta de opciones presenta a los clientes una lista de opciones que puede seleccionar. Puede utilizar la configuración dinámica para generar la lista a partir de opciones que pueden ser diferentes cada vez.
Las opciones dinámicas se generan a partir de los datos almacenados en una variable, que debe estar disponible para el paso que formula 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 cadenas 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 un array desde una API externa a la que se 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 debe utilizar durante la conversación. (Para más información sobre las extensiones personalizadas, consulte ' Llamada a una extensión personalizada)
Sus acciones también pueden rellenar la variable de origen utilizando expresiones. Por ejemplo, puede utilizar una variable de sesión para crear un carro de la compra que contenga los artículos que el cliente ha decidido comprar. Una acción para eliminar un artículo de la cesta podría entonces utilizar opciones dinámicas para mostrar los artículos de la cesta para que el cliente pueda seleccionar cuál eliminar. (Para obtener más información sobre el uso de expresiones para valores de variables, consulte Uso 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, haga clic en Definir respuesta del cliente.
Elija el tipo de respuesta Opciones.
Haga clic en el conmutador Dinámico.
En el campo Variable de origen, seleccione 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 llamó en un paso anterior).
Opcional: En el campo Opción, escriba una expresión que asigne los elementos de la matriz de origen a las opciones que aparecerán en la lista. 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 números enteros, el valor de cada elemento se muestra automáticamente como una opción. Sin embargo, es posible que desee definir una asignación si desea manipular o reformatear los elementos para que tengan más sentido. Por ejemplo, puede utilizar la expresión "
"Part #" + ${item}" para mostrar números de pieza con el formato "Part #12345.Si los elementos de la matriz son objetos JSON, la asignación predeterminada busca una propiedad denominada "
label" y utiliza su valor (si está presente) como opción. Si el elemento no incluye una propiedad "label", o no desea utilizar el valor de la propiedad "label" como opción, debe escribir una expresión para especificar una asignación. Puede utilizar la notación con puntos para referirse a una propiedad del objeto utilizando su ruta JSON (por ejemplo, '${item}.name).
Opcional: Haga clic en Añadir opción alternativa 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 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 mapas
Supongamos que desea crear una acción que muestre una lista de mascotas disponibles para adopción y pida 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 con el siguiente formato:
[
{
"id": "123",
"name": "Casey",
"breed": "Shetland sheepdog",
"age": 3
},
{
"id": "987",
"name": "Phoebe",
"breed": "chihuahua",
"age": 7
}
]
El esquema de los artículos no incluye una propiedad ' label ', por lo que la asignación por defecto no está disponible. En cambio, puede utilizar una expresión para construir 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 las opciones:

Recuerde que puede utilizar métodos de expresión para manipular los valores de la variable de origen de varias maneras. Por ejemplo, puede tener una acción que los clientes utilizan para seleccionar una tarjeta de crédito para el pago, pero por razones de seguridad no desea mostrar el número completo de la tarjeta. Puede escribir una expresión que utilice el método ' substring() ' para incluir sólo los cuatro últimos dígitos de cada número de tarjeta (por ejemplo, ' "Card ending in " + ${item}.card_number.substring(16, 20)).
Referencia al elemento seleccionado
Después de que el cliente haya seleccionado una de las opciones generadas dinámicamente, probablemente necesitará hacer referencia al elemento seleccionado en un paso posterior.
Si hace referencia a la variable de acción que representa la respuesta del cliente, por defecto se utiliza 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, puede que necesite utilizar un identificador único u otra propiedad que identifique inequívocamente la opción seleccionada.
Por ejemplo, si el cliente selecciona una mascota para mostrar más información sobre ella, probablemente necesite utilizar un identificador único (la propiedad " id " en nuestro ejemplo) para consultar la base de datos, ya que el nombre, la edad y la raza de la mascota podrían no ser únicos. O si el cliente selecciona una tarjeta de crédito entre opciones que sólo muestran los cuatro últimos 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 venga 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 Uso 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 seleccionó 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 siguiente expresión accede a la propiedad "id" del elemento seleccionado en un paso anterior:${step_331}.item.idPuede 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 cualquier formato que necesite para completar cualquier acción requerida.