Crear Menú interactivo en Telegram

Hola a tod@s! Hoy vamos a hablar de como crear un menú interactivo en telegram para poder hablar con nuestro bot en forma de botones interactivos.

En otros tutoriales anteriores vimos como crearnos un bot y integrarlo en HA, pues ahora vamos a aprovechar esas funcionalidades para nuestro HA.

En principio deberíamos tener en nuestro configuration.yaml lo siguiente:

telegram_bot:
  platform: polling
  api_key: xxxxxxxxxxx
  allowed_chat_ids:
    - -xxxxxxxxx --- ##Aquí vendría el ID del grupo en el que estemos con el Bot
    - xxxxxxxxx --- ##Aquí vendría la parte mas importante que seria nuestra ID dentro de telegram, sin ella el bot no va a aceptarnos los comandos que le mandemos.

Generaremos un nuevo yaml en la carperta de automations para empezar a escribir el código del menú.

Dentro del yaml vamos a poner un ejemplo de como arrancaria el menu del bot, en este caso le diriamos que si lee /start que ya saque dicho menú.

- alias: 'Telebot start'
  trigger:
    - platform: event
      event_type: telegram_command
      event_data:
        command: '/start'  ##Aqui es la palabra clave para que saque el menu inicial
  action:
    - service: notify.telegram
      data:
        title: 'Bienvenid@'
        message: 'Panel de Control'
        data:
          inline_keyboard:
            - 'Opcion1:/opcion1, Opcion2:/opcion2' ### Aqui las opciones del menú
            - 'Opcion3:/opcion3, Opcion4:/opcion4' ### con sus respectivos comandos que lee                                                         el bot

Ahora vamos a ver un ejemplo para que cuando clickaramos en la opcion 1 (Seguridad) nos apareciera lo que queremos, en este caso vamos a poner un sub-menu de alarma, que nos diga en que estado se encuentra y si queremos activarla o desactivarla. Este ejemplo serviría para todo lo que quisiéramos hacer, es decir, luces, enchufes, etc…

En este automation el bot leeria el comando /opcion1 y responderia con una serie de acciones:

- id: '4001'
  alias: 'telegram alarm'
  hide_entity: true
  trigger:
    - platform: event
      event_type: telegram_callback
      event_data:
        data: '/opcion1' ##Aqui viene el comando que escucha de las opciones del menú
  action:
    - service: telegram_bot.answer_callback_query
      data_template:
        callback_query_id: '{{ trigger.event.data.id }}'
        message: 'Menú de Seguridad'
    - service: notify.telegram
      data_template:
        title: '*Menú Seguridad*'
        message: >
            {% if is_state("alarm_control_panel.house", "disarmed") %} Alarma Desactivada {% else %} Alarma Activada {% endif %} ##Aquí le decimos que state de que entidad queremos ver
        data:
          inline_keyboard:
            - Away ON:/away_on, Away OFF:/away_off'

Ahora crearemos otro automation para que cuando clickemos sobre la opción de Away ON el bot leyera /away_on y nos activase la alarma.

- id: '4002'
  alias: 'telegram activate alarm'
  hide_entity: true
  trigger:
    - platform: event
      event_type: telegram_callback
      event_data:
        data: '/away_on' ##Aqui viene el comando que escucha de las opciones del menú
  action:
    - service: alarm_control_panel.alarm_arm_away
      entity_id: alarm_control_panel.house
    - service: telegram_bot.answer_callback_query
      data_template:
        callback_query_id: '{{ trigger.event.data.id }}'
        message: 'Control de Alarma'
    - service: notify.telegram
      data_template:
        title: 'Menú Seguridad'
        message: >
            {% if is_state("alarm_control_panel.house", "disarmed") %} Alarma Desactivada {% else %} Alarma Activada {% endif %}
        data:
          inline_keyboard:
            - 'Away ON:/away_on, Away OFF:/away_off'

Los ejemplos son automations que depende de la llamada que hagas por el inline_keyboard y el bot escuche ese comando ejecute uno u otro servicio. Los demás automations serian un copia-pega de estos con las opciones que nosotros queramos.

Es bueno realizarnos un esquema de como queremos crearnos el menú y los sub-menus con las diferentes opciones que vamos a crear antes de empezar, así nos llevaremos menos líos a la hora de empezar a programar.

Os dejo una captura en video de mi menú personalizado y unos ejemplos de automation en yaml.

 

Descargar archivo yaml del automation: automation

Espero que os halla gustado este tutorial y ya sabeis si teneis algun problema me podeis preguntar ya sea por aqui o por el grupo de Telegram!

Saludos!!

También te podría gustar...

Deja un comentario