Firebase Cloud Messaging (FCM) je bezplatná služba od Google, která umožňuje odesílat push notifikace a datové zprávy do mobilních aplikací (Android, iOS) a webových prohlížečů. Napojit se na FCM lze jednoduše pomocí webhooků ve Flow kampani. Níže si ukážeme, jak lze tuto službu v Samba.ai zprovoznit.
Celý proces sestává ze 2 kroků:
- Vygenerování autentizačního souboru z vašeho FCM projektu a jeho konfigurace v Samba.ai.
- Definice webhook uzlu ve Flow kampani.
Autentizace FCM projektu
Pro úspěšné propojení Samby a FCM je třeba do Samby nahrát tzv. autentizační soubor ve formátu JSON. Níže naleznete návod, jak takový soubor z vašeho FCM účty vygenerovat.
Návod krok za krokem jak vygenerovat autentizační soubor z FCM
- Otevřete si Firebase konzoli na https://console.firebase.google.com/, vyberte si váš projekt a běžte do sekce Settings > Service accounts.

- Proklikněte se volbou pod „All service accounts“ – * service accounts.

- Tím se dostanete do Google Cloud Console. Vyberte vlevo nahoře sekci Service Accounts. Zde vyberte možnost +Create service account.

- Prohlížeč vyvolá automaticky stažení JSON souboru. Tento soubor nám prosím zašlete na support@samba.ai. Náš tým provede konfiguraci vašeho Samba.ai účtu a předá vám základní parametry pro definici vašeho webhook uzlu (viz níže).
Napojení na FCM skrze Flow kampaň
Příprava dat
Aby bylo možné odeslat zprávu příjemci, je potřeba mít k dispozici jeho FID (Firebase Installation ID) v rámci vlastních zákaznických parametrů v zákaznickém feedu. Parametr doporučujeme pojmenovat jednoduše, např. jen „fid“. Referenci na tento parametr uvedete v těle požadavku webhooku viz dále. Do parametru je třeba uvést pouze 1 hodnotu.
Definice webhook uzlu
Poté, co nám zašlete váš autentizační JSON soubor z vašeho FCM projektu, vám vytvoříme vzorový webhook uzel s napojením na váš konkrétní projekt. Pokud byste potřebovali uzel nastavit znovu, doporučujeme využít kopírování daného uzlu nebo celé Flow kampaně. Níže naleznete hodnoty pro váš uzel, které musí napojení na FCM splňovat.
Basics
-
Method: POST
-
Request URL:
https://fcm.googleapis.com/v1/projects/PROJECT_ID/messages:send-
Zde je třeba za
PROJECT_IDdoplnit konkrétní ID vašeho FCM projektu.
-
-
Authentication: Bearer token
-
Token:
{{ dynamic.[0].access_token }} -
Pre-request: ON
Pre-request
-
Method: POST
-
URL:
https://oauth2.googleapis.com/token -
Format: Multipart/Form-Data
- Cache response: 1 Hour
-
Part 1
-
Format: zvolte Custom a vyplňte: text/plain
-
Part name:
grant_type -
Filename: parameter
-
Body
-
urn:ietf:params:oauth:grant-type:jwt-bearer
-
-
- Part 2
-
Format: zvolte Custom a vyplňte: text/plain
-
Part name:
assertion -
Filename: parameter
-
Body
- Viz snippet níže, ve kterém je třeba podle vašeho autentizačního JSON souboru aktualizovat následující hodnoty:
- iss:
CLIENT_EMAILjeclient_emailz vašeho autentizačního JSON souboru - sign:
PROJECT_AUTHENTICATION_IDje hodnota, která vám bude sdělena po předání autentizačního JSON souboru
- iss:
- Viz snippet níže, ve kterém je třeba podle vašeho autentizačního JSON souboru aktualizovat následující hodnoty:
-
{{~ let "iat" (mul (div (now) 1800000 ) 1800) ~}}
{{~ let "exp" (add iat 3600) ~}}
{{~
jwt-create
c:iss="CLIENT_EMAIL"
c:scope="https://www.googleapis.com/auth/firebase.messaging"
c:aud="https://oauth2.googleapis.com/token"
c:iat=iat
c:exp=exp
alg="rs256"
sign="PROJECT_AUTHENTICATION_ID"
~}}
Payload
-
Batch sending: OFF
-
Request format: JSON
-
Body
{{~ let "fids" (split customers.[0].parameters.FID) ~}}
{
"message": { {{! This comment will not show up in the output}}
"fid": "{{~ fids.[0] ~}}",
"notification": {
"title": "Notification title",
"body": "Notification body"
},
"android": {
"priority":"high",
"notification": {
"title": "android title",
"body": "android body",
"sound": "default"
}
}
}
}
Příklad těla požadavku je pro případ, že se váš vlastní zákaznický parametr jmenuje FID a je v něm uvedeno vícero hodnot FID oddělených čárkami. Tato konstrukce zajistí, že se použije vždy jen první FID v rámci tohoto parametru pro daného zákazníka.
Pokud název zákaznického parametru obsahuje např. mezery, je třeba jej definovat následovně:
{{~ let "fids" (split (lookup customers.[0].parameters "Customer FID")) ~}}
Testovací zpráva
Kvůli speciálním požadavkům během autentizačního procesu nelze otestovat odeslání zprávy klasickým odesláním testovacího požadavku webhooku. Místo toho je třeba spustit celou Flow kampaň s tím, že:
- Ve Flow kampani ponecháte ideálně pouze 1 uzel a to ten webhookový s napojením na FCM.
- Před tento uzel vložíte segmentační uzel, který zajistí, že součástí vyhodnocení bude pouze 1 zákazník.
- V těle požadavku si dočasně namísto dynamického vkládání FID vložíte staticky váš testovací FID.
Pozor na formát komentářů v těle požadavku. Aby se zachoval validní výstupní JSON, doporučujeme používat pouze komentáře v následujícím tvaru vždy na konci řádku (nevkládat nové/prázdné řádky):
{{! This comment will not show up in the output}}
Původní podoba při dynamickém vkládání FID:
Podoba pro účely testovací zprávy:
Spuštění kampaně
Při vyhodnocování Flow kampaně platí jejich základní pravidla jako pro jakékoli jiné webhook uzly. To znamená, že:
- Jednotlivé webhook zprávy jsou v rámci jedné Flow kampaně deduplikovány přes zákaznické ID tak, aby se zamezilo opakovanému zaslání zprávy téhož druhu jednomu zákazníkovi.
- Pokud by mělo více zákazníků definován stejný FID, systém toto nijak neřeší a bude na stejné zařízení odesláno více zpráv.
Vyhodnocení kampaně
Po odeslání kampaně jsou k dispozici statistiky, které jsou běžné dostupné pro uzel webhook.
Pro detailnější vyhodnocení doporučujeme využít Google Analytics.






