Retour Télégram callback

Bonjour,

Malgré mes différentes recherche sur le sujet, je n’arrive pas à créer d’action sur des boutons de notifications télégram

Chatgpt m’a bien aidé pour créer une automatisation afin de recevoir une notification pour me prévenir de sortir telle ou telle poubelle en fonction des semaines. J’ai essayé l’intégration " Waste Collection Schedule" mais je la trouve vraiment trop compliqué pour ce que je veux faire.
Du coup Chatgpt m’a sorti ça :

alias: Poubelles - Notification Interactive
description: >-
  Envoie la notification le dimanche à 18h pour la poubelle Jaune ou Marron
  (semaine P/I).
triggers:
  - at: "18:00:00"
    trigger: time
conditions:
  - condition: time
    weekday:
      - sun
actions:
  - variables:
      semaine_paire: "{{ (now().isocalendar()[1] | int) % 2 == 0 }}"
      poubelle_data: |
        {% if semaine_paire %}
          {% set data = {'couleur': 'JAUNE', 'callback': '/oui_jaune'} %}
        {% else %}
          {% set data = {'couleur': 'MARRON', 'callback': '/oui_marron'} %}
        {% endif %}
        {{ data }}
      keyboard_list:
        - - - Oui, je la sors (Compter)
            - "{{ poubelle_data.callback }}"
          - - Non, je ne la sors pas
            - /non_{{ poubelle_data.couleur | lower }}
  - data:
      config_entry_id: #########
      message: >-
        🗑️ Ramassage demain ! Pensez à sortir la **POUBELLE {{
        poubelle_data.couleur }}** ce soir. L'avez-vous sortie ?
      # Injection de la liste construite ci-dessus (qui est bien [[["Text", "Command"]]])
      inline_keyboard: "{{ keyboard_list }}"
    action: telegram_bot.send_message
mode: single

Çà fonctionne bien pour les notifications mais je n’ai pas de retour d’action sur les boutons.
Il m’a dti de vérifier dans les outils de dev, l’évènement « telegram_callback » mais rien n’en sort.
L’idée est que je suis facturé à la relève donc je voudrais compter si j’ai sorti la poubelle ou non et ce en fonction de la couleur.
Je cherche donc à faire plus ou moins la même chose que @GDX2 à fait pour ses poubelles.

Merci de votre aide.

Ma configuration


|Version|core-2025.11.3|
| — | — |
|Type d’installation|Home Assistant OS|


Personne n’a d’idée ?

Bonjour @Cedric22

Tu n’as qu’une automatisation ?
Il t’en faut une pour le retour avec telegram_callback

Exemple d’envoi de message avec un bouton:

alias: Telegram Alerte médicament 12h30
description: ""
triggers:
  - trigger: time
    at: "12:30:00"
conditions: []
actions:
  - action: telegram_bot.send_message
    data:
      config_entry_id: 01JZJ12M7QJ8K4Z0B7YVHWGSJ7
      message: ⚡Bruno doit prendre son médicament pour la tension.
      title: Santé
      inline_keyboard:
        - OK bien prit:/switch_on_medicament
    enabled: true
mode: single

Automatisation qui traite le callback (et qui renvoie une confirmation à Telegram):

alias: Telegram prise médicament
description: ""
triggers:
  - event_type: telegram_callback
    event_data:
      command: /switch_on_medicament
    trigger: event
conditions:
  - condition: state
    entity_id: input_text.prise_medicament
    state: KO
actions:
  - action: input_text.set_value
    metadata: {}
    data:
      value: OK
    target:
      entity_id: input_text.prise_medicament
  - data:
      message_id: last
      chat_id: "{{trigger.event.data.chat_id}}"
      inline_keyboard: null
      config_entry_id: 01JZJ12M7QJ8K4Z0B7YVHWGSJ7
    action: telegram_bot.edit_replymarkup
  - action: telegram_bot.send_message
    data:
      config_entry_id: 01JZJ12M5QJ2K4Z0A7YVHWGSJ7
      message: Bruno a prit son cachet à {{now().strftime("%Hh%M")}} 👍
mode: single
initial_state: true```


Bob

Merci @Bob
En fait, dans les outils de dev, évènements, si je fais écouter les évènements [telegram_callback] rien ne se passe en appuyant sur les boutons du coup j’ai effectivement une autre automatisation mais elle ne se déclenche pas

Voici l’automatisation qui doit récupérer l’info :

alias: Poubelles - Gestion des Réponses Telegram et Comptage
description: Écoute tous les clics et gère les compteurs et la réponse.
triggers:
  - event_type: telegram_callback
    trigger: event
conditions: []
actions:
  - variables:
      callback_id: >-
        {{ trigger.event.data.id | default(trigger.event.data.callback_query.id)
        }}
      commande: >-
        {{ trigger.event.data.data |
        default(trigger.event.data.callback_query.data) }}
      is_yes: "{{ 'oui' in commande }}"
      couleur: >
        {% if 'marron' in commande %} MARRON {% elif 'jaune' in commande %}
        JAUNE {% else %} INCONNUE {% endif %}
      compteur_cible: >
        {% if 'marron' in commande %} counter.poubelle_marron_compteur {% elif
        'jaune' in commande %} counter.poubelle_jaune_compteur {% else %} none
        {% endif %}
  - data:
      callback_query_id: "{{ callback_id }}"
      message: >-
        {% if is_yes %}Comptage effectué.{% else %}Réponse enregistrée.{% endif
        %}
      show_alert: false
    action: telegram_bot.answer_callback_query
  - if:
      - condition: template
        value_template: "{{ is_yes }}"
    then:
      - target:
          entity_id: "{{ compteur_cible }}"
        action: counter.increment
      - variables:
          message_confirmation: >-
            ✅ C'est noté ! Poubelle {{ couleur }} sortie. Total: {{
            states(compteur_cible) }}
    else:
      - variables:
          message_confirmation: >-
            ❌ C'est noté. La poubelle {{ couleur }} NE sera PAS sortie cette
            fois.
  - data:
      message_id: "{{ trigger.event.data.message_id }}"
      chat_id: "{{ trigger.event.data.chat_id }}"
      text: "{{ message_confirmation }}"
      inline_keyboard: []
    action: telegram_bot.edit_message
mode: single

J’ai eu le souci récemment, la cause, l’ID du Bot, j’avais mis ce qui était avant les : du token
8666666660:AAH3CCFcxxxxxxx-im4NgdYFNvliy4zl1c8
mais c’était le chat id de mon compte Telegram qu’il fallait mettre.

Regarde ce post peut être:

Bob

Je ne comprend pas trop.
Je n’ai pas saisi le token de télégramm dans l’automatisation.
Le bot fonctionne, il m’envoi bien les notifs. Les boutons aussi s’affichent bien.
L’ID correspond a un groupe de chat télégramm mais le code

config_entry_id: #########

viens de l’édition YAML d’une action


Et qui a prioris correspond à mon chat de groupe

Bonjour Cedric22,

Lors de la configuration, après avoir indiqué ton Token, normalement tu as le choix entre :

  • Broadcast
  • Polling

  • Webhooks

Il faut cocher Polling, je ne sais pas si ton problème est lié à ça mais moi cela m’avait bloqué.

Bon courage

1 « J'aime »

Je viens de changer j’étais en Diffusion et je suis passé en Sondage (traduction fr)
Je viens de tester et j’ai bien un retour dans les évènements
Merci

Du coup pour ceux que ça peu intéresser, voici mes automatisations :
La première c’est pour les notifications :

alias: Poubelles - Notification Interactive
description: >-
  Envoie la notification le dimanche à 18h pour la poubelle Jaune ou Marron
  (semaine P/I).
triggers:
  - at: "18:00:00"
    trigger: time
conditions:
  - condition: time
    weekday:
      - sun
actions:
  - variables:
      semaine_paire: "{{ (now().isocalendar()[1] | int) % 2 == 0 }}"
      poubelle_data: |
        {% if semaine_paire %}
          {% set data = {'couleur': 'JAUNE', 'callback': '/oui_jaune'} %}
        {% else %}
          {% set data = {'couleur': 'MARRON', 'callback': '/oui_marron'} %}
        {% endif %}
        {{ data }}
      keyboard_list:
        - - - Oui, je la sors (Compter)
            - "{{ poubelle_data.callback }}"
          - - Non, je ne la sors pas
            - /non_{{ poubelle_data.couleur | lower }}
  - data:
      config_entry_id: ##################
      message: >-
        🗑️ Ramassage demain ! Pensez à sortir la **POUBELLE {{
        poubelle_data.couleur }}** ce soir. L'avez-vous sortie ?
      inline_keyboard: "{{ keyboard_list }}"
    action: telegram_bot.send_message
mode: single

Je recois donc une notif pour savoir quelle poubelle sortir :

image

Et quand je clic sur oui ou sur Non, le message change et mon compteur s’incrémente :

image

Et donc le code pour la 2eme est la réponse :

alias: Poubelles - Gestion des Réponses Telegram et Comptage
description: Écoute tous les clics et gère les compteurs et la réponse.
triggers:
  - event_type: telegram_callback
    trigger: event
conditions: []
actions:
  - variables:
      callback_id: "{{ trigger.event.data.id }}"
      commande: "{{ trigger.event.data.data }}"
      is_yes: "{{ 'oui' in commande }}"
      couleur_raw: "{{ commande.split('_')[-1] }}"
      couleur: "{{ couleur_raw | upper }}"
      compteur_cible: |
        {% if 'marron' in commande %} 
          counter.poubelle_marron_compteur 
        {% elif 'jaune' in commande %} 
          counter.poubelle_jaune_compteur 
        {% else %} 
          none 
        {% endif %}
  - data:
      callback_query_id: "{{ callback_id }}"
      message: >-
        {% if is_yes %}Comptage effectué.{% else %}Réponse enregistrée.{% endif
        %}
      show_alert: false
    action: telegram_bot.answer_callback_query
  - if:
      - condition: template
        value_template: "{{ is_yes }}"
    then:
      - target:
          entity_id: "{{ compteur_cible }}"
        action: counter.increment
      - variables:
          message_confirmation: >-
            ✅ C'est noté ! Poubelle {{ couleur }} sortie. Total: {{
            states(compteur_cible) }}
    else:
      - variables:
          message_confirmation: >-
            ❌ C'est noté. La poubelle {{ couleur }} NE sera PAS sortie cette
            fois.
  - data:
      message_id: "{{ trigger.event.data.message.message_id }}"
      chat_id: "{{ trigger.event.data.chat_id }}"
      message: "{{ message_confirmation }}"
      inline_keyboard: []
    action: telegram_bot.edit_message
mode: single

Suivi de l’affichage :

Avec le code de la tuile :

type: vertical-stack
cards:
  - type: custom:mushroom-title-card
    title: 🗑️ Gestion des Poubelles
    subtitle: Résumé & Prochain passage
  - type: custom:mushroom-chips-card
    chips:
      - type: entity
        entity: counter.poubelle_jaune_compteur
        name: Jaune
        icon: mdi:trash-can
        icon_color: yellow
      - type: entity
        entity: counter.poubelle_marron_compteur
        name: Marron
        icon: mdi:trash-can
        icon_color: brown
    alignment: center
  - type: custom:mushroom-template-card
    icon: mdi:calendar
    icon_color: green
    primary: |
      {% set semaine = now().isocalendar()[1] %}
      {% if semaine % 2 == 0 %}
        🟡 Prochaine poubelle : Jaune
      {% else %}
        🟤 Prochaine poubelle : Marron
      {% endif %}
    secondary: >
      {% macro fr_jour(date) %}
        {% set j = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche'] %}
        {{ j[date.weekday()] }}
      {% endmacro %}


      {% macro fr_mois(date) %}
        {% set m = ['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre'] %}
        {{ m[date.month - 1] }}
      {% endmacro %}


      📅 Passage : {{ fr_jour(now() + timedelta(days=(7 - now().weekday()))) |
      capitalize }}

      {{ (now() + timedelta(days=(7 - now().weekday()))).day }}

      {{ fr_mois(now() + timedelta(days=(7 - now().weekday()))) }}
  - type: custom:mushroom-template-card
    icon: mdi:message-alert
    icon_color: blue
    primary: 🕕 Prochaine notification
    secondary: |
      {% macro fr_jour(date) %}
        {% set j = ['lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche'] %}
        {{ j[date.weekday()] }}
      {% endmacro %}

      {% macro fr_mois(date) %}
        {% set m = ['janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre'] %}
        {{ m[date.month - 1] }}
      {% endmacro %}

      📆 Dimanche à 18h  
      (veille du passage :  
      {{ fr_jour(now() + timedelta(days=(7 - now().weekday()))) | capitalize }}
      {{ (now() + timedelta(days=(7 - now().weekday()))).day }}
      {{ fr_mois(now() + timedelta(days=(7 - now().weekday()))) }})

Ce sujet a été automatiquement fermé après 2 jours. Aucune réponse n’est permise dorénavant.