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 arrancaría el menú del bot, en este caso le diríamos que si lee /start que ya saque dicho menú al grupo que tengamos con ese notify. Si queremos que nos lo envíe por privado quitaremos el service notify y lo cambiaremos por:

- service: telegram_bot.send_message

  data_template: target: "{{ trigger.event.data.user_id }}"

  message: "xxxxxxxxx"

- 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:
        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:
        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 haya gustado este tutorial y ya sabéis si tenéis algún problema me podéis preguntar ya sea por aquí o por el grupo de Telegram!

Saludos!!

Un comentario en «Crear Menú interactivo en Telegram»

Deja una respuesta

Síguenos

Siguenos en facebook
Esta web utiliza cookies propias para su correcto funcionamiento. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de sus datos para estos propósitos. Ver
Privacidad