šŸ”” Actionable notifications for Android

i dont understand what im missing here. Im only seeing a notification in the HA companion app and its only showing the name of the message and its just showing the yaml for the button and the action i am trying to use. I cant get any notifictions on my phone period,

Anyway to include an attachment to the notification, for example:

       service: notify.mobile_app_<your_device_id_here>
        data:
            message: "Something happened at home!"
            data:
            # an example of an absolute url
                image: "https://github.com/home-assistant/assets/blob/6a407898bd8ae80eb83634ffddb0d5ebdde95957/logo/logo.png?raw=true"
1 Like

This is super cool! Because the notification actions are an android standard y can click them from my SmartWatch (garmin). This will greatly reduce my usage of the phone!

Thanks to @vorion for creating this Blueprint
I have modified the one that is now built-in Home assistant (I am not sure what is different aside from being a script and the in the OP is a automation)

The changes are:

  • The target is now the name of a notify service, so you would enter: ā€œnotify.ā€˜device/group nameā€™ā€.
    For example: notify.mobile_app_oneplus or notify.phones_group
    Please note that the input is not validated, so make sure the spelling is correct.

  • Clearing the notification will trigger the Dismiss Action

  • Actioning or clearing the notification from one device will remove the notification from all other devices.

  • Added an option for timeout, after the time is done the Dismiss Action will be triggered, and the notification will be cleared.

blueprint:
  name: Confirmable Notification
  description: >-
    A script that sends an actionable notification with a confirmation before
    running the specified action.
  domain: script
  source_url: https://github.com/home-assistant/core/blob/919f4dd719ac2551ca63a93780852bba1aadd7b0/homeassistant/components/script/blueprints/confirmable_notification.yaml
  input:
    notify_device:
      name: Notification service
      description: Notification service name (ex. Notify.mobile_app_....). Note that device/s needs to run the official Home Assistant app to receive notifications.
      selector:
        text:
    title:
      name: "Title"
      description: "The title of the button shown in the notification."
      default: ""
      selector:
        text:
    message:
      name: "Message"
      description: "The message body"
      selector:
        text:
    confirm_text:
      name: "Confirmation Text"
      description: "Text to show on the confirmation button"
      default: "Confirm"
      selector:
        text:
    confirm_action:
      name: "Confirmation Action"
      description: "Action to run when notification is confirmed"
      default: []
      selector:
        action:
    dismiss_text:
      name: "Dismiss Text"
      description: "Text to show on the dismiss button"
      default: "Dismiss"
      selector:
        text:
    dismiss_action:
      name: "Dismiss Action"
      description: "Action to run when notification is dismissed"
      default: []
      selector:
        action:
    tag:
      name: "Notification Tag"
      description: "notification tag for updating and dismissing the notification"
      default: {}
      selector:
        text:
    timeout:
        name: "Timeout duration"
        default: {}
        selector:
          duration:
mode: restart

sequence:
  - alias: "Set up variables"
    variables:
      action_confirm: "{{ 'CONFIRM_' ~ context.id }}"
      action_dismiss: "{{ 'DISMISS_' ~ context.id }}"
  - alias: "Send notification"
    service: !input notify_device
    data:
      message: !input message 
      title: !input title
      data:
        actions:
          - action: "{{ action_confirm }}"
            title:  !input confirm_text
          - action: "{{ action_dismiss }}"
            title:  !input dismiss_text
        tag: !input tag
  - alias: "Awaiting response"
    wait_for_trigger:
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: "{{ action_confirm }}"
      - platform: event
        event_type: mobile_app_notification_action
        event_data:
          action: "{{ action_dismiss }}"
      - platform: event
        event_type: mobile_app_notification_cleared
    timeout: !input timeout
  - choose:
      - conditions: '{{ wait.trigger.event.event_type == "mobile_app_notification_cleared" }}' 
        sequence: 
          - service: !input notify_device
            data:
              message: clear_notification
              data:
                tag: !input tag
          - choose:
            default: !input dismiss_action
      - conditions: "{{ wait.trigger.event.data.action == action_confirm }}"
        sequence: 
          - service: !input notify_device
            data:
              message: clear_notification
              data:
                tag: !input tag
          - choose:
            default: !input confirm_action
      - conditions: "{{ wait.trigger.event.data.action == action_dismiss }}"
        sequence: 
          - service: !input notify_device
            data:
              message: clear_notification
              data:
                tag: !input tag
          - choose:
            default: !input dismiss_action
      - conditions: "{{ wait.remaining == 0}}"
        sequence: 
          - service: !input notify_device
            data:
              message: clear_notification
              data:
                tag: !input tag
          - choose:
            default: !input dismiss_action

Mentioning those who asked for this ability
@EvlLprchn @sacredshapes @tanderson1992 @frelev @jesc @rlyons20

5 Likes

I keep getting this error when trying to run the automation.
Error: Unable to find notify service for webhook ID

check if your notify service didnt change

Any chance anyone know how to get the Notification Channel working with this blueprint? Iā€™ve modified it a bunch of different ways and I cannot get it to work. I feel like what I have here looks right, but Iā€™m no expert.

blueprint:
  name: Test2
  description: 'Send actionable notifications to an Android device
    '
  domain: automation
  input:
    notify_device:
      name: Device to notify
      description: Device needs to run the official Home Assistant app to receive
        notifications
      selector:
        device:
          integration: mobile_app
          multiple: false
    trigger_entity:
      name: Trigger entity
      description: Send the notification when this boolean turns on
      selector:
        entity:
          domain: input_boolean
          multiple: false
    notification_title:
      name: Notification title (Optional)
      description: The title of the notification
      default: ''
    notification_message:
      name: Notification message (Optional)
      description: The message of the notification
      default: ''
    notification_tag:
      name: Notification tag (Optional)
      description: The tag of the notification
      default: ''
    notification_channel:
      name: Notification channel (Optional)
      description: The channel of the notification
      default: ''
    notification_timeout:
      name: Notification timeout (Optional)
      description: Length of time the notification is displayed
      default: ''
    persistent_notification:
      name: Create persistent notification?
      description: Persistent notifications cannot be dimissed by swiping away
      default: false
      selector:
        boolean: {}
    action_1_title:
      name: First action name
      description: Name of the first button
      default: ''
    action_1_uri:
      name: URI for action 1 (Optional)
      description: Optional URI for the first action
      default: ''
    first_action:
      name: Action 1
      description: Action to run when the first action is clicked
      default: []
      selector:
        action: {}
    action_2_title:
      name: Second action name
      description: Name of the second button
      default: ''
    action_2_uri:
      name: URI for action 1 (Optional)
      description: Optional URI for the second action
      default: ''
    second_action:
      name: Action 2
      description: Action to run when the second action is clicked"
      default: []
      selector:
        action: {}
    action_3_title:
      name: Third action name
      description: Name of the third button
      default: ''
    action_3_uri:
      name: URI for action 3 (Optional)
      description: Optional URI for the third action
      default: ''
    third_action:
      name: Action 3
      description: Action to run when the third action is clicked
      default: []
      selector:
        action: {}
  source_url: https://community.home-assistant.io/t/actionable-notifications-for-android/256773
mode: restart
max_exceeded: silent
variables:
  notify_device: !input 'notify_device'
  trigger_entity: !input 'trigger_entity'
  notification_title: !input 'notification_title'
  notification_message: !input 'notification_message'
  notification_tag: !input 'notification_tag'
  notification_channel: !input 'notification_channel'
  notification_timeout: !input 'notification_timeout'
  persistent_notification: !input 'persistent_notification'
  action_1_title: !input 'action_1_title'
  action_1_uri: !input 'action_1_uri'
  first_action: !input 'first_action'
  action_2_title: !input 'action_2_title'
  action_2_uri: !input 'action_2_uri'
  second_action: !input 'second_action'
  action_3_title: !input 'action_3_title'
  action_3_uri: !input 'action_3_uri'
  third_action: !input 'third_action'
trigger:
  platform: state
  entity_id: !input 'trigger_entity'
  from: 'off'
  to: 'on'
action:
- service: input_boolean.turn_off
  entity_id: !input 'trigger_entity'
- domain: mobile_app
  type: notify
  device_id: !input 'notify_device'
  title: '{{ notification_title }}'
  message: '{{ notification_message }}'
  data:
    tag: '{{ notification_tag }}'
    timeout: '{{ notification_timeout }}'
    persistent: '{{ persistent_notification }}'
    data:
      channel: '{{ notification_channel }}'
    actions: "{% set titles = [action_1_title, action_2_title, action_3_title] %}\
      \ {% set uris = [action_1_uri, action_2_uri, action_3_uri] %} {% set actions\
      \ = namespace(data = []) %}\n{% for title in titles %}\n  {% if title|length\
      \ %}\n    {% set uri = uris[loop.index - 1] %}\n    {% set action_name = \"\
      action\" + loop.index|string %}\n    {% set action = {\n      \"action\": \"\
      URI\" if uri|length else action_name,\n      \"title\": title,\n      \"uri\"\
      : uri \n      }\n    %}\n    {% set actions.data = actions.data + [action] %}\n\
      \  {% endif %}\n{% endfor %} {{ actions.data }}\n"
- wait_for_trigger:
    platform: event
    event_type: mobile_app_notification_action
- choose:
  - conditions: '{{ wait.trigger.event.data.action == ''action1'' }}'
    sequence: !input 'first_action'
  - conditions: '{{ wait.trigger.event.data.action == ''action2'' }}'
    sequence: !input 'second_action'
  - conditions: '{{ wait.trigger.event.data.action == ''action3'' }}'
    sequence: !input 'third_action'

1 Like

ditch the extra data line and move channel back in line with persistent and actions.

-face palms- I swear I tried that and it didnā€™t workā€¦ But it totally just worked. :clap: Thanks!

Thanks for this blueprint. One question though, is it possible that an action is executed if NO action button is clicked?

I have now made 3 options for the notification, but if neither is chosen, I want something to happen.

Thats a pretty good idea and would be nice to have

very cool with notify group. Can i add a camera image ? I can not add data / image on Push message

If you havenā€™t figured this out yet, youā€™re looking for this one: Actionable notifications for Android w/ Cam Snapshot - #10 by ams3401

I tweaked the code for my purposes to allow any entity state as a trigger. Iā€™m no BP expert so check the code but it works for me actioning one of two scripts when the cat door enters curfew mode unexpectedly.

Thanks to @vorion and @hunterjm for their code.

1 Like

Could this also be modified to

  • have a ā€œnormalā€ trigger field so you can use every trigger that a normal automation can have?

  • be able to set the notification channel from the BP?

Best regards
Aaron

I would love to see the same like @aaroneisele55 said.

I would love to select my own trigger, and not be limited to a input boolean.
I just want to send a notification if lights are still on. And then have the option to turn it off with the notification.

totally agree, same for me

1 Like

Is there a way to add the custom notification icon the same as other notification/alerts ive tried adding notification_icon:mdi but it doesnā€™t work.

Thanks

Awesome work. I was wondering if instead of an input.boolean triggering the automation we could have time based reminders within the blueprint?
At the moment I have to create a reminder automation to set the input.boolean to turn on which in turn then sends this blueprint notification. Frankly it would eliminate the input.boolean and the additional automation.

1 Like