# Renvoyer une notification persistante

**URL:** <https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372>\
**Category:** Automatisation / Scène / Script / BluePrint\
**Tags:** automatisation-automation, notification, automatisation\
**Created:** [Juillet 28, 2024, 10:15 UTC](https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372 "2024-07-28T10:15:31Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Juillet 28, 2024, 10:15 UTC](https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372/1 "2024-07-28T10:15:32Z")

</div>

Bonjour à tous,

Depuis Android 14 l’utilisateur peut balayer (swip) une notification persistante. Dans les faits elle n’est plus persistante. Dans certains cas, il est souhaitable que la notification revienne sur le téléphone tant qu’une alarme est en cours et qu’elle n’est pas acquitté.  
Cela peut être utilisé pour guider l’utilisateur sur des actions physique à faire (traitement eau piscine dans mon cas). Tant qu’il ne confirme pas que c’est effectué, la notification reviens.

**Cet automate permet d’intercepter le balayage d’une notification persistante. Il faut obligatoirement qu’elle est un TAG.**

# Recommandations

Pour permettre à l’utilisateur d’acquitter une alarme ou bien de la reporter, je vous invite à ajouter des boutons d’actions qui permettrons d’annuler ces notifications. Autrement elles reviendrons sans fin.  
Prévoyez également un effacement automatique quand l’alarme n’est plus d’actualité.

Vous devez savoir utiliser les usr\_id, c’est utilisé pour cibler le bon utilisateur. Si vous ne savez pas les gérer le script [Notification multi-utilisateur avec présence](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328) permet de les prendre automatiquement en compte sans devoir se documenter sur ce sujet.

# Code

Pour la mise en production, pensez à modifier le TAG qui sera intercepté. Vous pouvez vous aider du script [Notification multi-utilisateur avec présence](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328) qui permet de les générer graphiquement sans devoir se documenter sur les notifications avancées.

[details=«&nbsp;Code de l’automate «&nbsp;Renvoie des notifications persistante&nbsp;»&nbsp;»]

```auto
alias: Renvoie des notifications persistante
description: >-
  Nécessaire depuis Android 14, les versions ultérieure ne sont pas concernées

  Renvoie une notification persistante ayant le tag "qualite-eau" venant d'être
  balayée

  Les actions de notification sont ajoutées par le script appelé dans l'automate
trigger:
  - alias: Balayage notification TAG demo-persistant
    platform: event
    event_type: mobile_app_notification_cleared
    event_data:
      tag: demo-persistant
      persistent: "true"
    context: {}
condition: []
action:
  - alias: Renvoi la notification vers le USR_ID
    service: script.notification_avec_presence
    metadata: {}
    data:
      personnes:
        entity_id: "{{ trigger.event.context[\"user_id\"] }}"
      titre: "{{ trigger.event.data.title }}"
      message: "{{ trigger.event.data.message }}"
      resume: "{{ trigger.event.data.subject }}"
      tag: "{{ trigger.event.data.tag }}"
      icone: "{{ trigger.event.data.notification_icon }}"
      couleur: "{{ trigger.event.data.color }}"
      illustration: "{{ trigger.event.data.icon_url }}"
      collant: "{{ trigger.event.data.sticky }}"
      persistant: "{{ trigger.event.data.persistent }}"
      click: "{{ trigger.event.data.clickAction }}"
      actions:
        - action: "{{ trigger.event.data.action_1_key }}"
          title: "{{ trigger.event.data.action_1_title }}"
          uri: "{{ trigger.event.data.action_1_uri }}"
        - action: "{{ trigger.event.data.action_2_key }}"
          title: "{{ trigger.event.data.action_2_title }}"
          uri: "{{ trigger.event.data.action_2_uri }}"
        - action: "{{ trigger.event.data.action_3_key }}"
          title: "{{ trigger.event.data.action_3_title }}"
          uri: "{{ trigger.event.data.action_3_uri }}"
mode: single

```

[/details]

Très rapidement je rajouterai des exemples permettant d’effacer ces notifications persistantes. Cela évitera qu’elle reviennent en boucle et que les utilisateurs grognent

---

<div class="post-metadata">

**Author:** ![percherie](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/p/41988e/32.png) [@percherie](https://forum.hacf.fr/u/percherie)\
**Post date:** [Juillet 28, 2024, 4:21 UTC](https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372/2 "2024-07-28T16:21:36Z")

</div>

Voici les exemples en question pour faire une démo.

C’est un **automate** qui détecte les réponses des utilisateurs faite via les boutons action d’une notification. Selon la réponse de l’utilisateur, la notification est effacée sur tout les appareils ou uniquement sur les appareils de l’utilisateur ayant répondu.  
Il faut déclarer un TAG pour pouvoir cibler le type de notification. Si vous préférez ne pas définir de TAG, cela concernera tout type de notification ayant les même caractéristique.

Je l’ai couplé avec le script [Notification multi-utilisateur avec présence](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328) en utilisant toutes les options possible.

La notification sera renvoyé avec un **user\_id**. Si vous ne savez pas utiliser les **user\_id** , le script [Notification multi-utilisateur avec présence](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328) les prends nativement en charge.  
Grâce au script [Notification multi-utilisateur avec présence](https://forum.hacf.fr/t/notification-multi-utilisateur-avec-presence/45328), si un utilisateur possède plusieurs appareil, la notification vers un **user\_id** sera envoyé vers tous ses appareils.

> **Code de l'automate "Demo annulation notification persistante"**
>
> ```auto
> alias: Demo annulation notification persistante
> description: ""
> trigger:
> - alias: "Réponse utilisateurs : Effectué"
> platform: event
> event_type: mobile_app_notification_action
> event_data:
> action: destruction
> tag: demo-persistant
> id: Effacement tout le monde
> - alias: "Réponse utilisateurs : Plus tard"
> platform: event
> event_type: mobile_app_notification_action
> event_data:
> action: refus
> tag: demo-persistant
> id: Effacement ciblé
> condition: []
> action:
> - alias: Si aucun ID envoi de la démo
> if:
> - condition: not
> conditions:
> - condition: trigger
> id:
> - Effacement tout le monde
> - Effacement ciblé
> then:
> - alias: Envoi de la démo
> service: script.notification_avec_presence
> metadata: {}
> data:
> personnes:
> entity_id:
> - person.joel
> prox_zone:
> entity_id: zone.home
> prox_distance: 200
> timeout: "18:00:00"
> titre: Titre facultatif
> message: >-
> Message persistant en démo<br>Sera renvoyé par un automate après un
> swip<br>Pour le supprimer, répondez à une des questions.
> icone: mdi:fire-alert
> log: true
> actions:
> - action: destruction
> title: Effectué
> - action: refus
> title: Plus tard
> - action: URI
> title: Historique
> uri: settings://notification_history
> resume: Message persistant en démo... dérouler pour plus d'info
> tag: demo-persistant
> collant: true
> persistant: true
> click: https://forum.hacf.fr/t/renvoyer-une-notification-persistante/45372
> couleur: red
> source: >-
> {% if source is defined %}{{ source }}
> 
> {% elif trigger is defined and trigger.from_state is defined %}{{
> trigger.from_state.attributes.friendly_name }} depuis {{
> this.attributes.friendly_name }}
> 
> {% elif trigger is defined and trigger.event and
> trigger.event.data.action is defined %}réponse {{
> trigger.event.data.action }} dans {{ this.attributes.friendly_name
> }}
> 
> {% elif this is defined %}{{ this.attributes.friendly_name }}
> 
> {% else %}déclenchement manuel depuis [nom du script où vous êtes]
> 
> {% endif %}
> - alias: Si ID est "Effacement tout le monde"
> if:
> - condition: trigger
> id:
> - Effacement tout le monde
> then:
> - alias: Effacement notification TOUT les appareils sans localisation
> service: script.notification_avec_presence
> metadata: {}
> data:
> message: clear_notification
> log: true
> tag: demo-persistant
> - alias: Si ID est "Effacement ciblé"
> if:
> - condition: trigger
> id:
> - Effacement ciblé
> then:
> - alias: >-
> Effacement notification TOUT les appareils D'UN SEUL UTILISATEUR sans
> localisation
> service: script.notification_avec_presence
> metadata: {}
> data:
> message: clear_notification
> log: true
> tag: demo-persistant
> personnes:
> entity_id: "{{ trigger.event.context[\"user_id\"] }}"
> mode: single
> 
> ```

Amusez vous bien avez, j’espère que ça va vous libérer de toutes les parties gestion des notifications dans vos scripts.
