Quick Replies
Estructura
msg: Mensaje que se quiera mostrar por pantalla. Debe ser del tipo string.
type: Tipo de elemento. Debe ser del tipo string.
buttons: Declaración de los botones que se mostrarán en pantalla. Debe ser del tipo array de diccionarios.
label: La etiqueta del botón que se mostrará en pantalla. Debe ser del tipo string.
payload: Es el valor asociado al botón. Este valor no se mostrará en pantalla. Debe ser del tipo string.
{
"msg": "Que valoracion le da a este servicio?",
"type": "quickReplies",
"buttons": [
{
"label": "Regular",
"payload": "1_point"
},
{
"label": "Bien",
"payload": "2_point"
},
{
"label": "Excelente",
"payload": "3_point"
}
]
}
Guardado de variables
Este elemento permite guardar datos en variables que estarán disponibles en cualquier punto del flujo del bot. Es posible declarar variables en el apartado variables o en cada botón.
Para declarar una variable se utiliza @ como clave y el valor se referencia utilizando &. Es posible guardar tanto el payload como el label del botón. En el ejemplo se ve como se está guardando el label en la variable @variable_label y el payload en la variable @variable_payload. A su vez es posible declarar variables con un valor definido por el usuario, este valor debe ser del tipo string.
{
"name": "rate_us",
"tags": null,
"actions": [
{
"msg": "Que valoracion le da a este servicio?",
"type": "quickReplies",
"buttons": [
{
"label": "Regular",
"payload": "1_star",
"@review": "Hemos recibido una valoración de una estrella"
},
{
"label": "Bien",
"payload": "2_star",
"@review": "Hemos recibido una valoración de dos estrellas"
},
{
"label": "Excelente",
"payload": "3_star",
"@review": "Hemos recibido una valoración de tres estrellas"
}
]
}
],
"variables": {
"@variable_payload": "&payload",
"@variable_label": "&label",
"@variable_extra": "Valor definido por el usuario"
},
"next_step" : [
"if @variable_payload == '1_star': return bad_step",
"if @variable_payload == '2_star': return medium_step",
"if @variable_payload == '3_star': return good_step"
]
}
Los steps solo admiten un elemento de tipo quickReplies por acción. Es decir, cada elemento de tipo quickReplies tiene que tener su propio step.
Next step
El campo next_step es indispensable para el flujo del bot, en el caso de los elementos del tipo input, quickReplies, buttonMessage, carousel y webservice puede ser del tipo string o un array de strings con condicionales.
Si solo se indica un string el bot irá al próximo step sin importar el botón que se haya pulsado
"next_step": "your_step_name_here"
En cambio, es posible variar el flujo del bot dependiendo de la interacción del usuario. Para esto es necesario declarar el valor del next_step como un array de strings de uno o mas elementos. La estructura del condicional debe ser: if nombre_de_la_variable == 'valor_a_comparar' : return nombre_del_step
"next_step" : [
"if @variable_payload == '1_star': return bad_step",
"if @variable_payload == '2_star': return medium_step",
"if @variable_payload == '3_star': return good_step"
]
Las condiciones lógicas admitidas son:
== : Igual a
!= : Distinto a
and == Y
or == O
Si el valor a comparar es un string se deberán incluir comillas simples
if nombre_de_la_variable == 'valor_a_comparar_string' : return nombre_del_step
En cambio si el valor a comparar es un integer NO se deberán incluir comillas simples
if nombre_de_la_variable == 10 : return nombre_del_step
Ejemplo de uso
{
"steps": [
{
"name": "welcome",
"tags": [
"init"
],
"actions": [
{
"msg": "Bienvenido al bot de **Imbee**.",
"type": "input_text"
}
],
"next_step": "rate_us",
"variables": {
"@name": "&input_text"
}
},
{
"name": "rate_us",
"tags": null,
"actions": [
{
"msg": "Que valoracion le das a este servicio?",
"type": "quickReplies",
"buttons": [
{
"label": "Regular",
"payload": "1_star",
"@review": "Valoración de una estrella"
},
{
"label": "Bien",
"payload": "2_star",
"@review": "Valoración de dos estrellas"
},
{
"label": "Excelente",
"payload": "3_star",
"@review": "Valoración de tres estrellas"
}
]
}
],
"variables": {
"@variable_payload": "&payload",
"@variable_label": "&label",
"@variable_extra": "Valor definido por el usuario"
},
"next_step": [
"if @variable_payload == '1_star': return bad_step",
"if @variable_payload == '2_star': return medium_step",
"if @variable_payload == '3_star': return good_step"
]
},
{
"name": "bad_step",
"tags": null,
"actions": [
{
"msg": "Estamos en el step con nombre **bad_step**",
"type": "text"
}
],
"next_step": "goodbye"
},
{
"name": "medium_step",
"tags": null,
"actions": [
{
"msg": "Estamos en el step con nombre **medium_step**",
"type": "text"
}
],
"next_step": "goodbye"
},
{
"name": "good_step",
"tags": null,
"actions": [
{
"msg": "Estamos en el step con nombre **good_step**",
"type": "text"
}
],
"next_step": "goodbye"
},
{
"name": "goodbye",
"tags": [
"finish"
],
"actions": [
{
"msg": "Gracias por participar. Este es tu resumen: \n- Botón pulsado por el usuario: @variable_label \n- Variable declarada en el botón pulsado: @review \n- Variable declarada en el apartado variables: @variable_extra",
"type": "text"
}
],
"next_step": null
}
]
}


Last updated