PushizoDocs
Kanallar

İki yönlü SMS ve anahtar sözcükler

SMS, WhatsApp ve RCS'den gelen mesajlar Gelen kutusunda kişi bazlı konuşmalara yazılır; org veya app düzeyinde tanımlanan anahtar sözcükler gelen mesaja otomatik eylemlerle (tag, journey tetiği, otomatik yanıt,…

SMS, WhatsApp ve RCS'den gelen mesajlar Gelen kutusunda kişi bazlı konuşmalara yazılır; org veya app düzeyinde tanımlanan anahtar sözcükler gelen mesaja otomatik eylemlerle (tag, journey tetiği, otomatik yanıt, abonelik) karşılık verir (docs/adr/0029-whatsapp-rcs-iki-yonlu-sms-eposta-isindirma.md §4–5).

1. Gelen mesajları almak

SağlayıcıKurulum
TwilioKanal kartındaki webhook adresini (/hooks/sms/twilio/{token}) Twilio numarasının veya Messaging Service'in "A message comes in" alanına girin; istekler X-Twilio-Signature ile doğrulanır.
NetgsmWebhook gerekmez; worker gelen kutusunu periyodik yoklar ve aynı mesajı ikinci kez işlemez.
MockPOST /hooks/sms/mock/{token} gövdesi { "type": "inbound", "address": "+90…", "body": "…" } (yalnızca üretim dışı).

Gelen numara normalize edilir (E.164). Abonelik yoksa rızasız pending abonelik oluşturulur: kişi gelen kutusunda görünür ve ona yanıt verilebilir, ancak kampanyalar ona gitmez.

2. Yasal anahtar sözcükler

STOP/STOPALL/UNSUBSCRIBE/CANCEL/END/QUIT/İPTAL/RET/DUR aboneliği sonlandırır; START/YES/UNSTOP/BAŞLA yeniden abone eder (ve WhatsApp'ta rıza kaydeder); HELP/INFO/YARDIM/BİLGİ yardım yanıtı içindir. Bu sözcükler özel olarak tanımlanamaz ve her zaman özel sözcüklerden önce değerlendirilir.

3. Özel anahtar sözcük tanımlama

Dashboard'da Anahtar sözcükler ekranından veya API ile:

POST /v1/apps/{appId}/sms-keywords
{
  "keyword": "indirim",
  "channels": ["sms", "whatsapp"],
  "actions": {
    "add_tags": { "kampanya": "yaz" },
    "remove_tags": ["eski"],
    "event": { "name": "keyword_indirim", "properties": { "kaynak": "sms" } },
    "reply": { "text": "Kodunuz: YAZ20" },
    "opt_in": true
  }
}
```text

- **Kapsam:** `scope: "org"` org'un tüm app'lerinde geçerlidir; app'e özel tanım org genelindekinden önceliklidir.
  Aynı kapsamda aynı sözcük `409`.
- **Eşleşme:** Gelen metnin ilk sözcüğü (sondaki noktalama atılır). Türkçe büyük/küçük harf, noktalı/noktasız i ve
  aksan duyarsızdır: `indirim`, `İNDİRİM`, `Indirim!` aynı sözcüktür. Sözcük tek parça, harf/rakam, en fazla 30
  karakter.
- **Eylemler:** `add_tags`/`remove_tags` (kullanıcısı olmayan aboneliğe anonim kullanıcı bağlanır), `event` (olay
  kaydı → journey **olay tetiği** ile akış başlatılabilir), `reply.text` (otomatik yanıt; aynı kişi + sözcük için
  dakikada en fazla bir kez), `opt_in` (aboneliği rızayla `subscribed` yapar, kaynak `keyword`).
- Devre dışı (`enabled: false`) sözcük eylem çalıştırmaz.

## 4. Otomatik yanıt ve WhatsApp rızası
Otomatik yanıt, gelen kutusu yanıtı gibi tek aboneliğe işlemsel bir mesajdır (sessiz saat ve frekans sınırından
muaf) ve kanalın kurallarına uyar:

- **WhatsApp'ta rıza kaydı olmayan (`pending`) kişiye otomatik yanıt gönderilmez**; teslimat `no_opt_in` nedeniyle
  bastırılır ve konuşmada bastırıldı olarak görünür. Sözcükte `opt_in: true` eylemi varsa rıza önce kaydedilir ve
  yanıt gider — rıza toplama akışlarında (ör. "KATIL") bu eylemi kullanın.
- WhatsApp yanıtı oturum penceresi içinde olduğundan (kişi az önce yazdı) serbest metin olarak gider.
- SMS'te STOP ile çıkmış numaraya yanıt gönderilmez.

## 5. Gelen kutusundan yanıt
Konuşmayı açıp metin yazın (WhatsApp'ta şablon veya etkileşimli mesaj da seçilebilir, bkz.
[WhatsApp rehberi](/docs/channels/whatsapp)). API: `POST /v1/apps/{appId}/conversations/{id}/messages` `{ "text": "…" }`.
Abonelikten çıkmış veya geçersiz numaraya yanıt `422`. Konuşmalar okundu işaretlenebilir, kapatılıp yeniden açılabilir.

## 6. Saklama süresi
Konuşma mesajları kişisel veridir ve **teslimat saklama süresine** tabidir (varsayılan 90 gün; organizasyon ayarı veya
plan sınırı daha kısaysa o uygulanır). Süreyi aşan mesajlar ve son mesajı süreyi aşan konuşmalar günlük bakım işinde
silinir.

Bu sayfada