RCS: Google RBM ve Twilio RCS, zengin kartlar ve SMS geri düşüşü
RCS (Rich Communication Services) kanalı Android mesajlaşma uygulamasına zengin kart, görsel ve öneri çipleri gönderir. RCS desteklemeyen cihazlar aynı mesajın metin karşılığını app'in SMS kanalından alır (ADR-0029 §3).…
RCS (Rich Communication Services) kanalı Android mesajlaşma uygulamasına zengin kart, görsel ve öneri çipleri
gönderir. RCS desteklemeyen cihazlar aynı mesajın metin karşılığını app'in SMS kanalından alır
(docs/adr/0029-whatsapp-rcs-iki-yonlu-sms-eposta-isindirma.md §3). Kanal, plan özelliği olarak SMS gerektirir.
1. Sağlayıcılar
| Sağlayıcı | Gerekenler | Notlar |
|---|---|---|
google_rbm | RBM ajan kimliği, servis hesabı JSON'u, webhook client_token | Gönderimden önce cihaz yeteneği sorgulanır; desteklemeyen cihaz doğrudan SMS'e düşer |
twilio | Account SID, Auth Token, RCS göndericili Messaging Service SID, isteğe bağlı Content SID | Zengin içerik Twilio Content API (HX…) ile; geri düşüş Twilio'da değil Pushizo'nun SMS kanalında yapılır |
mock | — | Yerel geliştirme ve E2E; numarası 0006 ile biten alıcı RCS desteklemiyor sayılır |
PUT /internal/v1/apps/{appId}/channels/rcs
{
"provider": "google_rbm",
"agent_id": "markam_agent",
"service_account": { "project_id": "rbm-proj", "client_email": "rbm@rbm-proj.iam.gserviceaccount.com", "private_key": "-----BEGIN PRIVATE KEY-----…" },
"client_token": "rbm-istemci-belirteci",
"sms_fallback": true
}
```text
Servis hesabı özel anahtarı, client token ve Twilio auth token zarf şifreli saklanır ve yanıtta dönmez. Webhook
adresini (`/hooks/rcs/{sağlayıcı}/{token}`) kanal kartından alıp RBM Partner Console'a veya Twilio Messaging Service
"Incoming messages" alanına girin. RBM olayları `X-Goog-Signature`, Twilio istekleri `X-Twilio-Signature` ile
doğrulanır.
## 2. İçerik
- `contents`: düz metin (en fazla 3072 karakter).
- `rcs_card`: bağımsız zengin kart — `title` (≤ 200), `description` (≤ 2000), `media_url` (https), `media_height`
(`SHORT`/`MEDIUM`/`TALL`), `orientation`.
- `rcs_suggestions`: öneri çipleri — yanıt (`reply`), bağlantı (`url`), arama (`dial`); metin ≤ 25 karakter; kartta
en fazla 4, metinde en fazla 11.
- `rcs_content_sid` + `rcs_content_variables`: Twilio Content API şablonu (değişkenler Liquid destekler).
- `rcs_fallback_text`: SMS geri düşüşünde gönderilecek metin.
Yalnızca RCS içeriği (kart, Content SID) olan bildirim ve kampanyalarda hedefte `channels: ["rcs"]` açıkça
verilmelidir.
## 3. SMS geri düşüşü
`sms_fallback` varsayılan olarak açıktır. Şu durumlarda teslimat SMS kanalından gönderilir ve teslimat kaydında
`fallback_channel = sms` görünür:
1. Cihaz RCS desteklemiyor (RBM yetenek sorgusu 404 veya Twilio geçersiz alıcı).
2. RCS gönderimi kalıcı hata aldı.
3. Gönderimden sonra webhook ile gecikmeli teslim hatası geldi (Twilio `failed`/`undelivered`, mock `failed`):
teslimat yeniden kuyruğa alınır ve SMS'e yönlendirilir; `sent` sayacı çift sayılmaz.
SMS metni sırasıyla `rcs_fallback_text`, kart başlığı + açıklaması veya `contents` ve ilk bağlantı önerisinden
üretilir. STOP ile SMS'ten çıkmış numaraya geri düşülmez; app'te aktif SMS kanalı yoksa teslimat
`SMS_FALLBACK_UNAVAILABLE` ile başarısız olur. Geri düşüş maliyeti SMS sağlayıcısına yazılır.
## 4. Gelen mesajlar
Kişinin metin yanıtı, öneri çipi seçimi (`content.payload` = postback) ve gönderdiği dosya **Gelen kutusu**nda RCS
konuşması olarak görünür; anahtar sözcükler RCS'de de çalışır (sözcüğün kanallarına `rcs` eklenmişse). Gelen
kutusundan RCS yanıtı metin olarak gönderilir.
## 5. Raporlama
Teslim ve okundu bilgileri RBM `DELIVERED`/`READ` ve Twilio durum geri bildirimleriyle teslimata işlenir; mesaj
sayaçlarında `sms_fallback` ayrıca tutulur.WhatsApp (Meta Cloud API): kurulum, şablonlar, oturum penceresi ve gelen kutusu
Pushizo, WhatsApp mesajlarını Meta'nın Cloud API'si üzerinden doğrudan gönderir; BSP veya ek barındırma gerekmez (ADR-0029). Kanal, plan özelliği olarak SMS gerektirir. Dış hesap olmadan geliştirme ve test için mock…
In-app mesajlar
Uygulama içi mesajlar — blok tabanlı modal/banner/tam ekran düzenleri, tetikler, kitle, sıklık, aksiyonlar, A/B varyantları, SDK sözleşmesi ve public API.