Jak umieścić atrybut w treści powiadomienia?

Pomóżcie bo już nie mam siły googlać…
Sprawa niby prosta - powiadomienie głosowe odczytujące treść wiadomości z telefonu.

image

Sensor last.notify przekazuje treść ostatniej wiadomości z telefonu do HA.
Warunek sprawdza tylko czy jestem w okolicy głośnika ale to nieistotne.
Nod action ma wysłać głosowe powiadomienie do głośnika za pomocą text to speech.

I niby wszystko działa… prawie wszystko. Nie potrafię żadnym sposobem wymusić na tym procesie, żeby w powiadomieniu zawarł “nadawcę”. Mówi mi treść bo to jest msg.payload ale nadawca jest “zaszyty” w atrybucie i tego już nie potrafię umieścić w polu Data, żeby zadziałało. Powiadomienie to pomija - czyta mi tylko treść.

{"entity_id":"media_player.home_assistant_voice_09723f_media_player","message":" Wiadomość od " & data.new_state.attributes["android.title"] & "o treści:" & msg.payload }

image

Przeczytałem już dziesiątki stron w internecie i na każdej jest co innego a w ogóle to już nic z tego nie rozumiem. Pomocy.

spróbuj tak …

{
  "entity_id": "media_player.home_assistant_voice_09723f_media_player",
  "message": "Wiadomość od " + data.new_state.attributes["android.title"] + " o treści: " + msg.payload
}


{
  "entity_id": "media_player.home_assistant_voice_09723f_media_player",
  "message": "Wiadomość od {{ data.new_state.attributes['android.title'] }} o treści: {{ msg.payload }}"
}

Dołącz noda debug z complete msg object przed nodem głośnika i pokaż co on tam wypluwa …

Teraz mówi tylko “Wiadomość od o treści”

{"payload":"No to wskazuje na moduł bębna","data":{"entity_id":"sensor.xcover5_last_notification","old_state":{"entity_id":"sensor.xcover5_last_notification","state":"No to wskazuje na moduł bębna","attributes":{"android.appInfo":"ApplicationInfo{e709e9a com.facebook.katana}","android.conversationUnreadMessageCount":0,"android.hiddenConversationTitle":"null","android.infoText":"null","android.isGroupConversation":false,"android.largeIcon":"null","android.messages":["{extras={}, sender_person=android.app.Person@b732e44b, sender=Mateusz Turowski, text=No to wskazuje na moduł bębna, time=1736109398984}"],"android.messagingStyleUser":"{key=null, uri=null, icon=null, name=Wojciech Oszust, isBot=false, isImportant=false}","android.messagingUser":"android.app.Person@37eeec13","android.progress":0,"android.progressIndeterminate":false,"android.progressMax":0,"android.reduced.images":true,"android.remoteInputHistory":"null","android.selfDisplayName":"Wojciech Oszust","android.showChronometer":false,"android.showWhen":true,"android.subText":"null","android.template":"android.app.Notification$MessagingStyle","android.text":"No to wskazuje na moduł bębna","android.title":"Mateusz Turowski","androidx.core.app.extra.COMPAT_TEMPLATE":"androidx.core.app.NotificationCompat$MessagingStyle","category":"null","channel_id":"16%#$messaging%#$1213301879","extras_iicg":true,"extras_mib_armadillo_thread_pk":"25","extras_mib_thread_key":"ONE_TO_ONE:25:1213301879","extras_ndid":"msg_410343511","extras_notification_type":"MESSAGING_IN_BLUE_DIRECT_MESSAGE","group_id":"highlighted_group","instance_key":0,"is_clearable":true,"is_ongoing":false,"jns":"null","package":"com.facebook.katana","post_time":1736109406494,"sort_key_score":0,"icon":"mdi:bell-ring","friendly_name":"Ostatnia wiadomość"},"last_changed":"2025-01-05T20:36:44.697443+00:00","last_reported":"2025-01-05T20:36:47.675251+00:00","last_updated":"2025-01-05T20:36:47.675Z","context":{"id":"01JGW2YFDV5YMXTB68WB7VCHMC","parent_id":null,"user_id":null},"timeSinceChangedMs":35300},"new_state":{"entity_id":"sensor.xcover5_last_notification","state":"No to wskazuje na moduł bębna","attributes":{"android.appInfo":"ApplicationInfo{e709e9a com.facebook.katana}","android.conversationUnreadMessageCount":0,"android.hiddenConversationTitle":"null","android.infoText":"null","android.isGroupConversation":false,"android.largeIcon":"null","android.messages":["{extras={}, sender_person=android.app.Person@b732e44b, sender=Mateusz Turowski, text=No to wskazuje na moduł bębna, time=1736109398984}"],"android.messagingStyleUser":"{key=null, uri=null, icon=null, name=Wojciech Oszust, isBot=false, isImportant=false}","android.messagingUser":"android.app.Person@37eeec13","android.progress":0,"android.progressIndeterminate":false,"android.progressMax":0,"android.reduced.images":true,"android.remoteInputHistory":"null","android.selfDisplayName":"Wojciech Oszust","android.showChronometer":false,"android.showWhen":true,"android.subText":"null","android.template":"android.app.Notification$MessagingStyle","android.text":"No to wskazuje na moduł bębna","android.title":"Mateusz Turowski","androidx.core.app.extra.COMPAT_TEMPLATE":"androidx.core.app.NotificationCompat$MessagingStyle","category":"null","channel_id":"16%#$messaging%#$1213301879","extras_iicg":true,"extras_mib_armadillo_thread_pk":"25","extras_mib_thread_key":"ONE_TO_ONE:25:1213301879","extras_ndid":"msg_410343511","extras_notification_type":"MESSAGING_IN_BLUE_DIRECT_MESSAGE","group_id":"highlighted_group","instance_key":0,"is_clearable":true,"is_ongoing":false,"jns":"null","package":"com.facebook.katana","post_time":1736109406494,"sort_key_score":0,"icon":"mdi:bell-ring","friendly_name":"Ostatnia wiadomość"},"last_changed":"2025-01-05T20:36:44.697443+00:00","last_reported":"2025-01-05T20:36:47.675251+00:00","last_updated":"2025-01-05T20:36:47.675Z","context":{"id":"01JGW2YFDV5YMXTB68WB7VCHMC","parent_id":null,"user_id":null},"timeSinceChangedMs":35300}},"topic":"sensor.xcover5_last_notification","_msgid":"a0ed4627020baee5"}
{
  "entity_id": "media_player.home_assistant_voice_09723f_media_player",
  "message": "Wiadomość od {{ data.new_state.attributes['android.title'] | default('Nieznany nadawca') }} o treści: {{ data.new_state.attributes['android.text'] | default('Brak treści') }}"
}

Bez zmian. Po prostu nie czyta tych parametrów.

Nie potrafię pomóc, sądziłem, że problemem jest użycie znaku & zamiast + w Twojej łączonej wiadomości.

Przerobiłem to już zanim napisałem tutaj.
Próbowałem formułować wiadomość w nodach switch, function… bezskutecznie.
Muszę skończyć 3 fakultety z informatyki, żeby w głośniku usłyszeć jedno dodatkowe słowo. Zawsze się mocno irytuję w takich sytuacjach.

Jak już przedmówca wcześniej wspomniał, dołącz noda debug, ustawiając jego opcję na complete msg object, przed nodem głośnika i pokaż co pojawia się w jego buforze.

Bo nie ma czego czytać.
Takie coś nie istnieje data.new_state.attributes['android.title']
Obserwuje od rana jak temat się rozwinie - bo to elementarz.

Ściema :slight_smile:
Gdy pobierzesz w ten sposób to zadziała

 msg.data.new_state.attributes['android.title']

Mi działa na podstawie twoich danych.
flows (74).json (5,1 KB)

Wstawiłem twojego noda “funkcja” w proces.

Przy okazji - kiedy ma być pojedynczy cudzysłów a kiedy podwójny?
Tu w cytacie jest ’ a w pliku jest " - głupieję.

Tak bezkrytycznie?.. proces był napisany tylko dla zasymulowania twojego problemu. Co prawda jest w nim rozwiązanie, ale musisz dostosować u siebie.
Na potrzeby testu jest msg.DATA.data.new_state.attributes['android.title'] o jedno DATA za dużo.

Tyle dało się zrobić na podstawie informacji, które załączyłeś.
Inna opcja…być może próbujesz odczytać atrybuty, które już zdążyłeś zamazać na co wskazuje (Type error).

Cały czas testuję. To co mi przychodzi do głowy to:
Jeśli “spreparowany inject” działa a po zmianie go na “event state” nie działa to może ja źle pobieram te dane z encji?
Może trzeba użyć innego noda inicjującego proces albo inaczej to skonfigurować?
Bo samą funkcję, którą mi podałeś ja na dziesiątki sposobów testowałem i taką pełną ścieżkę msg.data.new_state i tak dalej też…

EDIT:
Ok, nie zauważyłem tego drugiego data… nawet nie przyszło mi do głowy, że… dobra, nie ważne.
Zmieniłem i działa.
Dziękuję za pomoc.

Z jednego obrazka nie wywróżę.
Po to jest nod debug , który pozwala skopiować prawidłową ścieżkę, aby nie było spekulacji.

Edytowałem wpis ale chyba za późno. Zerknij wyżej.