Pour l’instant oui. J’ai les retours à mes boutons. Et les boutons s’effacent.
Il me reste à réussir à lancer l’interaction à l’aide d’une commande directement depuis telegram et non depuis l’interface HomeAssistant.
Un grand merci pour ton aide et ton temps @Argonaute.
Je viendrais partager mon avancement.
Bonjour à tous.
Je suis également en train de passer mes notifications sur Telegram et je ne trouve pas de réponse à un de mes problèmes.
j’ai une Led capricieuse qui a tendance à s’allumer inopinément lors de fluctuations sur le réseaux électrique. J’avais donc mis en place une notification HA avec un timeout ou je demandais simplement si on voulait laisser la lumière allumée et si pas de réponse dans la minute alors, on vire la notif et on éteint la lampe.
Mais j’ai l’impression que l’utilisation de Telegram ne permet pas ce comportement, je me trompe ?
bonjour,
ce n’est pas télégram qui permet cela, mais l’automatisation que tu va faire, ou le nodered.
Télégram ne va que t’avertir et /ou te poser des questions sur l’action qu’il doit lancer ou pas.
Ouai en creusant un peu, j’ai cru comprendre qu’il fallait créer un minuteur à la main avec des inputs pour reproduire le comportement des timeout natif de HA. Ça complique la chose mais je devrais m’en sortir !
Merci pour la réponse ![]()
L’intéraction avec Telegram a progressé et j’arrive à initier le dialogue depuis télégram.
Voici donc la partie pour initier le dialogue et le traitement d’une réponse.
### Start Keyboard ###
- id: telegram-start
alias: 'Telegram Start Command'
initial_state: 'on'
trigger:
platform: event
event_type: telegram_command
event_data:
command: '/bonjour'
action:
- service: notify.telegram_bot
data:
message: >
{{ [
"Hi",
"Salut",
"Oui chef!",
] | random }}
data:
inline_keyboard:
- 'Start:/start, Météo:/meteo'
- alias: Choix météo
description: Demande la météo pour quelle date
trigger:
- platform: event
event_type: telegram_callback
event_data:
command: /meteo
action:
- service: telegram_bot.edit_replymarkup
data:
message_id: "{{ trigger.event.data.message.message_id }}"
chat_id: !secret id_telegram
inline_keyboard:
- service: notify.telegram_bot
data:
title: 'Météo :'
message: Pour quel jour souhaitez-vous connaitre le temps ?
data:
inline_keyboard:
- Aujourd'hui:/meteojour, Demain:/meteodemain
initial_state: true
mode: single
Si ca peut aider.
Exemple d’une automatisation qui gére l’affichage d’un menu, d’un sous-menu (cover).
La plupart des actions du menu sont exécutées directement dans cette automatisation.
Quelques-une sont externes.
Je peux facilement visualiser mon portail de telegram (et l’ouvrir éventuellement).
Je peux voir ma localisation…
Marche parfaitement.
Si ça peut vous aider …
# 20240208
# Avec visu_portail et where
alias: telegram_toutes_reponses
description: traite les demandes reçues par telegram (menu, sous-menu...)
trigger:
- platform: event
event_type: telegram_command
action:
- variables:
notes: variables deplacer dans la partie cover
- service: notify.telegram_me
data:
message: |
*Message envoyé:*
_Commande:_ {{ trigger.event.data.command }}
_Args:_{{ trigger.event.data.args }}
- choose:
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/start' }}"
sequence:
- service: notify.telegram_me
data:
message: Bonjour *Jean-Mi* /ha
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/ha' }}"
sequence:
- service: notify.telegram_me
data:
message: commande reconnue /ha (Menu)
data:
keyboard:
- /fin, /plafond, /portail,
- /entree, /cover, /meuble
- /visu_portail, /where, /aide
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/fin' }}"
sequence:
- service: notify.telegram_me
data:
message: commande reconnue /fin executée ici
data:
keyboard: []
inline_keyboard: []
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/plafond' }}"
sequence:
- service: notify.telegram_me
data:
message: commande connue /plafond exécutée par cde
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/meuble' }}"
sequence:
- service: notify.telegram_me
data:
message: commande connue /meuble exécutée par cde
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/where' }}"
sequence:
- service: notify.telegram_me
data:
message: commande connue /where exécutée par cde
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/portail' }}"
sequence:
- service: notify.telegram_me
data:
message: commande connue /portail executée ici
- service: switch.turn_on
data: {}
target:
entity_id: switch.portail_switch_switch_1
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/visu_portail' }}"
sequence:
- service: input_text.set_value
data:
value: C{{ now().strftime("%Y%m%d-%H-%M-%S") }}.jpg
target:
entity_id: input_text.nom_snapshot
- service: camera.snapshot
data:
filename: >-
/config/www/camera/archive/{{states("input_text.nom_snapshot")
}}
target:
entity_id:
- camera.visiophone_wifi_none
- service: notify.telegram_me
data:
title: Envoi d'une image
message: Envoi image visiophone
data:
photo:
- file: >-
/config/www/camera/archive/{{states("input_text.nom_snapshot")
}}
caption: commande connue executée ici
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/entree' }}"
sequence:
- service: notify.telegram_me
data:
message: commande connue /entree executée ici
- service: switch.toggle
data: {}
target:
entity_id: switch.vestiaire_switch_1
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/cover' }}"
sequence:
- service: notify.telegram_me
data:
message: Menu Cover avec % de fermeture
data:
keyboard:
- /gauche 0, /gauche 100, /gauche 30
- /droit 0, /droit 100, /droit 30
- /cuisine 0, /cuisine 100, /cuisine 30
- /amis 0, /amis 100, /amis 30
- /louis 0, /louis 100, /louis 30
- /bas 0, /bas 100, /bas 30
- /ha
- conditions:
- condition: template
value_template: "{{ trigger.event.data.command == '/aide' }}"
sequence:
- service: notify.telegram_me
data:
message: >
*Températures à Lyon:*
Température *X0*= {{states('sensor.esp32_xiaomi0_temp_rature',
with_unit=True)}}
Température *X2*= {{states('sensor.esp32_xiaomi2_temp_rature',
with_unit=True)}}
Température *X3*= {{states('sensor.esp32_xiaomi3_temp_rature',
with_unit=True)}}
Température *X4*= {{states('sensor.esp32_xiaomi4_temp_rature',
with_unit=True)}}
Température *Wi*=
{{states('sensor.temp_and_hum_salon_terreaux_temperature',
with_unit=True)}}
*Saint-Gildas:*
*Température salon*=
{{states('sensor.temperature_humidity_sensor_temperature',
with_unit=True)}}
*ContactPortail:* {% if
states('binary_sensor.contact_portail_2_porte')=="unavailable"
-%} indisponible {% elif states
('binary_sensor.contact_portail_2_porte')=="on" -%} Portail
ouvert {% elif states
('binary_sensor.contact_portail_2_porte')=="off" -%} Portail
fermé {%- endif %}
*Plafond:* {{states('switch.plafond_bureau_switch_1')}}
*Meuble Couloir:* {{states('light.meuble_couloir_none')}}
*Vestiaire :* {{states('switch.vestiaire_switch_1')}}
*Sauna:* {{states('switch.zigbee_switch_relais_switch_1')}}
*Covers* _(% de fermeture)_
{% for state in states.cover | sort(attribute='entity_id') %}
{{- state.entity_id |replace("cover.", "")| replace("curtain",
"")|replace("_", " ")}} = {{
state_attr(state.entity_id,'current_position') | float |
round(0) }}
{% endfor %}
- conditions:
- condition: template
value_template: "{{ trigger.event.data.args[0] > '' }}"
sequence:
- variables:
mot_cle: "{{ trigger.event.data.command }}"
sep: /
mot_cle2: "{{ mot_cle.split(sep)[1] }}"
cible: >-
{% from 'tools3.jinja' import answer_cover_id %} {{
answer_cover_id(mot_cle) }}
entity: "{{ cible }}"
my_position: "{{ trigger.event.data.args[0] }}"
my_position2: >-
{% from 'tools3.jinja' import answer_cover_pos %} {{
answer_cover_pos(my_position) }}
- service: cover.set_cover_position
data:
position: "{{ my_position }}"
target:
entity_id: "{{ entity }}"
- service: notify.telegram_me
data:
message: |
Volet à la position demandée
default:
- service: notify.telegram_me
data:
message: commande non reconnue
initial_state: true
Bonjour,
J’ai créé/adapté une automatisation pour m’envoyer des notifications d’intrusion Frigate via Telegram.
Ca marche plutot pas mal : dès que je recois un nouvel évenement, je transmes le snapshot sur le chatID qui va bien. Puis j’attend jusqu’à ce que l’évenement termine, et j’envoie la vidéo de l’évenement via Telegram en ayant pris soin de la télécharger (car Telegram_bot ne supporte pas l’envoi d’une URL locale…).
Au lieu d’envoyer la vidéo à la fin, en tant que nouveau message, j’aimerai plutôt modifier le 1er message envoyé pour
- soit changer la photo en vidéo.
- soit ajouter un clavier pour demander de nous envoyer la vidéo.
Mon problème, c’est que je ne parvient pas à éditer un message existant. Il me faut le message_id que je ne connais pas !
J’ai essayé ‹ last ›, mais ca ne me convient pas car je pourrais avoir d’autres messages intercalés…
J’ai également essayé d’inclure le clavier au 1er message sous la photo : c’est bien, mais il y a le risque de cliquer sur le bouton et que la vidéo ne soit pas encore dispo… (pas tres WAF)
Est-ce possible de connaitre le message_id, dans l’automatisation qui envoie le message ?
Tu devrais pouvoir mettre « last » dans le paramètre message_id, pour référencer le dernier le dernier message envoyé.
Tu trouvera plus d’infos dans la doc
Mais pourquoi ne pas envoyer directement un snapshot ? Ils sont dispos dans Frigate. L’utilisateur ira ensuite voir la vidéo dans Home Assistant (carte frigate).
Et ce sera bien plus réactif. On parle quand même d’alertes…
Juste excellent ! C’est très complet. Quasi plus besoin de l’interface Home Assistant du coup ![]()
Pour aller plus loin, il serait même possible d’intégrer Conversation. Tu pourrais alors discuter avec HA en langage naturel… J’avais en projet de compléter le tuto ou en faire un nouveau, mais c’est resté dans les cartons. Quelqu’un a essayé ?
Justement :
J’ai essayé ‹ last ›, mais ca ne me convient pas car je pourrais avoir d’autres messages intercalés…
Oui, j’envoie la snapshot sur le « NEW », donc quand l’évenement débute.
Et je veux le CLIP quand l’évenement termine (sur le « END »).
Et je veux que ce soit automatique, sans avoir à ouvrir l’appli Home Assistant.
D’autant plus que je bloque l’accès à l’interface HA par internet : c’est pour ca que je passe par Telegram pour envoyer des notifs, et pas par les notif built-in
Salut FlorianB,
Je cherche à faire la même chose que toi, à savoir envoyer une notification pour alerter, accompagnée d’un bouton « voir video ».
As tu trouvé une solution ?
D’autre part, tu dis que tu télécharges d’abord la vidéo. Peux tu me m’expliquer comment tu réalises cette partie ?
Salut
je n’ai pas trouvé comment récupérer le message id d’une première notification puis d’éditer le-dit message pour y mettre la vidéo quand elle est disponible.
Ce que je te conseil de faire c’est :
- Envoyer un message avec un bouton, dont le tag contient l’idée de l’évent frigate
- Créer une 2eme automatisation qui réagit au callback et retourne un nouveau message contenant la vidéo de l’id du callback
Bonjour,
Je debute dans cette utilisation… J ai suivi les étapes depuis le début et je coince sur la partie verification… Apres la modification du config.yaml et du secrets.yaml, j ai relance HA . Sous Outils de developpement : je ne vois pas l onglet Services… J ai du passer a coté de quelque chose. Merci pour votre retour.
csierra67
Hello,
Depuis la version d’août, Service a été renommé Action. Nous devrons mettre à jour les articles. Désolé pour cela.
Merci, je comprends qu il est difficile de maintenir toute la documentation a jour . J ai decouvert dans Actions Telegram bot : send a message ou send location… Mais je ne passe pas le stade du test, malgre differents essais sur le config.yaml et le secrets.yaml… Mon probleme est que le toutoriel est detaille pour un groupe alors que je ne veux l utiliser que pour moi tout seul… J ai essaye de m en sortir en supprimant maison des expressions
ou le terme apparait… J ai un API key et un Telegram_ID (numerique a 10 chiffres)…
Mon API key commence par ce meme numerique puis apres : la cle elle meme (32 caracteres)…
Dans secrets.yaml, faut il mettre l ID (10 chiffres sur une ligne) et la cle (32 caracteres) sur l autre ligne ? Ou 10:32 caracteres sur une ligne et 10 caracteres sur l autre ? Desole si mes questions peuvent paraitres naives…
Autre question peut etre naive, dans Telegram, les messages apparaissent bien dans la boite de reception des messages, celle ou apparaissent les messages des utilisateurs reels…
csierra67
Je complete mon message. En fait je ne suis pas sur que mon bot aie effectivement demarre. J ai peut etre un probleme de parametrage Telegram et/ou un probleme de parametrage HA ;-(
Oui cela semble être un pb avec ton bot. Tu l’a créé, mais l’a tu bien retrouvé puis activé ensuite (voir tuto) ?
Oui je te confirme, cela apparait exactement comme toute discussion avec de « vrais » gens dans l’appli.
Essaie éventuellement la config avec un groupe, même si tu es seul dedans, en cas de pb….
J avais pense a cette possibilite, un groupe tout seul et extensible si interet…
Je ne sais pas si le bot est demarre, je ne le trouve pas dans ma section des contacts… par contre je peux verifier ses proprietes, les modifier…Je vais encore essayer…
J ai fait de multiples essais, pas moyen de demarrer le bot… il n apparait jamais dans les contacts
Ou bloques tu : tu dois créer le bot et lui donner un nom, puis le retrouver en tapant son nom dans la recherche, et enfin l’activer. Tu ne le retrouves pas ?
As tu essayé un autre nom ?