Randevu (Cal.com) Aksiyonu
Bir görüşmenin en pahalı anı, müşteri “olur, ne zaman uygun?” dedikten sonra “sizi geri arayacaklar” cevabıdır — o randevuların büyük kısmı geri dönüşte kaybolur. Randevu (Cal.com) aksiyonu bu kaybı sıfırlar: müşteri uygun bir gün söylediği saniye asistan Cal.com takvimine gerçek bir rezervasyon açar, saati sözlü teyit eder ve isterse yazılı onay SMS’i gönderir. Randevu, telefon henüz kapanmadan takvime düşer.
Bu sayfa aksiyonun kendisini anlatır: nasıl kurulur, asistan çağrı içinde randevuyu nasıl açar, kimin adına açar ve saat doluysa ne olur. API anahtarı + hesap bağlama tarafı için Cal.com Entegrasyonu sayfasına bak.
Nasıl çalışır?
Görüşme sırasında müşteri "salı 14:00 uygun" der
↓
Asistan Randevu aksiyonunu tetikler (tarih, saat, ad, e-posta, telefon)
↓
Purvisor kimlikleri çözer (asistanın verdiği bilgi → kontak → yer tutucu)
↓
Purvisor → Cal.com v2 API: rezervasyon (6 sn içinde kesin yanıt)
↓
Başarılı → asistan "randevunuz oluşturuldu" der → (varsa) onay SMS'i
Dolu → asistan "o saat dolu" der, alternatif önerirRandevu her zaman Cal.com v2 API üzerinden açılır (v1 kalıcı olarak kapatıldı, 410). Purvisor, Cal.com’a isteği gönderir ve yanıt için 6 saniye bekler; asistan tarafı yaklaşık 15 saniyede vazgeçtiğinden backend’in ondan önce kesin bir sonuç dönmesi şarttır — böylece “randevu oldu mu, olmadı mı” belirsizliği doğmaz.
Ön koşullar
- Bağlı bir Cal.com hesabı ve seçili bir etkinlik türü (event type) — Cal.com Entegrasyonu sayfasındaki adımlarla.
- Randevu aksiyonunun bağlanacağı hazır bir asistan (İlk Asistanını Oluştur).
- (Onay SMS’i kullanacaksan) bağlı bir Twilio hesabı — yazılı teyit Twilio üzerinden gider (NetGSM & Twilio SMS).
Kurulum
Cal.com’u bağla
Önce Cal.com hesabını Purvisor’a bağla: Entegrasyonlar → Cal.com kartından cal_live_... API anahtarını yapıştır. Adım adım: Cal.com Entegrasyonu.
Randevu aksiyonunu oluştur
Aksiyonlar → Randevu (Cal.com) ekranında yeni bir aksiyon ekle. Purvisor, kayıtlı anahtarınla Cal.com’dan etkinlik türlerini çeker ve açılır listede gösterir (bu aynı zamanda bağlantı testidir). Aksiyonun alanları:
| Ayar | Açıklama |
|---|---|
Aksiyon adı (name) | Zorunlu. Aksiyonu tanıman için etiket (örn. “Tanışma Randevusu”). |
Etkinlik türü (eventTypeId) | Asistanın açacağı randevu tipi. Listeden seç. Boş bırakırsan Cal.com entegrasyonunda kayıtlı etkinlik türü kullanılır. |
Süre (duration) | Referans süre (dakika), varsayılan 30. Gerçek randevu uzunluğunu Cal.com’daki etkinlik türü belirler. |
Koşul (condition) | Randevuyu yalnız belirli bir durumda aç (örn. “müşteri açıkça ilgilendiğini söylerse”). Boşsa asistan uygun gördüğünde açar. |
Onay SMS’i (confirmationSms) | Açıksa randevu oluşunca müşteriye yazılı teyit SMS’i gönderilir. Varsayılan kapalı. |
Onay mesajı (confirmationMessage) | SMS’in metni. {{booking_date}} ve {{booking_time}} yer tutucuları randevu tarih/saatiyle değiştirilir. |
📸 [Ekran görüntüsü: Randevu aksiyonu formu — etkinlik türü açılır listesi, süre, koşul, onay SMS’i]
Asistana bağla
Aksiyonu kaydettikten sonra ilgili asistanın aksiyonlarına ekle. Asistan yalnız kendisine bağlı randevu aksiyonunu tetikleyebilir. Bir asistana birden çok aksiyon bağlıysa, randevu aksiyonu tetiklenmesi gerektiğinde asistan o asistana bağlı ilk aktif randevu aksiyonunu kullanır. (Aksiyon bağlama: Asistan Oluşturma.)
Test et
Kendini test müşterisi yapıp asistanı ara; görüşmede net bir gün/saat söyle (“yarın 15:00 uygun”). Beklenen:
- Cal.com takviminde yeni bir rezervasyon belirir (kaynak/metadata:
purvisor-ai-incall). - Asistan telefonda randevuyu sözlü teyit eder.
- Onay SMS’i açıksa ve numaran varsa kısa bir teyit mesajı düşer.
Asistan randevuyu nasıl açar?
Görüşme sırasında asistan randevu aracını çağırdığında şu parametreleri iletir: tarih (date), saat (time, belirtilmezse 10:00), müşteri adı, e-posta, telefon ve isteğe bağlı konum. Purvisor bunları Cal.com’un beklediği UTC başlangıç saatine çevirir (varsayılan saat dilimi Europe/Istanbul, yani UTC+3) ve v2 API’ye rezervasyon isteği atar.
Perde arkasında Purvisor’un Cal.com’a gönderdiği istek şuna benzer — örnekte İstanbul saatiyle 10:00, UTC’de 07:00’a çevrilmiştir:
POST https://api.cal.com/v2/bookings
Authorization: Bearer cal_live_...
cal-api-version: 2024-08-13
Content-Type: application/json{
"start": "2026-07-20T07:00:00.000Z",
"eventTypeId": 123456,
"attendee": {
"name": "Ayşe Yılmaz",
"email": "ayse@ornek.com",
"timeZone": "Europe/Istanbul",
"language": "tr",
"phoneNumber": "+9053XXXXXXXX"
},
"metadata": { "callId": "...", "source": "purvisor-ai-incall" }
}Aynı çağrıda asistan aksiyonu iki kez tetiklerse Purvisor 120 saniyelik tekrar koruması uygular (aynı çağrı + aksiyon + parametreler): randevu bir kez oluşur, çift kayıt olmaz.
Kimlik çözümü (randevu kimin adına açılır?)
Randevunun katılımcı (attendee) bilgileri şu öncelik sırasıyla belirlenir — asistanın görüşmede topladığı bilgi önce gelir, yoksa kontak kaydından tamamlanır:
| Alan | Öncelik sırası | Bilgi yoksa |
|---|---|---|
| Ad | Asistanın aldığı ad → kontaktaki ad soyad | Müşteri |
| E-posta | Asistanın aldığı e-posta → kontaktaki e-posta | rakamlar@phone.placeholder yer tutucusu (telefonun rakamlarından üretilir) |
| Telefon | Asistanın aldığı telefon → aranan/arayan numara | Boş |
Müşterinin e-postası yoksa randevu yine de açılır: Purvisor telefon numarasından bir yer tutucu e-posta üretir (
rakamlar@phone.placeholder). Böylece “e-posta zorunlu” diye randevu düşmesi engellenmez — ama gerçek e-posta varsa Cal.com’un onay/hatırlatma e-postaları müşteriye ulaşır.
Onay: sözlü + yazılı
Randevu başarıyla oluşunca iki kanaldan teyit gelir:
- Sözlü — asistan telefonda randevuyu doğrular (tarih, saat ve müşteri adıyla). Bu otomatiktir.
- Yazılı (SMS) — yalnızca aksiyonda Onay SMS’i açıksa, Onay mesajı doluysa ve müşterinin telefonu varsa gönderilir. SMS Twilio üzerinden çıkar; Twilio bağlı değilse sözlü teyit yine yapılır ama SMS gitmez. Mesajdaki
{{booking_date}}ve{{booking_time}}yer tutucuları randevu tarih/saatiyle değiştirilir.
Saat doluysa veya hata olursa
Asistan her sonucu farklı ele alır — özellikle “dolu saat” bir sistem arızası değil, sıradan bir durumdur:
| Sonuç | Asistan ne yapar |
|---|---|
| Başarılı | Randevuyu sözlü teyit eder; onay SMS’i (varsa) gönderilir. |
| Saat dolu / müsait değil | Müşteriye o saatin dolu olduğunu söyler ve alternatif önerir (örn. bir saat sonrası veya ertesi gün). “Sistemde sorun var” demez. |
| Diğer hata | Randevunun şu an alınamadığını açıkça söyler, farklı gün/saat önerir. “Alındı” demez. |
| Zaman aşımı (6 sn içinde yanıt yok) | Durumun belirsiz olduğunu bilir; “teyit edip hemen size döneceğiz” der, kesin “yapıldı” demez. |
Bu davranışlar bilinçli: asistanın hiçbir koşulda müşteriye var olmayan bir randevuyu “oldu” diye bildirmemesi için tasarlanmıştır.
Kimlik bilgisi nereden gelir? (Cal.com anahtarı)
Aksiyon çalışırken Cal.com kimlik bilgisi şu sırayla çözülür:
- Kullanıcının Cal.com entegrasyonu — Entegrasyonlar sayfasından kaydettiğin
apiKey+ etkinlik türü (önerilen yol). - Aksiyonun takvim entegrasyonu — daha eski kurulumlarda aksiyona doğrudan bağlı takvim kaydı.
- Ortam değişkeni — sunucu genel
CALCOM_API_KEY/CALCOM_EVENT_TYPE_IDdeğerleri.
Kullanılacak etkinlik türü: aksiyonda seçtiğin eventTypeId varsa o; yoksa çözülen Cal.com entegrasyonundaki etkinlik türü. Hiç anahtar bulunamazsa asistan randevu açamaz ve “Cal.com entegrasyonu yapılandırılmamış” durumuna düşer.
KVKK notu
Randevu açarken müşterinin adı, telefonu ve (varsa) e-postası Cal.com’a aktarılır — bunların hepsi kişisel veridir:
- Asistan randevu için iletişim bilgisinin kaydedileceğini görüşme içinde açıkça belirtsin.
- Cal.com’un onay/hatırlatma e-postaları ve gönderdiğin onay SMS’i de bu rızanın kapsamında olmalı.
- Yalnız randevu için gereken alanları topla; asistanın gereksiz kişisel veri istemesini önle.
- Müşteri aranmak/mesaj almak istemediğini belirtirse asistanın “aranmama” (do-not-call) kaydını onurlandırdığını unutma.
Genel çerçeve: KVKK ve Veri Yönetimi.
İyi uygulamalar
- Kısa etkinlik türü seç — 15-30 dk’lık “tanışma” tipi görüşmeler telefonda en kolay kapatılan randevulardır.
- Müsaitliği Cal.com’da doğru tanımla — tampon (buffer) ve çalışma saatlerini gerçekçi ayarla ki asistan yalnız gerçekten uygun saatleri teklifsin.
- Onay SMS’ini aç — sözlü teyit + yazılı hatırlatma, randevuya gelmeme oranını düşürür. Bunun için Twilio’yu bağlamayı unutma.
- Koşul yaz — randevuyu her görüşmede değil, yalnız müşteri gerçekten ilgilendiğinde açtırmak için
conditionalanını kullan. - Saat dilimini kontrol et — varsayılan
Europe/Istanbul. Farklı bir bölgeyle çalışıyorsan Cal.com entegrasyonundaki saat dilimini gözden geçir.
Sorun giderme
| Belirti | Olası neden / çözüm |
|---|---|
| Etkinlik türü listesi boş | Cal.com API anahtarı Entegrasyonlar sayfasından kaydedilmemiş → Cal.com Entegrasyonu 2. adımı tekrarla. |
| Asistan “Cal.com yapılandırılmamış” diyor | Ne kullanıcı entegrasyonunda, ne aksiyonda, ne ortamda anahtar bulunamadı → Cal.com’u bağla. |
| Randevu açıldı ama takvimde yok | Yanlış etkinlik türü seçili olabilir veya o türün müsaitliği kapalı → etkinlik türünü ve Cal.com müsaitliğini kontrol et. |
| Asistan “o saat dolu” dedi | Beklenen davranış — istenen saat Cal.com’da dolu/müsait değil; asistan alternatif önerir. |
| Onay SMS’i gitmedi | Onay SMS’i kapalı, onay mesajı boş, müşteri telefonu yok veya Twilio bağlı değil → aksiyonu ve Twilio bağlantısını kontrol et. |
| Randevu yanlış saatte açıldı | Saat dilimi/UTC çevirimi — Cal.com entegrasyonundaki saat dilimini Europe/Istanbul (veya doğru bölge) olarak doğrula. |
| Müşteri e-postası olmadan randevu açıldı | Normal — Purvisor telefondan rakamlar@phone.placeholder yer tutucu e-posta üretir. Gerçek e-posta istiyorsan asistan görüşmede sorsun. |