AksiyonlarRandevu Alma (Cal.com)

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 önerir

Randevu 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ı:

AyarAçı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
AdAsistanın aldığı ad → kontaktaki ad soyadMüşteri
E-postaAsistanın aldığı e-posta → kontaktaki e-postarakamlar@phone.placeholder yer tutucusu (telefonun rakamlarından üretilir)
TelefonAsistanın aldığı telefon → aranan/arayan numaraBoş

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ğilMüş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 hataRandevunun ş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:

  1. Kullanıcının Cal.com entegrasyonu — Entegrasyonlar sayfasından kaydettiğin apiKey + etkinlik türü (önerilen yol).
  2. Aksiyonun takvim entegrasyonu — daha eski kurulumlarda aksiyona doğrudan bağlı takvim kaydı.
  3. Ortam değişkeni — sunucu genel CALCOM_API_KEY / CALCOM_EVENT_TYPE_ID değ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 condition alanı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

BelirtiOlası 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ış” diyorNe kullanıcı entegrasyonunda, ne aksiyonda, ne ortamda anahtar bulunamadı → Cal.com’u bağla.
Randevu açıldı ama takvimde yokYanlış 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” dediBeklenen davranış — istenen saat Cal.com’da dolu/müsait değil; asistan alternatif önerir.
Onay SMS’i gitmediOnay 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.

İlgili