Utilisation de telegram - plusieurs commandes dans un seul trigger

Je suis débutant et j’ouvre ce post pour partager mon utilisation de la messagerie telegram dans home assistant:
une utilisation via une seule entrée d’automatisation et ensuite un test sur la condition d’entrée.

Débuter avec telegram
Pour commencer, j’ai suivi le post ci dessous:
https://forum.hacf.fr/t/les-notifications-via-telegram/216

Exemple
Mais j’ai trouvé fastidieux de créer une entrée par commande comme dans l’exemple ci dessous avec trois commandes venant de Telegram:

- id: reponse_telegram
  alias: Reponse initiale telegram
  initial_state: true
  trigger:
    platform: event
    event_type: telegram_command
    event_data:
      command: /HA
  action:
  - service: notify.telegram_groupe
    data:
      message: Que voulez-vous faire
      data:
        keyboard:
        - /ping, /Fin
- id: reponse_Fin
  alias: reponse a eteindre
  initial_state: true
  trigger:
    platform: event
    event_type: telegram_command
    event_data:
      command: /Fin
  action:
  - service: notify.telegram_groupe
    data:
      message: Tchao
      data:
        keyboard: []
- id: reponse_Fin
  alias: reponse a eteindre
  initial_state: true
  trigger:
    platform: event
    event_type: telegram_command
    event_data:
      command: /ping
  action:
  - service: notify.telegram_groupe
    data:
      message: Pong

Modification
Donc j’ai testé, la commande suivante où

  • la ligne "event_data: " est supprimée
  • je teste la valeur du trigger pour déclencher des actions
- id: reponse_telegram_touttout
  alias: Reponse initiale telegram
  initial_state: true
  trigger:
    platform: event
    event_type: telegram_command
  action:
  - service: notify.telegram_groupe
    data:
      message: |
          Message envoyé
           {{ trigger.event.data }}
          Commande {{ trigger.event.data.command }}
             {{ trigger.event.data.command == "/HA" }}
          {% if trigger.event.data.command == "/HA" %}
             la commande est reconnue  /HA
          {% else %}
             la commande est non reconnue comme /HA
          {% endif %}
      data:
        keyboard:
        - /AllOn, /AllOff
        - /ping, /Fin
  - choose:
    - conditions:
        - condition: template
          value_template: "{{ trigger.event.data.command == '/HA' }}"
      sequence:
        - service: notify.telegram_groupe
          data:
            message: commande reconnue /HA
    default:
        - service: notify.telegram_groupe
          data:
            message: commande non reconnue

Ce script permet de factoriser des actions quelque soit la commande issue de telegram.
Elles peuvent être factorisées comme ci dessus

  • via les conditions sur les commandes - condition: template ou bien
  • via le template de réponse au message.

On notera dans l’exemple donné ci dessus, l’utilisation de | pour écrire du texte sur plusieurs ligne dans la réponse telegram.

En supplément, il est possible d’envoyer des arguments à une commande simplement en ajoutant du texte après la commande comme /HA bla blou qui transmet les arguments 'args': 'bla', 'blou'.
image

Mais attention, les arguments sont envoyés comme un tableau de string donc si, on veut les utiliser, penser à choisir le bon élément du tableau. Par exemple:
{{ trigger.event.data.args[0] }}
Cela n’est pas visible si on utilise Telegram comme feedback car il semblerait que Telegram supprime les [] comme ci dessous:
image

A noter: pour trigger un événement telegram, il faut le / devant la commande.

On pourra aussi, au passage, noter les subtilités de YAML qui me font m’arracher les cheveux:
Dans le message telegram, la ligne ci dessous fonctionne parfaitement
{{ trigger.event.data.command == "/HA" }}
Mais elle donne une erreur dans la partie condition template, où il faut écrire:
{{ trigger.event.data.command == '/HA' }}

Debug
Pour aller plus loin, je conseille aux débutants de jeter un œil sur l’automatisation proposée via le « debugger ».
Il peut vraiment être très utile si on a beaucoup de choix et de conditions dans la réponse à un trigger comme ici une commande telegram.

Voilà en espérant que cela peut être utile à d’autres débutants comme moi.

2 « J'aime »

Salut super cette infos merci beaucoup pour le partage