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!!
Pingback: Como crear un Termostato Inteligente DIY en Home Assistant | Domology 2.0