WhatsApp-yhdyskäytävä
WhatsApp-yhdyskäytävä
Sisäinen palvelu, jonka kautta muut järjestelmämme lähettävät WhatsApp-viestejä: vahvistuskoodin kirjautumiseen, tiedon että tilaus lähti matkaan, muistutuksen huomisesta ajasta. Sovellus tekee yhden rajapintakutsun eikä tiedä mitään WhatsAppin toiminnasta.
Palvelu on osa omaa infrastruktuuriamme, joten sen osoitetta ei julkaista tässä.
Mihin sitä käytetään
- Kertakäyttöiset vahvistuskoodit ja kirjautumisviestit
- Tapahtumapohjaiset viestit: tilaus vastaanotettu, kuski matkalla, varaus vahvistettu
- Muistutukset ja tiedotteet, joissa vastaanottaja on antanut luvan
- Yksi lähetyskanava kaikille projekteille — jokainen sovellus ei rakenna omaansa
Miten se toimii
Rajapintakutsu ei lähetä viestiä suoraan. Viesti kirjataan jonoon, ja erillinen lähetyssolmu poimii sen sieltä, lähettää ja raportoi tilanteen takaisin. Sama jono kantaa myös ajastetut viestit ja uudelleenyritykset.
Viestin tila kulkee selkeän ketjun läpi: jonossa → varattu → lähetetty → toimitettu → luettu, tai epäonnistunut. Lähettävä sovellus voi joko kysyä tilaa rajapinnasta tai antaa paluuosoitteen, johon muutokset työnnetään. Paluukutsut allekirjoitetaan HMAC-tiivisteellä, jonka vastaanottaja voi tarkistaa — kukaan ei voi syöttää sovellukseen väärennettyä "toimitettu"-tietoa.
Jokainen viesti on luokiteltava: vahvistus, tapahtumapohjainen, tiedote tai markkinointi. Kieltolista koskee tiedotteita ja markkinointia; vahvistuskoodi menee aina läpi, koska sen estäminen lukitsisi käyttäjän ulos omalta tililtään.
Kaksoislähetykset estetään sovelluksen antamalla tunnisteella: sama tunniste kahdesti tarkoittaa yhtä viestiä, vaikka verkko olisi katkennut kesken kutsun.
Tekniikka
- PHP + MySQL rajapinnalle, jonolle ja hallintanäkymälle
- Node.js-lähetyssolmut, jotka voi hajauttaa useaan pisteeseen
- Asiakaskohtaiset API-avaimet, kutsurajat ja käyttöoikeusrajaus
- Allekirjoitetut paluukutsut, uudelleenyritykset kasvavin välein
- Hallintanäkymä: solmut, viestit, tilat ja lokit