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.

Las variables declaradas en los botones solo se guardarán una vez el usuario pulse el botón. Las variables declaradas en el apartado variables se guardaran sin considerar que botón haya sido pulsado.

{
      "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