Variables

Declaración de variables

Para declarar una variable se utiliza @ y el nombre que se le quiera dar. Por ejemplo @name.

En el caso de los elementos tipo input, quickReplies, buttonMessage y carousel las variables se declararán en el apartado variables utilizando @ para definir el nombre y & para vincular la variable con el valor del input. A su vez es posible declarar variables y asignarle un valor manualmente

"variables": {
                "@name": "&input_text",
                "@new_var": "Valor definido por el usuario"
            }

Los elementos del tipo quickReplies, buttonMessage y carousel permiten almacenar tanto el label como el payload del boton. También es posible declarar variables en sus botones. Estas variables solo se guardarán una vez el usuario pulse el botón

{
      "name": "rate_us",
      "tags": null,
      "actions": [
        {
          "msg": "Que valoracion le da a este servicio?",
          "type": "buttonMessage",
          "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"
                    ]
}

Variables de entorno

En el apartado ENVIRONMENT_VARIABLES es posible definir variables que estarán disponibles desde el primer step del bot.

Hay valores pre definidos para todos los bots:

  • @user_id: Número de identificación del usuario.

  • @bot_id: Número de identificación del bot.

  • @conversation_id: Número de identificación de la conversación.

  • @__day: Día del mes en número.

  • @__month: Mes de año en número.

  • @__year: Año en formato xxxx

"ENVIRONMENT_VARIABLES": {
    "@counter": "0",
    "@max_attemps": "3"
    "@new_var" : "Valor definido por el usuario"
}

Operaciones con variables

Es posible realizar operaciones aritméticas con variables para, por ejemplo, limitar la cantidad de veces que un usuario puede pasar por un step.

En este ejemplo a la variable @counter se le suma su valor actual + 1.

"variables": {
          "@continue_process_label": "&label",
          "@continue_process_payload": "&payload",
          "@counter": "@counter + 1"
        }

Ejemplo de uso

{
  "steps": [
    {
      "name": "welcome",
      "tags": [
        "init"
      ],
      "actions": [
        {
          "msg": "Bienvenido al bot de **Imbee**.\n Te mostraremos este mensaje @max_attemps veces y luego mostraremos el mensaje de despedida. \n Esta es la vez número @counter que te mostramos este mensaje.",
          "type": "text"
        }
      ],
      "next_step": "checkpoint"
    },
    {
      "name": "checkpoint",
      "tags": null,
      "actions": [
          {
            "msg": "Quieres que te mostremos el primer mensaje otra vez?",
            "type": "quickReplies",
            "buttons": [
                {
                  "label": "Si",
                  "payload": "show_again_yes"
                },
                {
                  "label": "No",
                  "payload": "show_again_no"
                }
              ]
          }
        ],
        "variables": {
          "@continue_process_label": "&label",
          "@continue_process_payload": "&payload",
          "@counter": "@counter + 1"
        },
        "next_step": ["if @counter > @max_attemps or @continue_process_label == 'No': return goodbye", "if @continue_process_label == 'Si': return welcome"]
    },
    {
      "name": "goodbye",
      "tags": [
        "finish"
      ],
      "actions": [
        {
          "msg": "Gracias por participar!",
          "type": "text"
        }
      ],
      "next_step": null
    }
  ],
  "restart_on_refresh": true,
  "ENVIRONMENT_VARIABLES": {
    "@counter": "1",
    "@max_attemps": "3"
  }
}

Last updated