WhatsApp Şablon Aksiyonu
Görüşme biter bitmez müşterinin telefonunda randevu onayı belirsin — asistan konuşmayı kapatırken onaylı bir WhatsApp Business şablonunu otomatik gönderir. “Size mesaj atalım mı?” deyip unutulan takipler biter; randevu, konum ve link müşteride yazılı olarak kalır. Sesli görüşmenin sıcaklığı, WhatsApp’ın kalıcılığıyla birleşir.
WhatsApp Şablon aksiyonu, asistana bağlanan bir aksiyondur (SMS ve e-posta gibi). Asistan bunu bir araç olarak çağırır; mesaj WhatsApp Business Cloud API üzerinden çıkar.
Nasıl çalışır?
Görüşme sırasında/sonrasında asistan WhatsApp aksiyonunu tetikler
↓
Purvisor onaylı şablonu seçer (ad + dil kodu + sıralı parametreler)
↓ (WhatsApp Business Cloud API — graph.facebook.com)
Mesaj SADECE aranan numaraya gider (alıcı kilidi)
↓
Gönderim ilgili call kaydına işlenir (whatsapp_messages)Görüşme sonrası mesaj gönderen uç (/api/agent/send-whatsapp) alıcı kilitlidir: mesaj yalnızca o görüşmenin numarasına gidebilir. Numara eşleşmezse istek 403 ile reddedilir. Bu, sızmış bir sırla asistanın rastgele numaralara mesaj atmasını engelleyen bir güvenlik önlemidir.
Ön koşullar
- Bağlı bir WhatsApp Business hesabı — telefon numarası kimliği ve erişim anahtarı (WhatsApp Business).
- Meta tarafında onaylanmış en az bir mesaj şablonu (aşağıya bakın).
- Aksiyonu çalıştıracak bir asistan — WhatsApp aksiyonu asistana bağlanmalı (Aksiyonlar Genel Bakış).
Onaylı şablon şartı. WhatsApp Business kurallarına göre, işletmenin başlattığı mesajlar (müşteri size son 24 saat içinde yazmadıysa) yalnızca Meta tarafından önceden onaylanmış şablonlarla gönderilebilir. Şablonu WhatsApp Manager’da oluşturup onaylatmadan bu aksiyon mesaj gönderemez. Serbest metin, sadece müşteriyle açık 24 saatlik görüşme penceresi içinde çalışır.
Kurulum
WhatsApp Business hesabını bağla
Önce Entegrasyonlar’dan WhatsApp Business hesabını bağla (WhatsApp Business). Purvisor önce senin hesabının kimlik bilgilerini (UserIntegration) kullanır; yoksa ortam değişkenlerine düşer.
Şablonu Meta’da onaylat
WhatsApp Manager’da bir mesaj şablonu oluştur ve onaya gönder. Şablon gövdesinde yer tutucular sıralı numaralanır — örneğin:
Merhaba {{1}}, randevunuz {{2}} tarihinde onaylandı. Konum: {{3}}Onay geldiğinde şablonun tam adını (örn. randevu_onayi) ve dil kodunu (örn. tr) not al. Aksiyonda bunları birebir gireceksin.
WhatsApp aksiyonunu oluştur
Panelde Aksiyonlar → WhatsApp → Yeni ile bir aksiyon tanımla. Alanlar:
| Alan | Açıklama |
|---|---|
| name | Aksiyonun panelde görünecek adı (zorunlu). |
| templateName | Meta’da onaylanmış şablonun tam adı (zorunlu). Birebir eşleşmeli. |
| templateLang | Şablonun dil kodu. Varsayılan tr. |
| templateParams | Şablondaki {{1}}, {{2}} yer tutucularını dolduran sıralı değer listesi. Sıra önemlidir: ilk değer {{1}}’e, ikincisi {{2}}’ye gider. |
| condition | Aksiyonun hangi koşulda çalışacağı (opsiyonel). |
| isActive | Aksiyon aktif mi (varsayılan açık). |
nameveyatemplateNameboşsa uç400 name ve templateName gereklidöner.
Oluşturma isteğinin gövdesi şöyle görünür:
POST /api/actions/whatsapp
{
"name": "Randevu onayı",
"templateName": "randevu_onayi",
"templateLang": "tr",
"templateParams": ["Ayşe Hanım", "14 Temmuz 15:00", "Kadıköy Şube"]
}Asistana bağla
Aksiyonu çalıştıracak asistana ekle (Aksiyonlar Genel Bakış). Artık asistan, prompt’unda tanımladığın koşula uyduğunda (örn. randevu açıldığında) bu şablonu gönderebilir.
📸 [Ekran görüntüsü: WhatsApp aksiyonu — şablon adı, dil, parametreler ve asistana bağlama]
Parametreler şablona nasıl yerleşir?
templateParams listesindeki değerler, WhatsApp Cloud API’ye bir gövde (body) bileşeni olarak sıralı gönderilir. Örneğin ["Ayşe Hanım", "14 Temmuz 15:00", "Kadıköy Şube"] şu çağrıya dönüşür:
{
"messaging_product": "whatsapp",
"to": "9053XXXXXXXX",
"type": "template",
"template": {
"name": "randevu_onayi",
"language": { "code": "tr" },
"components": [
{ "type": "body", "parameters": [
{ "type": "text", "text": "Ayşe Hanım" },
{ "type": "text", "text": "14 Temmuz 15:00" },
{ "type": "text", "text": "Kadıköy Şube" }
] }
]
}
}Parametre sayısı şablondaki {{n}} yer tutucu sayısıyla eşleşmeli. Eksik ya da fazla parametre gönderirsen WhatsApp API mesajı reddeder.
Asistan ne zaman gönderir?
Aksiyon, görüşme akışına göre iki noktada devreye girer:
- Görüşme sırasında — asistan, aracı çağırdığında (ör. randevu açar açmaz onay mesajı).
- Görüşme sonrası — otomatik takip mesajı olarak. Purvisor’ın görüşme sonrası WhatsApp ucu birkaç hazır mesaj tipi tanır:
| messageType | Ne için |
|---|---|
appointment_confirmation | Randevu onayı (tarih, saat, konum). |
transcript_summary | Görüşme özeti ve önemli noktalar. |
follow_up | Serbest takip mesajı (opsiyonel link ile). |
custom | Tamamen serbest metin. |
Bu tiplerin tümü aynı alıcı kilidine tabidir: mesaj yalnızca aranan numaraya gider. Hazır metin yerine onaylı bir şablon (templateName + templateParams) da gönderebilirsin — 24 saatlik pencere kapalıysa doğru yol budur.
İyi uygulamalar
- Şablonu önce onaylat. En sık takılınan nokta budur: aksiyonda yazdığın
templateName, WhatsApp Manager’daki onaylı adla birebir aynı olmalı. - Parametreleri sıralı düşün.
templateParamslistesinin sırası doğrudan{{1}},{{2}}sırasıdır. Ad, tarih, konum gibi değerleri şablon gövdesindeki sırayla ver. - Randevu aksiyonuyla birlikte kullan. Cal.com randevusu açıldıktan sonra onay şablonu göndermek en yüksek katılım oranını verir (Randevu (Cal.com)).
- Metinleri şablonda değil, parametrede değiştir. Sabit metni şablona, kişiye/duruma göre değişeni parametreye koy — böylece tek şablonla yüzlerce farklı mesaj çıkar. Yeniden kullanılabilir metinler için Mesaj Şablonları’na bak.
KVKK
WhatsApp mesajı, kişiye ulaşan ve kişisel veri taşıyan bir kanaldır — KVKK kapsamındadır.
- Açık rıza kapsamı. Müşteriden aldığın rıza, WhatsApp üzerinden bilgilendirme/ticari mesaj göndermeyi de içermeli. Rıza yoksa, yalnızca müşterinin başlattığı görüşme penceresinde yanıt ver.
- Alıcı kilidi = veri minimizasyonu. Görüşme sonrası mesaj yalnızca o görüşmenin numarasına gider; başka numaraya gönderim
403ile engellenir. Bu, yanlış kişiye mesaj gitmesini yapısal olarak önler. - Vazgeçme hakkı. Müşteri “mesaj istemiyorum / aranmak istemiyorum” derse, bunu görüşmede işaretle; asistanın “aramayın” (DNC) davranışı kişiyi tüm kampanyalardan çıkarır.
- İçerikte ölçülü ol. Şablon parametrelerine yalnızca gerekeni koy; hassas sağlık/finans verisini WhatsApp gövdesine yazmaktan kaçın.
Sorun giderme
| Belirti | Olası neden / çözüm |
|---|---|
| Mesaj hiç gitmedi | WhatsApp Business bağlı değil → WhatsApp Business; veya templateName Meta’da onaylı değil / adı birebir eşleşmiyor. |
| ”Template not found” / API hatası | Şablon adı veya templateLang dil kodu yanlış; ya da şablon henüz onaylanmadı. |
| Parametre hatası | templateParams sayısı, şablondaki {{1}}...{{n}} yer tutucu sayısıyla eşleşmiyor. |
phoneNumber does not match the call (403) | Görüşme sonrası mesaj yalnızca aranan numaraya gider — farklı numara reddedilir. |
| Mesaj gönderildi ama teslim edilmedi | Müşterinin 24 saatlik penceresi kapalı ve serbest metin gönderilmiş → onaylı şablon kullan. |
400 name ve templateName gerekli | Aksiyon oluştururken name veya templateName boş bırakılmış. |