Integracije
Webhooks
Dohodne končne točke webhook za Meta kanale: Facebook Messenger, Instagram DM in WhatsApp.
Hitre dejstvice#
| Osnovni URL | https://helpstack.eu/api/webhooks |
| Avtentikacija (preverjanje) | hub.verify_token se mora ujemati s konfiguriranim žetonom za preverjanje (rokovanje GET) |
| Avtentikacija (sprejemanje) | x-hub-signature-256: sha256=<HMAC-SHA256(rawBody, FACEBOOK_APP_SECRET)> |
| Content-Type | application/json |
| Vidnost | Končne točke so javne; varnost zagotavljata žeton in podpis |
Webhooks se prejemajo na helpstack.eu; ta URL za povratni klic registrirate na nadzorni plošči aplikacije Meta. Žeton za preverjanje in skrivnost aplikacije konfigurira HelpStack (glejte okoljske spremenljivke, navedene spodaj).
Kako deluje rokovanje (vsi ponudniki)#
Meta preveri webhook tako, da pošlje zahtevo GET s tremi parametri poizvedbe. HelpStack odmeva izziv samo če se žeton za preverjanje ujema.
GET /api/webhooks/facebook
?hub.mode=subscribe
&hub.verify_token=TOKEN
&hub.challenge=CHALLENGE
- Če se
TOKENujema s konfiguriranim žetonom za preverjanje → odgovori z200in surovo vrednostjoCHALLENGE. - V nasprotnem primeru → odgovori s
403.
Kako deluje preverjanje podpisa (vsi ponudniki)#
Vsak POST nosi glavo x-hub-signature-256. Podpis se izračuna nad surovo vsebino zahteve z HMAC-SHA256, zaklenjenim z FACEBOOK_APP_SECRET, z predpono sha256=.
x-hub-signature-256: sha256=<šestnajstiški HMAC-SHA256(rawBody, FACEBOOK_APP_SECRET)>
Primer v Node.js (kako izračunati/preveriti):
import crypto from 'node:crypto';
function verifySignature(rawBody, headerValue, appSecret) {
const expected =
'sha256=' +
crypto.createHmac('sha256', appSecret).update(rawBody).digest('hex');
return headerValue === expected;
}
Pozor — uporabite surovo telo. Podpis se izračuna nad točnimi bajti, ki jih je poslala Meta. HelpStack prebere telo kot surovo besedilo pred razčlenjevanjem JSON. Če gradite lastni preverjevalnik, ne znova serializirajte razčlenjenega objekta JSON (vrstni red ključev/presledki se bodo razlikovali in podpis se ne bo ujemal). Zajemite surovi niz telesa in izvajajte HMAC nad njim.
Facebook / Messenger#
| Končna točka za preverjanje | GET /api/webhooks/facebook |
| Končna točka za sprejemanje | POST /api/webhooks/facebook |
| Ključ podpisa | FACEBOOK_APP_SECRET |
| Okoljska spremenljivka žetona za preverjanje | FACEBOOK_VERIFY_TOKEN |
Oblika dohodne koristne obremenitve. Telo vsebuje polje entry[]. Vsak vnos ima bodisi:
entry[].messaging[]— podedovana oblika Messenger, alientry[].changes[]— novejša oblika.
Ujemanje kanala in obdelava. Upravljalnik ujame kanal po facebookPageId / credentials.pageId, nato:
- Ustvari ali posodobi pogovor, zaključen po pošiljateljevem PSID.
- Shrani dohodno sporočilo.
- Pridobi profil pošiljatelja in prenese priloge v shrambo.
- Odda dogodek v realnem času na nadzorno ploščo.
Instagram#
| Končna točka | GET/POST /api/webhooks/instagram |
| Ključ podpisa | FACEBOOK_APP_SECRET |
| Okoljska spremenljivka žetona za preverjanje | INSTAGRAM_VERIFY_TOKEN (vrne na FACEBOOK_VERIFY_TOKEN) |
Ujame kanale, upravljane prek OAuth, po id-ju računa Instagram. Rokovanje in preverjanje podpisa delujeta enako kot pri Facebooku.
WhatsApp#
| Končna točka | GET/POST /api/webhooks/whatsapp |
| Ključ podpisa | FACEBOOK_APP_SECRET |
| Okoljska spremenljivka žetona za preverjanje | WHATSAPP_VERIFY_TOKEN (vrne na FACEBOOK_VERIFY_TOKEN) |
Oblika dohodne koristne obremenitve. Telo vsebuje entry[].changes[].value s messages[] in contacts[]. Upravljalnik ujame kanal po credentials.phoneNumberId in zaključi pogovor po pošiljateljevi telefonski številki.
Okoljske spremenljivke#
| Spremenljivka | Uporablja jo | Namen |
|---|---|---|
FACEBOOK_APP_SECRET | FB, IG, WhatsApp | Ključ podpisa HMAC-SHA256 za x-hub-signature-256 |
FACEBOOK_VERIFY_TOKEN | FB (rezerva za IG/WhatsApp) | Žeton za preverjanje rokovanja GET |
INSTAGRAM_VERIFY_TOKEN | Žeton za preverjanje; vrne na FACEBOOK_VERIFY_TOKEN | |
WHATSAPP_VERIFY_TOKEN | Žeton za preverjanje; vrne na FACEBOOK_VERIFY_TOKEN |
Registracija na nadzorni plošči aplikacije Meta#
Za Messenger (enak vzorec velja za Instagram in WhatsApp z njihovimi končnimi točkami):
- Na nadzorni plošči aplikacije Meta odprite produkt (Messenger / Instagram / WhatsApp) → Webhooks.
- URL za povratni klic:
https://helpstack.eu/api/webhooks/facebook(Instagram:.../api/webhooks/instagram, WhatsApp:.../api/webhooks/whatsapp.) - Žeton za preverjanje: vrednost, ki ste jo nastavili v
FACEBOOK_VERIFY_TOKEN(ali žeton za posameznega ponudnika). - Kliknite Preveri in shrani — Meta pošlje rokovanje
GET; uspešno, ko se žeton ujema. - Naročite se na polja: naročite se na polja
messages/messaging, da se dostavijo dogodki sporočil. - Zagotovite, da se Skrivnost aplikacije ujema z
FACEBOOK_APP_SECRET, da preverjanje podpisa uspe priPOST.
Po shranjevanju pošljite testno sporočilo na stran/račun — prikazati se mora kot nov pogovor na nadzorni plošči.