Slanje i primanje WhatsApp poruka iz Node.js
Primanje je ruta koja odgovara na Metinu GET provjeru i prihvaća POST zahtjeve. Slanje je poziv fetch prema proizvodu Cloud API s ID-om broja telefona i tokenom. Nema našeg SDK-a ni ičega za instalirati.
GET za Metinu provjeru i POST za događaje.
Vremenski prozor nakon poruke korisnika u kojem se šalje slobodan tekst.
Pogreška koja se vraća kada slobodan tekst pošaljete izvan tog prozora.
Kako primate poruke u Nodeu?
Jedna ruta s dvije metode, uz Express, Fastify, Next route handler ili obični poslužitelj.
GET odgovara na Metinu provjeru: iz upita pročitajte hub.mode, hub.verify_token i hub.challenge, usporedite token sa svojim i vratite challenge kao običan tekst. Vraćanje JSON-a uobičajena je pogreška i stvara endpoint koji nikad ne prima ništa, iako izgleda ispravno.
POST prima događaje. Odmah odgovorite s 200, a obradu provedite poslije. Meta ponavlja sve što je sporo, a rukovatelj koji obraduje podatke prije odgovora vidjet će istu poruku više puta. Posebno u serverless okruženju, vraćanje odgovora prije stavljanja posla u red čekanja sprječava da hladni početak uzrokuje duplikat.
Kako šaljete?
Poziv fetch prema messages endpointu proizvoda Cloud API za ID broja telefona, s tokenom u bearer zaglavlju.
Ništa u tome nije specifično za nas, pa zahtjev točno odgovara Metinoj dokumentaciji i nema pomoćnog sloja koji morate učiti ili o kojem postajete ovisni. Obje su vrijednosti na nadzornoj ploči, a get_api_credentials vraća ih kroz MCP konektor ako pomoćnik postavlja povezivanje.
Tijelo ovisi o vremenu. Unutar 24 sata od posljednje dolazne poruke korisnika pošaljite tekstualni objekt. Izvan tog roka pošaljite objekt predloška s odobrenim nazivom predloška i jezikom. Kôd koji šalje samo tekst prolazi svaki test i pada na prvoj poruci koja stigne preko noći.
Što je drugačije u serverless okruženju?
Dvije stvari, a obje se odnose na završetak funkcije prije završetka obrade.
Vraćanje 200 i nastavak obrade ne funkcioniraju kada se funkcija zamrzne čim pošalje odgovor. Upotrijebite ono što vaša platforma nudi za nastavak rada nakon odgovora ili stavite payload u red čekanja pa neka ga obradi zasebna funkcija. Meti je potrebna brza potvrda, a ne dovršena obrada.
Hladni počeci također povećavaju vjerojatnost sporih odgovora, što znači više ponavljanja i više duplikata. U ovom obliku deduplikacija prema ID-u poruke wamid nije neobavezna, nego je ono što rješenje čini pouzdanim.
Uobičajene pogreške
- Vraćanje challengea kao JSON-a umjesto kao sirovog tijela odgovora.
- Obrada prije slanja odgovora 200. U serverless okruženju funkcija se može zamrznuti čim pošalje odgovor.
- Preskakanje deduplikacije. Meta namjerno ponavlja zahtjeve, a duplikati su uobičajeni, ne rubni slučaj.
Povežite broj na easycoexistence.com, postavite odredište webhooka na svoju rutu i pročitajte ID broja telefona i token s nadzorne ploče. Od US$ 9 po broju mjesečno, a pri većem obujmu cijena pada na US$ 2; prvih 7 dana je besplatno.
Često postavljana pitanja
Trebam li biblioteku?
Ne. Dovoljni su ruta i fetch, a poziv točno odgovara Metinoj dokumentaciji.
Radi li ovo na Vercelu ili Lambdi?
Da, uz uobičajenu napomenu za serverless: prvo potvrdite primitak, a zatim obradite podatke kroz red čekanja ili mehanizam u pozadini, umjesto izravno u rukovatelju.
Kako mogu provjeriti da je zahtjev došao od Mete?
Provjerite zaglavlje potpisa prema tajni svoje aplikacije. To vrijedi učiniti čim endpoint postane javan.
Mogu li upotrebljavati TypeScript?
Da. S naše strane nema ničega što treba tipizirati jer je payload Metin i Meta ga dokumentira.
Nastavite čitati
Spremni za početak?
Postavite WhatsApp Coexistence u nekoliko minuta, a ne mjeseci. Aplikacija i dalje radi na telefonu.
Započnite besplatno probno razdobljeProvjereno na