|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > Netsim System Agent Kurulum ve Yönetim Kılavuzu > 5. Servis yüzeyleri > 5.11 WhatsApp webhook |
WhatsAppWebhook işlemcisi, WhatsApp Business Cloud API'nin (Meta) gönderdiği gelen
mesajları ve giden mesaj durumlarını (sent, delivered, read,
failed) kabul eder. Mesaj gönderme motorun WHATSAPP paketindedir (SQL
kılavuzu); bu işlemci yalnızca Meta'dan gelen çağrıları karşılar.
| Anahtar | Öndeğer | Anlam |
|---|---|---|
database | — | Olayların yazıldığı motor veritabanı: hizmette kayıtlı bir veritabanının adı; zorunludur, verilmezse istek 500 alır. Olaylar bu veritabanının ivd$whatsapp_event sistem tablosuna WhatsApp.RecordEvent ile yazılır; tablo adı sabittir. Firebird, PostgreSQL, ODBC ya da sqlite dosyası depolu olmalıdır: istek bir işçi süreçte koşar ve depoya o sürecin kendi bağlantısıyla (bağlantı havuzu) erişilir; :memory: sqlite deposuna yalnızca açan süreç erişebilir. |
verifyToken | boş | Meta panelinde webhook doğrulama belirteci olarak girilen değer. Boşsa doğrulama 403 alır. |
appSecret | boş | Meta uygulamasının gizli anahtarı (App Secret). Her POST'un X-Hub-Signature-256 başlığı ham gövdenin bu anahtarla HMAC-SHA256'sıdır. Boşsa bütün POST'lar reddedilir. |
mqTopic | /whatsapp/event | Yazılan her olayın bildirildiği MessageQueue konusu (sessionManager'da); boş dizge kapatır. Gövde JSON: eventId, eventKind (MESSAGE | STATUS) ve ivd$whatsapp_event kolonlarının camelCase adları (accountId, phoneNumberId, wamid, sender, senderName, recipient, messageType, status, text, mediaId, replyToWamid, errorCode, errorMessage, eventTime ISO 8601 UTC); boş alanlar yazılmaz, ham JSON gönderilmez. |
sessionManager | — | Bildirimin yayınlandığı oturum yöneticisi. Tüketiciler /message uygulamasına bağlandığı için onunla aynı olmalıdır (örnek conf: default). Tüketici POST /message/OpenSession (Basic) ve POST /message/SUBSCRIBE {"topic": "/whatsapp/event"} ile abone olur. |
/ ile verilir: https://<sunucu>/whatsapp/.
Eğik çizgisiz /whatsapp isteği 302 ile yönlendirilir. Ajan düz HTTP konuşur; Meta
HTTPS ister, TLS ters vekilin işidir.hub.mode=subscribe ve hub.verify_token eşleşirse
hub.challenge düz metin olarak döner; aksi 403, eksik parametre 400.200 {"result": true, "events": N, "duplicates": M}.
Aynı olay (tür + wamid + durum) ikinci kez yazılmaz; Meta'nın yeniden gönderimi bu yüzden
zararsızdır. Veritabanı hatası 500 (bağlantı havuzu sınırı 503 + Retry-After) döner ve
Meta olayı yeniden gönderir. Bozuk JSON 400 alır; WhatsApp dışı bir nesne 200 ile yok sayılır.
Bu uç ClientREST'in 202 sözleşmesini kullanmaz: Meta 2xx dışını yeniden deneme
sebebi sayar./broadcast,
/user/<ad> ve /session/<anahtar> kanallarına abonedir.IVEDI_Code/docs/whatsapp-paketi.md, 2B.
Canlı sınama: python NetsimSystemAgent/tools/whatsapp_webhook_test.py. Bu araç ajanın
yalıtılmış bir kopyasını ayrı bir portta başlatır ve kendi süreçlerini durdurur.