A WhatsApp Business API központi telepítése a Kubernetes Engine segítségével a Google Cloud Platformon

Az oktatóprogram célja, hogy megmutassa, hogyan kell beállítani a WhatsApp Business API-t egy Google Kubernetes Engine-en. Mielőtt elkezdenénk elvégezni a konfigurálást, röviden bemutatom, hogyan kérheti az API-hoz való hozzáférést.

Fontos: A beállítás, amelyet a GCP-n (Google Cloud Platform) végez, díjköteles lesz. Ezért szüksége lesz egy Google Cloud Projektre, amelyben engedélyezve van a számlázás.

Hogyan oszlik meg az oktatóprogram?

Ha már rendelkezik hozzáféréssel a WhatsApp Business API-hoz, akkor kihagyhatja az első és a második lépést.
  1. A WhatsApp Business API kérése a Facebook-hoz
  2. Állítsa be a WhatsApp üzleti fiók telefonszámát
  3. Kubernetes-fürt létrehozása a GCP-n az API-k hostolásához
  4. A Kubernetes klaszter nagy képe
  5. Kubernetes-fürt létrehozása a GCP-n.
  6. A WhatsApp API szolgáltatások beállítása a fürtön
  7. Küldünk üzenetet?

1. A WhatsApp Business API kérése a Facebook-hoz

Ez valószínűleg a leginkább bosszantó része annak a munkának, amelyet elvégzünk.

A WhatsApp GYIK oldalán láthatjuk, hogy a Facebook mit beszél „Hogyan szerezhetem be a WhatsApp Business API-t?”

Annak érdekében, hogy a vállalkozások és a felhasználók számára magas színvonalú élményt biztosítsunk, korlátozott nyilvános előnézetben vagyunk. Ha velünk szeretne dolgozni, nyújtson be további információt vállalkozásáról mérlegelésre, miközben tovább bővítjük elérhetőségünket, vagy keresse fel Facebook képviselőjét, ha már rendelkezik ilyennel.

Tehát először létre kell hoznia egy Facebook üzleti fiókot, majd létre kell hoznia egy WhatsApp üzleti fiókot. A két lépés elvégzéséhez kövesse a hivatkozás lépéseit.

A következő szakaszok feltételezik, hogy már hozzáféréssel rendelkezik a Facebook Business és a WhatsApp Business Fiókhoz.

2. Állítsa be a WhatsApp üzleti fiók telefonszámát

Ebben a lépésben hozzáad egy telefonszámot a WhatsApp üzleti fiókjához. Ezt a számot fogják használni az API-ban.

Más szavakkal, ez meghatározza, hogy a felhasználók milyen telefonszámot küldhetnek üzenetet a WhatsApp felhasználói fiókjukba, hogy kapcsolatba lépjenek az Ön API-jával.

Ebben a pillanatban rendelkeznie kell a WhatsApp fiókkal, amelyet az előző lépések során hozott létre.

Kattintson erre a linkre a fiókjához való közvetlen hozzáféréshez. https://business.facebook.com/settings/whatsapp-business-accounts/

Miután rákattintott a fiókjára, további lehetőségeket fog látni az oldal jobb oldalán. Kattintson a Beállítások fülre, és a WhatsApp Managerben.

A következő oldalon kattintson az „Telefonszám hozzáadása” gombra, és kövesse a varázslót, hogy készen álljon a számra. A varázsló befejezése után megjelenik egy oldal a telefonszámmal és egy gombbal, amellyel megkaphatja a „Tanúsítványát”. Ezt fogjuk használni a WhatsApp API beállításakor. Ebben a pillanatban csak másolja és illessze be a tanúsítványt valahova.

3. A Kubernetes klaszter nagy képe

A telepítés megkezdése előtt szeretném megosztani veled a hivatalos dokumentáció linkjét (https://developers.facebook.com/docs/whatsapp)

Ha megnézi ezt a dokumentációt, láthatja, hogy van néhány lehetőség az API telepítésére. Ebben az oktatóanyagban a Production / Dev konfigurációk keverékét használtam a fürt létrehozásához. Azért tettem, mert megértettem, hogy nincs szükségem egy nagyon nagy klaszterre az üzleti követelményeim teljesítéséhez.

Az alábbi kép a megoldás nagy képét mutatja.

Összefoglalva: a következő összetevők vannak:

  1. Kubernetes Engine: Ez a fürt fogja üzemeltetni a WhatsApp API szolgáltatás tárolóinak futását. 3 számítógéppel fog rendelkezni.
  2. Cloud SQL (MySQL): Az API konfigurálásához MySQL adatbázisra van szükségünk.
  3. Perzisztens lemez: A WhatsApp API fogja használni a szükséges média / dokumentum / fájlok tárolására.
  4. App Engine: Ez a webhook fogja tárolni, amelyet az API-val való interakcióhoz használunk, pl. Ezzel a horoggal, akkor "lehallgathat" minden üzenetet, amelyet az API-n keresztül küldenek, hogy eldöntsék, mit tegyünk, hogy válaszoljunk az üzenetre. A webhookról további részletek a hivatalos dokumentációban tekinthetők meg: https://developers.facebook.com/docs/whatsapp/api/webhooks.
A webhook jobb tisztázása érdekében képzelje el, hogy létrehoz egy szolgáltatást, ahol a felhasználó kérheti az utolsó rendelés kézbesítési állapotát. Amikor megcsinálják, elhallgatja az üzenetet, és néhány algoritmussal azonosítja, hogy a thair szándéka az, hogy megkapja a rendelés állapotát. Ezzel megkeresheti ezeket az információkat a háttérprogramjában, és küldhet egy üzenetet a válaszgal.

Most aprítsuk le a Kubernetes-fürtöt apró darabokra, és beszéljünk mindegyikről.

1 - Egy kicsit a WebApp, a CoreApp és a Master csomópontokról

A fenti architektúrában a whatsapp-web-központi telepítés, a whatsapp-coreapp-központi telepítés és a whatsapp-master-központi telepítés található.

Az alábbi meghatározás a https://developers.facebook.com/docs/whatsapp/high-availa//seps

A Webapp csomópont felelős az API forgalom kezeléséért, mint az eredeti Webapp tároló. A Coreapp csomópont felelős a WhatsAppba érkező és onnan érkező üzenetek forgalmának kezeléséért. Végül egy mester csomópont felel a Coreapp csomópontok figyeléséért a fürtben, tehát ha egy Coreapp csomópont meghal, akkor a forgalom egy másik Coreapp csomóponthoz irányítja a magas rendelkezésre állást. Lehet, hogy a fürtben több Webapp, Coreapp és Master csomópont is található.

2 - A terhelésgátló

Ezenkívül létre kell hoznunk egy Loadbalancer-et a Kubernetes-fürtön, így elérhetjük a WebApp-ot, hogy elvégezzünk valamilyen konfigurációt az API-nkon. A coreapp és a master többi szolgáltatása nem lesz kitéve.

3 - Az állandó lemez + NFS szerver

A megadott whatsapp-disk kötet médiafájlok tárolására szolgál. Alapértelmezés szerint a kötet a Docker gépen található könyvtárba van csatolva. De ebben az építészetben inkább egy állandó megosztott fájlrendszert állítok be.

E változás miatt létre kell hoznunk egy NFS szervert, egy médiakötet és egy médiakötet igényt a Kubernetes fürtön. Ez lehetővé teszi a fürt szolgáltatásai számára a lemezhez való hozzáférés kérését az egyidejű olvasás / írás céljából.

Az NFS Server használatának szükségességének jobb megértése érdekében kérjük, nézze meg az alábbi linkeket.
  • https://medium.com/platformer-blog/nfs-persistent-volumes-with-kubernetes-a-case-study-ce1ed6e2c266
  • https://stackoverflow.com/questions/39398408/how-can-i-map-a-docker-volume-to-a-google-compute-engine-persistent-disk
  • https://cloud.google.com/kubernetes-engine/docs/how-to/persistent-volumes/preexisting-pd?authuser=0

4 - A MySQL adatbázis

Hogy megértsük, miért van szükségünk az adatbázisra, megvizsgálhatjuk a GYIK-kérdésre adott választ a hivatalos weboldalon.

Miért kell a WhatsApp Business API klienst egy adatbázisban tárolnom? Miért nem létezik csak API, hogy felhívjam?
A WhatsApp és felhasználói értékelik a végpontok közötti titkosítást. A WhatsApp összes üzenete magas szintű titkosítással van titkosítva. Minden üzenetet titkosítunk feladó és fogadó kulcsokkal, amelyeket minden egyes üzenet elküldésekor előrecsúsztatunk. A WhatsApp nem tudja olvasni ezeket az üzeneteket, mert nem rendelkezik kulcsokkal az üzenetek visszafejtéséhez. A kulcsokat a felhasználó tárolja a mobil eszközön, és a vállalkozás az adatbázisban. Ez az oka annak, hogy a WhatsApp Business API kliens olyan hosztolt megoldás, amelyhez adatbázisra van szükség. Ha az API-t üzenetek küldésére használja, akkor a végpontok közötti titkosítás megszakad, ami ellentétes a WhatsApp filozófiájával.

4. Kubernetes-fürt létrehozása a GCP-n.

A következő lépések végrehajtásához szükség lesz egy google felhőfiókra, amelyben engedélyezve van a számlázás.

1) Szüksége van egy projektre a GCP-ben, ha még nem rendelkezik, hozzon létre egyet.

2) Lépjen a Kubernetes Motor> Klaszterek elemre

3) Kattintson a Cluster létrehozása gombra

4) Válassza a Standard fürt sablont

5) Töltse ki az alábbi mezőket, majd kattintson a létrehozás gombra.

  • Név: Adjon meg nevet, amellyel azonosítani szeretné a klaszterét
  • Helyszín: Zonal
  • Zóna: Válassza ki a legközelebbi zónát

A Node poolok szakaszban

  • Csomópontok száma: 3
  • Gép konfiguráció: Általános célú
  • Gépkonfiguráció - sorozat: N1
  • Gépi konfiguráció - Géptípus: g1-small

6) Még mindig a medence részben kattintson a További lehetőségek elemre, és igazolja, hogy az Automatikus frissítés engedélyezése és az Automatikus javítás engedélyezése jelölőnégyzetek be vannak jelölve. Ha nem, engedélyezze és kattintson a Mentés gombra. Egyébként kattintson a Mégse gombra.

7) Kattintson a létrehozás gombra

Ezzel a lépéssel befejezzük a Kubernetes-fürt beállítását. Most megkezdjük a WhatsApp API beállítását a fürtben.

5. A WhatsApp API szolgáltatások beállítása a fürtön

Mint mondtam már korábban, ez egy egyedi beállítás, a gyártás / fejlesztés ajánlásainak keverékével a hivatalos dokumentációból. Ezért megváltoztattam a szolgáltatások telepítéséhez használt fájlokat (azaz a CoreApp, a WebApp és a Master).

Ha szeretné, akkor saját igényeihez is igazíthatja. Eközben, ha csak úgy használja, ahogy van, akkor minden működni fog.

Osszuk fel néhány részre:

  • CloudSQL példány (MySQL) létrehozása és beállítása
  • Állandó lemez létrehozása
  • Klónozzon a konfigurációs fájlokat a GitHubból
  • Telepítse a Kubernetes hitelesítő adatait a Cloud Shell-en
  • Az NFS-szerver szolgáltatás beállítása a fürtön
  • Telepítse a CoreApp, WebApp és Master szolgáltatásokat a fürtbe
  • Fedezze fel a WebApp szolgáltatást az internetre
  • Ellenőrizze, hogy minden rendben van-e

5.1. CloudSQL példány (MySQL) létrehozása és beállítása

1) Kattintson az SQL-re a főmenüben

2) Kattintson a Példány létrehozása gombra, majd a Select MySQL elemre

3) Adjon nevet és gyökérjelszót

4) Igazolja, hogy a régió és a zóna ugyanaz, amelyet a Kubernetes-fürt létrehozásakor választott.

5) Az Adatbázis verzióban válassza a MySQL 5.7 lehetőséget

6) Kattintson a Konfigurációs beállítások megjelenítése> Csatlakozás elemre

7) Jelölje be a Privát IP lehetőséget, és hagyja, hogy az alapértelmezett hálózat be legyen jelölve.

8) Kattintson a létrehozás gombra

A példány létrehozásakor látni fogja a magán IP-t. Vegye figyelembe, mert ezt az információt a következő lépésekben fogjuk bemutatni.

5.2. Állandó lemez létrehozása

1) Lépjen a Compute Engine> Lemezek elemre, majd kattintson a Lemez létrehozása elemre

2) Töltse ki az alábbi mezőket, majd kattintson a létrehozás gombra.

  • Név: whatsapp-disk
  • Típus: Normál perzisztens lemez
  • Méret: 100 GB
  • Igazolja, hogy a régió és a zóna ugyanaz, amelyet a Kubernetes-fürt létrehozásakor választott.

5.3. Klónozzon a konfigurációs fájlokat a GitHubból

Végeztem néhány változtatást a WhatsApp API telepítéséhez használt YAML fájlokban, így ez jól működik a GCP környezetben.

Az összes fájl elérhető a https://github.com/guilhermegjr/WhatsApp-Business-API-Setup-Scripts.git weboldalon.

Mielőtt elkezdenénk elvégezni a konfigurációt, ki kell klónoznia ezt a lerakatot. Ehhez kövesse az alábbi lépéseket:

1) Nyissa meg a Cloud Shell-t a Google Cloud Projektben.

2) Futtassa a következő parancsot: git klón https://github.com/guilhermegjr/WhatsApp-Business-API-Setup-Scripts.git

3) Írja be a mappába, ahol a telepítési fájlok található, és futtassa a következő parancsot: cd WhatsApp-Business-API-Setup-Scripts / kubernetes /

Ezeket a fájlokat a következő lépésekben fogjuk használni. Tehát ne zárja be a Cloud Shell-t.

5.4. Telepítse a Kubernetes hitelesítő adatait a Cloud Shell-en

Meg kell tennünk ezt a lépést, hogy lehetővé tegyük a Kubernetes parancsok futtatását a Cloud Shellben, hogy telepítéseinket a fürtbe tegyük.

1) Lépjen a Kubernetes Motor> Klaszterek elemre és kattintson a Csatlakozás gombra.

2) Másolja a parancssort az alábbi képen látható másolás gombra kattintva.

3) Most illessze be a Cloud Shellbe a parancsot.

A Kubernetes hitelesítő adatait telepíti a felhőhéjba. Így most már kommunikálhat a fürttel.

Hagyja nyitva a felhőhéjat.

5.5. Az NFS-szerver szolgáltatás beállítása a fürtön

Az NFS-kiszolgálót használtam arra, hogy a fürt szolgáltatásai lehetővé tegyék a Perzisztens lemezre (azaz a WhatsApp-lemezre) való egyidejű olvasást / írást. Korábban már kifejtettem, miért kellett ezt megtennem.

A szolgáltatás telepítéséhez futtassa a következő parancsot a Cloud Shell-en.

Ne feledje, hogy a WhatsApp-Business-API-Setup-Scripts / kubernetes /
kubectl apply -f nfs-server.yaml

A felhőhéjon futó központi telepítés állapotát követheti.

kubectl kap hüvelyeket --watch 

5.6. Az összes CoreApp, WebApp és Master szolgáltatás beállítása

A következő szolgáltatások telepítéséhez való lépés előtt szerkesztenie kell a db.env fájlt a WhatsApp-Business-API-Setup-Scripts / kubernetes / mappában.

Helyezze ebbe a fájlba a MySQL-ben (CloudSQL) konfigurált privát IP-címet, felhasználónevet és jelszót. Most létrehoz egy whatsapp-config titkot. Erre a titokra hivatkoznak néhány következő telepítési fájlban.

kubectl hozzon létre titkos általános whatsapp-config --from-env-file = db.env fájlt

Ezután futtassa a következő parancsokat a szolgáltatások telepítéséhez:

kubectl apply -f volume.yaml
kubectl apply -f webapp.yaml
kubectl apply -f master.yaml
kubectl apply -f coreapp.yaml

A fenti parancsok futtatása után ellenőrizze az állapotot, és várja meg, amíg fut.

kubectl kap hüvelyeket

5.7. Fedezze fel a WebApp szolgáltatást az internetre

Ezen a ponton a fürt konfigurálva van, de az interneten nem látható. A láthatóság érdekében ki kell fednünk a whatsapp-web szolgáltatást. Ehhez a következő parancsot kell futtatnia.

kubectl feltárja a whatsapp-web-service szolgáltatást --type = LoadBalancer --name = whatsapp-web-service-lb

Most ellenőrizze a szolgáltatások állapotát, hogy megtudja, készen áll-e a külső IP a whatsapp-web-service-lb fájlban. Ellenőrizhetjük a következő parancsot futtató szolgáltatások állapotát.

kubectl kap szolgáltatásokat

A fenti képen látható a fenti parancs eredménye és a whatsapp-web-service-lb külső IP-je. Vegye figyelembe ezt az információt. A következő lépésekben használjuk.

5.8. Ellenőrizze, hogy minden rendben van-e

Ellenőrizzük, működik-e szolgáltatásunk és működik-e. Ezért el kell nyitnia egy böngészőt, és be kell írnia a https: // .

Ha minden rendben van, akkor látnia kell a WhatsApp admin oldalát, például az alábbi képet.

A WhatsApp Business API kliensnek alapértelmezett fiókja van - a fiók felhasználóneve admin és a jelszó titkos. Ezt a fiókot nem lehet eltávolítani vagy törölni a rendszerből. Biztonsági okokból meg kell változtatnia az admin jelszavát az első bejelentkezéskor.

5.9. A beállítás befejezése

Most, hogy a környezet felkészült és fut, csak néhány további lépést kell tennünk a konfiguráció befejezéséhez.

Jelentkezzen be az admin oldalra, majd kattintson a Regisztráció elemre, és töltse ki az összes információt, kivéve a kétlépcsős azonosító PIN-kódot. Azt is ki kell választania az ellenőrző kód fogadásának módszerét.

Ebben a lépésben szüksége lesz a 2. lépésben konfigurált telefonszámra és igazolásra. Állítsa be a WhatsApp üzleti fiók telefonszámát.

Kattintson az o elküldésre, és várjon, amíg megkapja az ellenőrző kódot. Amikor megkapja, töltse ki azt a mezőt, amely megjelenik az Ön számára, és fejezze be.

Abban a pillanatban, ha visszatér a Facebook Business oldalra, és ellenőrzi a telefonszámhoz való csatlakozás állapotát, látnia kell, hogy csatlakozik-e.

Küldünk üzenetet?

Most, hogy minden rendben van, bármilyen számra üzenetet küldhet.

Komolyan?? Tudok üzenetet küldeni ?? Humm, igen és nem.

Vessen egy pillantást a GYIK kérdésre a Facebook oldalakon.

Küldhetek üzenetet bármilyen felhasználónak bármikor? Nem.
Ha egy felhasználó kapcsolatba lép egy vállalattal, akkor a vállalkozás bármilyen típusú üzenettel válaszolhat a következő 24 órán belül. Az ilyen típusú üzenet ingyenes.
De ha a vállalkozás kapcsolatba lép egy felhasználóval, mielőtt a felhasználó üzenetet küld vagy több mint 24 óra elteltével, akkor a vállalkozás csak üzenetsablont küldhet. Ez egy fizetett értesítés.
A szabad formátumú szöveges és médiaüzenetek nem működnek ezen a 24 órás ablakon kívül. Ezek visszahívást eredményeznek, 470-es hibával.

Szóval, hogyan tesztelhetem az API-t ebben a pillanatban? Könnyen! Nyissa meg a WhatsApp alkalmazást okostelefonján, adja hozzá az API konfigurálásához használt számot ebben az oktatóanyagban, és küldjön neki üzenetet.

Most erre díjmentesen válaszolhat. Próbáljuk meg!

Az admin oldalon kattintson az Üzenetkezelés elemre, majd a Szöveg fülre. Töltse ki a Küldés üzeneteket a saját telefonszámát, írjon be egy üzenetet, majd kattintson az Üzenet küldése gombra.

Igen! Befejezzük a telepítést, és működik az API.

Szóval mi a következő?

Most, hogy megvan a saját WhatsApp API, létre kell hoznunk egy webhookot, hogy az összes üzenetet elküldjük a szolgáltatásunknak, és válaszoljunk rá. Ezenkívül proaktív üzeneteket küldhetünk felhasználóinknak programozási úton.

De a Webhook témáját egy másik bemutató ismerteti. Ha szeretné, átnézheti a hivatalos dokumentációt, hogy megtudja, hogyan kell csinálni. De ebben a pillanatban elmondhatom, hogy a webhook URL-jét az adminisztrációs alkalmazás Alkalmazásbeállításai között kell konfigurálni.

Sok szerencsét!

Ha bármilyen probléma merülne fel ezen oktatóanyag követése közben, kérjük, ossza meg. Megígérem, hogy megpróbálok segíteni.

Kövess minket a Twitteren Facebook és a Facebookon és az Instagram oldalon, és csatlakozzon a Facebook és Linkedin csoportjainkhoz .

Ahhoz, hogy csatlakozzon a közösséghez Slack team chat read️ olvassa el a heti Faun témákat , és csatlakozzon a közösséghez kattintson ide⬇

Ha ez a bejegyzés hasznos volt, kérjük, néhányszor kattintson a taps lap gombra, hogy megmutassa a szerző támogatását! ⬇