Jak umieścić treść wiadomości w tytule powiadomienia?

Witam i przepraszam za lamerskie pytanie - nie znam javascript’u i raczej się go nie nauczę dla moich trzech potrzeb na krzyż ale bez tego nie mogę sobie poradzić z powiadomieniami na telefon.
Chodzi o konkretną rzecz - jak umieścić zawartość wiadomości (czyli msg.payload jak rozumiem) w tytule takiego powiadomienia? Chodzi o “call service node”.

{“title”:“Co tu wpisać?”}

Jeśli wpiszę tu tekst - wysyła się ale na 100 sposobów próbowałem umieścić tu jakąś komendę i zawsze mam API error.

Zacznij od filmów @artur -a

Oglądałem to zanim tu napisałem.
Przeglądałem też internet i dokumentację…
Mógłbym też oczywiście pójść na studia informatyczne ale ja po prostu zadałem proste pytanie o jeden szczegół…

Podaj przykład co chciałeś umieścić i w jakim celu.

Stworzyłem proces na podstawie filmu Artura o lokalizacji.
Jego zadaniem jest wysyłanie powiadomień, kiedy córka dotrze do strefy lub, którąś z nich opuści.

Funkcja tworząca wiadomość wygląda tak

image

A nod call service tak

To co chcę osiągnąć - żeby cała wiadomość wysłana była w tytule powiadomienia.
Nie wiem jak sformatować pole Data w tym nodzie - potrafię tam wstawić tekst (“tekst”) ale nie potrafię tam wstawić msg.payload bo wyrzuca mi API error.

image

Pisze że musi być string
chyba +msg.person+ masz jako boolean
zmień tą wiadomość w funkcji na “test” to zobaczysz czy w niej jest problem
DATA cała usuń
i w funkcji dodaj title

Przepraszam ale nic nie zrozumiałem :frowning:

zmień funkcje tworzącą wiadomość
message na “test” to zobaczysz czy w niej jest problem
w callservice DATA usuń wszystko
i w funkcji potem dopisz “title” : “test”,
i zobacz czy działa po kazdym kroku

a w ogole to zacznij od dodania debuga za funkcją tworzenia wiadomości to zobaczysz co Ci wysyła.

Ok, sprawdzę to (w tej chwili wpadłem tylko po kawę, więc później) ale od razu powiem, że wcześniej powiadomienia szły na maila i wszystko było ok, zresztą skopiowałem ten proces z filmu Artura.
Teraz zmieniłem wysyłanie z maila na aplikację w telefonie i sam czysty tekst idzie dobrze, bez błędu.
Napisałem 5 osobnych nodów i w nich po prostu “z palca” tekst powiadomienia i działa ale chciałem, żeby to jednak wciąż było “automatycznie”.

Albo w nodzie function cos takiego:

msg.payload = {
  data: {    
      "title": msg.person,
      "message": msg.person + " " + msg.czasownik + " do domu"
  }
}

return msg;

Albo w nodzie call service w polu data (wybrane J: expression):

{
    "message": & person & " " & czasownik & " do domu",
    "title": & person & "jakiś tam tekst"
}

Wiadomość generuje się prawidłowo z noda funkcja ale nod call service nadal wyrzuca błąd API.

image

Ten drugi sposób nie załatwia sprawy, bo to w zasadzie to samo co moje rozwiązanie z wpisywaniem gotowych powiadomień dla każdej sytuacji osobno.

Podobny problem opisany został tutaj ale… u mnie to nie działa.

Pokaż konfigurację noda call service albo wklej tu swoje flow

flows.json (6,9 KB)

W tej konfiguracji wyrzuca błąd - nie podoba mu się to co wpisałem w nodzie call service.

W nodzie call service pole “data” puste, bo wypełniasz je w nodzie funkcyjnym.
image
W nodzie funkcyjnym zmień na

msg.payload =
{
   "data":
   {
   "message":""+msg.person+" "+msg.czasownik+" do domu",
}
}
return msg;

A jak chcesz powiadomienie na wypasie to:

var czas = new Date();
var czas_formatowany = czas.getHours() + ":" + czas.getMinutes() + ":" + czas.getSeconds() +" - "
msg.payload =
{
    "data":
    {
        "title": "Lokalizacja",
        "message": czas_formatowany+""+msg.person+" "+msg.czasownik+" do domu",
        "data": 
        {
        "ttl": 0,
        "priority": "high",
        "icon_url": "/local/icon/jakisobrazek.png",
        "color": "green",
        }
    }
}
return msg;
2 polubienia

Działa, przychodzą powiadomienia takie jak chciałem, wprawdzie nigdzie nie użyliśmy pola “title” ale co za różnica, skoro jest tak jak ma być :smiley:
Dziękuję po stokroć za poświęcony czas.

1 polubienie

post bardzo pomocny dla rozpoczynających przygodę z NodeRED … czy wiesz może jak zmienic

 + czas.getMinutes() +

aby pokazywało minuty z zerem na początku ?
np: 12:06:30
bo wyrzuca 12:6:30 ?

Możesz tak spróbować …

var czas = new Date();

var sformatowaneMinuty = czas.getMinutes().toString().padStart(2, '0');
var sformatowaneSekundy = czas.getSeconds().toString().padStart(2, '0');

var czas_formatowany = czas.getHours() + ":" + sformatowaneMinuty + ":" + sformatowaneSekundy + " - ";

1 polubienie