Inputs

Estructura

  • msg: Mensaje que se quiera mostrar por pantalla. Debe ser del tipo string

  • type: Tipo de elemento. Debe ser del tipo string

El texto en el campo msg admite formato tipo markdown y reemplazo de variables:

  • \n: Salto de línea

  • ** texto **: Texto en negrita

Si la variable @name está declarada y tiene un valor se reemplazará en el mensaje mostrado.

Tipos de inputs

Input text

Este tipo de input permite al usuario ingresar cualquier tipo de texto, no se validará el formato ni el contenido.

{
    "msg": "Bienvenido al bot de **imbee**, puedes decirnos tu nombre?",
    "type": "input_text"
}

Input email

Este tipo de input permite al usuario ingresar una dirección de correo y se realizará una validación para comprobar el formato. En caso que el formato sea incorrecto se mostrará un mensaje de error por pantalla. No se validará el contenido.

{
    "msg": "Por favor, ingresa tu dirección de correo",
    "type": "input_email"
}

Input telephone

Este tipo de input permite al usuario ingresar un número de teléfono y se realizará una validación para comprobar el formato. Es posible añadir el código de área de la siguientes maneras +34123456789 o 34123456789. No se validará el contenido.

{
    "msg": "Por favor, podrías darnos tu número de teléfono?",
    "type": "input_telephone"
}

Los steps solo admiten un elemento de tipo input por acción. Es decir, cada elemento de tipo input tiene que tener su propio step.

Guardado de variables

Estos elementos permiten guardar el dato ingresado por el usuario en una variable que estará disponible en cualquier punto del flujo del bot.

Para declarar la variable se utiliza @ como clave y el valor se asigna utilizando &. En el ejemplo se ve como se está guardando el dato introducido por el usuario en la variable @name.

{  
  "steps": [
        {
            "name": "welcome",
            "tags": ["init"],
            "actions": [
                {
                    "msg": "Bienvenido al bot de **Imbee**. Puedes decirme tu nombre?",
                    "type": "input_text"
                }
            ],
            "next_step": "step_2",
            "variables": {
                "@name": "&input_text"
            }
        }
    ]
}

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 @name == 'imbee' or @name == 'autobot': return access_ok", 
                "if @name != 'imbee' and @name != 'autobot': return access_error"
                ]

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**. Puedes decirme tu nombre?",
                    "type": "input_text"
                }
            ],
            "next_step": "email_request",
            "variables": {
                "@name": "&input_text"
            }
        },
      	{
            "name": "email_request",
            "tags": null,
            "actions": [
                {
                    "msg": "Perfecto @name, ahora necesitaríamos tu email",
                    "type": "input_email"
                }
            ],
            "next_step": "telephone_request",
            "variables": {
                "@email": "&input_email"
            }
        },
      	{
            "name": "telephone_request",
            "tags": null,
            "actions": [
                {
                    "msg": "Por favor @name, introduce tu teléfono con formato **+34**123456789",
                    "type": "input_telephone"
                }
            ],
            "next_step": "goodbye",
            "variables": {
                "@phone": "&input_telephone"
            }
        },
      	{
            "name": "goodbye",
            "tags": ["finish"],
            "actions": [
                {
                    "msg": "Muy bien @name, ya tenemos los datos necesarios. Te enviaremos un correo a @email y un mensaje de texto a @phone",
                    "type": "text"
                }
            ],
            "next_step": null
        }
    ]
}

Last updated