
Yapay Zeka Sesli Ajanlarını CRM'e Bağlamak: HubSpot, Salesforce ve Pipedrive (Webhook Koduyla)
Bu yılın başında teslim ettiğimiz bir Vapi projesinde sesli ajan → kendi arama API'miz → HubSpot kişi okuma yolu p50'de 410ms, p95'te 1.240ms sürdü. Bu rakam bu yazının var olma nedeni. Sesli ajan CRM entegrasyonu, arayanın kontrol ettiği bir saate göre yaşar ya da ölür. Bir Zapier senkronizasyonu gibi kurarsanız, webhook kör kör ilerlerken ajan cümle ortasında susar. Çözüm daha fazla API çağrısı değil. İki kalıp, bir timeout ve bir geri dönüş cümlesi. İşte üçü de, doğrudan kullanabileceğiniz kodla birlikte.
Bu konudaki kılavuzların büyük çoğunluğu fikri öğretip ardından ürün satar. Handler'ı kimse göndermez. Biz tam tersini yapıyoruz.
Önemli Çıkarımlar
- Sesli ajanlar CRM'e iki şekilde bağlanır: çağrı sırasında canlı okumalar için function calling, çağrı sonrası yazmalar için webhook.
- Çağrı sırasındaki okumalar, arayanın sessizlik duymaması için 5 saniyelik bir bütçe ve söylenen bir geri dönüş cümlesi gerektirir.
- Çağrı verilerini CRM alanlarına idempotency anahtarıyla eşleyin; böylece yeniden denenen webhook'lar mükerrer kayıt oluşturmaz.
- Pipedrive'ın özel alan değişiklikleri için webhook'u yoktur; bunun yerine
dealFieldsuç noktasını zamanlanmış bir görevle sorgularsınız.
"Sesli Ajan CRM Entegrasyonu" Gerçekte Ne Anlama Gelir? (2 Yöntem, 1 Değil)
Sesli ajan CRM entegrasyonu, sesli ajanı CRM'inize iki farklı şekilde bağlar: arayan hattayken canlı veri okumaları için function calling ve çağrı sonucunu geri yazmak için webhook. Canlı okuma konuşmayı kişiselleştirir; çağrı sonrası yazma ne olduğunu kaydeder. Farklı saatlerde çalışırlar ve farklı şekillerde başarısız olurlar.
Tek cümlelik zihinsel model şu: function calling, sesli ajanın cümle ortasında CRM'inize soru sormasıdır; webhook ise ajanın kapatıp raporunu doldurmasıdır.
Function calling: veriyi canlı okumak
Function calling, bir LLM'nin metin üretmeyi durdurup tanımladığınız harici bir araç çağırması ve sonucu söyleyeceklerine dahil etmesidir. Sesli ajan için bu araç "bu arayanı CRM'de ara" işlevidir. Model veriye ihtiyaç duyduğuna karar verir, sunucunuz onu çeker ve ajan arayanı adıyla, plan katmanıyla selamlar. Daha derin mekanikleri merak ediyorsanız function calling rehberimiz araç tanım şemasını ayrıntısıyla açıklar. Tek sorun: bu işlem canlı gerçekleşir, dolayısıyla arayanın sabrıyla yarışırsınız.
Webhook: veriyi sonradan yazmak
Webhook, bir şey tamamlandığında sunucunuzun aldığı bir POST isteğidir. Sesli ajanlar için en önemlisi çağrı sonu olayıdır: platform çağrı biter bitmez size transkripti, özeti, durumu ve kayıt URL'ini gönderir. Siz bu veriyi CRM'e bir Aktivite olarak yazarsınız, ardından fırsat aşamasını ilerletirsiniz. Burada gecikme baskısı yoktur. Arayan gitmiştir. Yeniden deneyebilir, kuyruğa alabilir ve mutabakat sağlayabilirsiniz.
Üretim entegrasyonlarının büyük çoğunluğu ikisini birden kullanır. Canlı okuyun, sonra yazın.
Mimari: Gelen Bir Çağrıda Baştan Sona Ne Olur?
Sesli ajan CRM entegrasyonu, her gelen çağrıda sabit beş adımlı bir yaşam döngüsü izler. Çağrı gelir, ajan arayanın kaydını function call aracılığıyla canlı okur, konuşma gerçekleşir, bir çağrı sonu webhook'u tetiklenir ve handler'ınız sonucu CRM'e yazar, gerekiyorsa bir ekip üyesini bilgilendirir. Bu yazıdaki tüm kod örnekleri bu beş adımdan birine bağlıdır.
Adım adım akış:
- Gelen çağrı gelir. Platform (Vapi, Retell ya da kendi sesli ajan altyapınız) telefonu açar ve arayanı telefon numarasıyla tanımlar.
- Canlı arama (function call). Ajan arama aracınızı çağırır; bu araç CRM'i sorgular ve kişiyi, fırsat aşamasını ve son bağlamı döndürür.
- Konuşma. Ajan konuşur, gerekirse daha fazla araç çağırır (randevu slotlarını kontrol etmek, sipariş aramak gibi).
- Çağrı sonu webhook. Çağrı biter, platform sunucunuza bir çağrı sonu raporu POST'lar.
- CRM yazma + devir teslim. Handler'ınız Aktiviteyi kaydeder, durumu ayarlar, fırsatı ilerletir ve ekip temsilcisi için tam bağlamla bir görev oluşturur.
Kapak görseli tam olarak bunu eşler: bir gelen ok, "canlı okuma" ve "çağrı sonrası yazma"ya ayrılış, üç CRM hedef kartı ve bir devir teslim düğümü. Bu resmi aklınızda tutun. Aşağıdaki her şey sadece kutuları doldurmaktır.
Çağrı Sırasında CRM Verisi Okumak (ve Neden 5 Saniyelik Bütçeniz Var?)
Evet, sesli ajan çağrı sırasında CRM verisi çekebilir. Bunun için arama uç noktanıza çarpan ve ajanın bir sonraki cümlesinden önce dönen bir function call kullanır. Kısıtlama zamanla ilgilidir. Vapi'nin sunucu olayları belgelerine göre function tool call'lar bir timeout'a karşı çalışır; canlı çağrıda gerçek tavanınız API'nin değil arayanın sabrıdır. Beş saniye bütçeleyin ve bir geri dönüş hattınız olsun.
SERP'teki hiç kimsenin ölçmediği kısım şu: Vapi → iç arama API'si → HubSpot kişi okuma yolumuzda birkaç bin çağrı boyunca p50'de 410ms, p95'te 1.240ms gidiş-dönüş kaydettik. Çoğu okuma hızlı. Ama p95 kuyruğu (HubSpot oran sınırı geri çekilmesi, soğuk bir lambda, yavaş bir ilişki sorgusu) çağrıların sustuğu yerdir. Bu yüzden function-call araç timeout'unu 5 saniyeye ayarladık: p95'in rahatlıkla üzerinde, bir insanın "merhaba? orada mısınız?" diyeceği noktanın rahatlıkla altında.
Ve önemli kural şu: CRM aramanız arayanın sabrından uzun sürüyorsa, ajan bir şey söylemelidir. Sessizliğe asla izin vermeyin. Ölü hava, bir çağrıyı kaybetmenin en hızlı yoludur. Kendi projelerimizde ajan, araç timeout'a düşer düşmez bir geri dönüş cümlesi söyler: "Bir saniye, bilgilerinizi getiriyorum." Arayan bozuk bir bot değil, insan gibi bir duraklama duyar.
Canlı CRM araması için gönderdiğimiz function-call araç tanımı şu:
{
"type": "function",
"function": {
"name": "lookup_crm_contact",
"description": "Look up the caller in the CRM by phone number before greeting them. Returns name, plan, and open deal stage.",
"parameters": {
"type": "object",
"properties": {
"phone": {
"type": "string",
"description": "Caller phone number in E.164 format"
}
},
"required": ["phone"]
}
},
"server": {
"url": "https://api.yourdomain.com/voice/crm-lookup",
"timeoutSeconds": 5
}
}Bu tanımı sesli kullanım için güvenli kılan iki şey var. timeoutSeconds: 5 tavanı ajanın sonsuza kadar beklemeye almasını engeller. server.url ise doğrudan CRM'e değil kendi uç noktanıza işaret eder; böylece önbellekleme, yeniden deneme ve dönen verinin şekli sizin kontrolünüzdedir. Kendi deneyimimize göre ajan ile CRM arasına dahili bir API koymak alabileceğiniz en iyi kararın tekidir; geri dönüş mantığı ve alan eşleme orada yaşar.
Çağrı Sonrası Geri Yazmak: Aktiviteyi, Özeti ve Durumu Kaydetmek
Bir yapay zeka sesli ajan çağrısını CRM'e kaydetmek için platformun çağrı sonu webhook'unu alır, transkripti, özeti ve durumu çıkarır, ardından CRM'e kişiyle ilişkilendirilmiş bir çağrı Aktivitesi POST'lar ve müşteri adayı durumunu ayarlarsınız. Burada gecikme baskısı yoktur (arayan gitti), dolayısıyla ağır yazmaları, yeniden denemeleri ve canlı çağrı sırasında asla göze alamayacağınız fırsat aşama geçişlerini burada yaparsınız.
Çağrı sonu verisi (Vapi buna sunucu olayları belgelerinde end-of-call-report olayı der) transkripti, oluşturulmuş özeti, çağrı sonucunu, kayıt URL'ini ve çağrı süresini taşır. Sizin işiniz bunu CRM Aktivitesiyle eşlemek ve kaydı ilerletmektir.
Aşağıda raporu alıp bir HubSpot çağrı engagement'ı yazan ve ardından fırsat aşamasını ilerletenler çalışır bir Node/TypeScript handler'ı var. POST /crm/v3/objects/calls uç noktası ve kişiye ilişkilendirme kalıbı HubSpot'un çağrılar API rehberinden geliyor:
import express from "express";
const app = express();
app.use(express.json());
const HUBSPOT_TOKEN = process.env.HUBSPOT_TOKEN!;
const seen = new Set<string>(); // swap for Redis/DB in production
app.post("/voice/end-of-call", async (req, res) => {
const report = req.body.message; // Vapi end-of-call-report
if (report?.type !== "end-of-call-report") return res.sendStatus(200);
const key = report.call.id; // idempotency key (see field-mapping section)
if (seen.has(key)) return res.sendStatus(200);
seen.add(key);
const { contactId, dealId } = report.call.metadata; // set when call started
// 1. Write the call Activity (engagement)
await fetch("https://api.hubapi.com/crm/v3/objects/calls", {
method: "POST",
headers: {
Authorization: `Bearer ${HUBSPOT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
properties: {
hs_call_title: "AI Voice Agent Call",
hs_call_body: report.summary,
hs_call_duration: String(report.durationMs ?? 0),
hs_call_recording_url: report.recordingUrl ?? "",
hs_call_status: "COMPLETED",
hs_timestamp: Date.now(),
},
associations: [
{
to: { id: contactId },
types: [{ associationCategory: "HUBSPOT_DEFINED", associationTypeId: 194 }],
},
],
}),
});
// 2. Move the deal stage based on disposition
if (dealId && report.analysis?.disposition === "qualified") {
await fetch(`https://api.hubapi.com/crm/v3/objects/deals/${dealId}`, {
method: "PATCH",
headers: {
Authorization: `Bearer ${HUBSPOT_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ properties: { dealstage: "qualifiedtobuy" } }),
});
}
res.sendStatus(200);
});
app.listen(3000);H1'in vaat ettiği işte buydu: bir açıklaması değil, kullanıma hazır handler. Bunu elle kodlayıp barındırmak istemiyorsanız, n8n gibi kodsuz bir iş akışı alternatifi aynı webhook'u alıp CRM'e görsel düğümlerle yazabilir; yeniden deneme ve hata yönetimi üzerindeki kontrol pahasına.
Çağrı Verilerini CRM Alanlarıyla Eşlemek (Mükerrer Kayıt Oluşturmadan)
Alan eşleme, her çağrı verisini belirli bir CRM nesnesine ve alanına bağlar: arayan niyetini fırsat özelliğine, durumu müşteri adayı durumuna, özeti Aktivite gövdesine. Üretimdeki iki sorun burada ısırır: ajanın sesli okuması için veriyi formatlamak ve yeniden denenen webhook'un aynı çağrı için ikinci kayıt oluşturmaması adına idempotency anahtarı kullanmak.
Kendi projelerimizde eşlemeyi tek bir yapılandırma nesnesinde tutuyoruz; böylece mühendis olmayanlar handler'a dokunmadan düzenleyebilir. Gerçek birinin şekli şöyle:
| Çağrı verisi | CRM nesnesi.alanı | Tür | Örnek |
|---|---|---|---|
| arayan niyeti | deal.intent_summary | string | "Pro plan demo istiyor" |
| durum | contact.lead_status | enum | "qualified" |
| çağrı özeti | call.hs_call_body | string | "Fiyatlandırma tartışıldı, demo ayarlandı" |
| kayıt URL | call.hs_call_recording_url | url | "https://..." |
| süre (ms) | call.hs_call_duration | number | 184000 |
| nitelikli bayrak | deal.dealstage | enum | "qualifiedtobuy" |
Birinci sorun: konuşmaya uygun formatlama. Ham JSON'ı arayana okuyan sesli ajan bozuk duyulur. CRM verisini modele göndermeden önce cümleye çevirin. Modele {"plan":"pro","renewed":"2026-03"} döndürmeyin. "Pro plandalar, geçen Mart'ta yenilendi" döndürün; ajan bunu doğal biçimde söylesin.
İkinci sorun: idempotency. Sesli platformlar webhook'ları yeniden dener. Handler'ınız idempotent değilse aynı çağrı iki kez kaydedilir ve mükerrer kayıt alırsınız. Çağrı ID'sini anahtar olarak kullanın:
const key = report.call.id;
if (await store.has(key)) return res.sendStatus(200); // already processed
await store.add(key);
// ...do the CRM writeÜretimdeki store, sunucu yeniden başlatıldığında belleğini kaybeden bellekteki Set değil, çağrı ID'sinde benzersiz kısıtlı Redis veya bir veritabanı satırıdır. Yukarıdaki Set demo için işe yarar; üretim için değil.
CRM'e özel bölümlerden önce, sesli kullanım açısından gerçekten önemli olan şeyler bakımından üç platformun farkı:
| HubSpot | Salesforce | Pipedrive | |
|---|---|---|---|
| Aktivite/çağrı nesnesi | engagement / crm/v3/objects/calls | Task / Activity | Activity |
| Fırsat nesnesi | Deal | Opportunity | Deal |
| Kimlik doğrulama | OAuth / private app token | OAuth | API token / OAuth |
| Çağrı sonrası yazma | engagement API | REST / Composite | Activities API |
| Özel alan webhook | evet | evet | hayır, dealFields'ı sorgulayın |
HubSpot Entegrasyonu (Vapi → HubSpot, Adım Adım)
Vapi → HubSpot entegrasyonu için canlı okumayı Kişi aramasına, çağrı sonrası yazmayı da söz konusu Kişi ve Deal'ine ilişkilendirilmiş bir çağrı engagement'ına eşlersiniz. HubSpot'un nesne modeli Kişi, Deal ve engagement'tan (Aktivite) oluşur; yazma hedefiniz POST /crm/v3/objects/calls uç noktasıdır. Bu, çoğu araştırmacının gerçekte aradığı vapi hubspot entegrasyonu kalıbıdır.
Canlı okuma, telefon numarasına göre GET /crm/v3/objects/contacts/search sorgulayan ve Kişiyle açık Deal'i döndüren arama uç noktanıza yapılan bir function call'dur. Çağrı sonrası yazma ise yukarıdaki bölümdeki handler'dır: bir çağrı engagement'ı oluşturur, ilişkilendirme tipi 194 üzerinden Kişiyle ilişkilendirir, ardından Deal'in dealstage'ini PATCH'ler.
İnsanların atladığı detay: HubSpot ilişkilendirmeleri tiplenmiştir. Çağrıdan kişiye ilişkilendirme belirli bir associationTypeId kullanır; bunu atlarsanız çağrı kişinin zaman çizelgesinde görünmez. HubSpot'un çağrılar API rehberi ID'leri listeler. Kimlik doğrulama için private app token tek bir çalışma alanında en hızlı yoldur; bunu birden fazla HubSpot hesabına gönderiyorsanız OAuth kullanın.
Salesforce Entegrasyonu (Nesneler, Kimlik Doğrulama, Gerçek Zamanlı Okuma/Yazma)
Salesforce sesli ajan entegrasyonu, çağrı sırasında Kişi veya Aday'dan okur ve sonrasında bir Görev (Aktivite nesnesi) yazar. Deal, Opportunity'de yaşar. Kalıp HubSpot'la aynıdır (canlı function-call okuma, çağrı sonrası yazma) ama nesne adları ve kimlik doğrulama akışı farklıdır. Yazma için REST API'ye veya Composite API'ye çarparsınız.
Canlı okuma için arama uç noktanız Salesforce'u SELECT Id, Name, Account.Name FROM Contact WHERE Phone = '...' gibi bir SOQL isteğiyle sorgular ve ajana döndürür. Çağrı sonrası yazma için Salesforce REST API rehberine göre WhoId'si Kişi/Aday'a ve WhatId'si Opportunity'e ayarlanmış bir Görev oluşturursunuz:
await fetch(
`${INSTANCE_URL}/services/data/v60.0/sobjects/Task`,
{
method: "POST",
headers: {
Authorization: `Bearer ${sfToken}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
Subject: "AI Voice Agent Call",
Description: report.summary,
Status: "Completed",
WhoId: contactId, // Contact or Lead
WhatId: opportunityId, // Opportunity
CallDurationInSeconds: Math.round((report.durationMs ?? 0) / 1000),
}),
}
);Sesle özel sorun şu: Salesforce OAuth token'ları sona erer ve canlı okuma için 5 saniyelik bütçenizi token yenileme sürecinin yarışmasını istemezsiniz. Token'ları arka planda bir zamanlamaya göre yenileyin, access token'ı önbelleğe alın ve sıcak tutun; böylece canlı arama asla yenileme maliyetini ödemez.
Pipedrive Entegrasyonu (Herkesin Atladığı)
Pipedrive entegrasyonu Kişiler, Deal'ler ve Aktiviteler üzerinden çalışır ve gerçek bir tuzağı vardır: özel alan değişiklikleri için webhook yoktur. Sesli ajanınız özel bir alan yazıyor ve bu değişikliğe başka bir yerde tepki vermeniz gerekiyorsa buna abone olamazsınız. Pipedrive, özel alan değiştiğinde size webhook göndermez; bunun yerine dealFields'ı zamanlanmış bir görevle sorgulamanız gerekir. Bunu neredeyse kimse ele almaz; bu yüzden sesli ajan Pipedrive entegrasyonları ince biçimlerde kırılır.
Sesli yaşam döngüsü temiz bir şekilde eşlenir: canlı okuma telefona göre GET /persons/search sorgular, çağrı sonrası yazma Kişi ve Deal'e bağlı bir Aktivite oluşturur (POST /activities), nitelendirme ise Deal'i bir sonraki aşamaya taşır. Standart şeyler.
Tuzak özel alanlarda. Pipedrive'da özel alanlar insan tarafından okunabilir bir adla değil 40 karakterlik bir hash anahtarıyla referans gösterilir; bu yüzden eşleme yapılandırmanızın plan_tier yerine dcf558aba6... gibi bir şey depolaması gerekir. Pipedrive'ın DealFields belgelerine göre bunlar için değişiklik olayı yoktur. Aşağı akış sisteminin ajanın özel alan güncellemesini bilmesi gerekiyorsa, GET /dealFields sorgulayıp son anlık görüntünüzle farkı alırsınız; bir cron ile. Zarif değil. Sadece Pipedrive'ın çalışma şekli bu; bunu sabah 2'de üretimde keşfetmek burada okumaktan çok daha kötü.
Müşteri Adayı Nitelendirme Devri: Deal'i İlerletmek ve Ekip Temsilcisini Bilgilendirmek
Devir teslim, sesli ajanın nitelendirmede deal aşamasını ilerlettiği, ekip temsilcisi için bir görev oluşturduğu ve temsilcinin konuşmayı bağlamıyla birlikte teslim aldığı yerdir. Doğru yapıldığında temsilci, soğuk bir isim ve telefon numarası değil, notları eklenmiş sıcak, nitelikli bir müşteri adayı devralır.
Mekanik olarak hepsi çağrı sonrası handler'da üç yazmadır: deal'i nitelikli aşamaya PATCH'leyin, temsilciye atanmış ve son tarihi olan bir Aktivite/Görev POST'layın, çağrı özetini görev gövdesine koyun. Temsilci CRM'ini açar, "Yapay zeka nitelendirdi: Pro demo istiyor, bütçe onaylandı, Perşembeyi tercih ediyor" görür ve hazırlıklı biçimde geri arar.
Hangi motorun üzerine inşa edeceğinize henüz karar veriyorsanız, hangi platformun CRM entegrasyonunu en iyi yönettiğine ilişkin karşılaştırmamız Vapi, Retell ve Bland'ın çağrı meta verilerini ve webhook olaylarını nasıl ortaya çıkardığını ele alır; bu fark devir tesliminin ne kadar temiz olacağını doğrudan etkiler.
Kendiniz Yapmak mı, Dışarıya Vermek mi? (Dürüst Saatler)
Üretim kalitesinde bir sesli ajan CRM entegrasyonu inşa etmek her CRM başına yaklaşık 20-40 saat sürer; saatler tahmin ettiğiniz yerlere gitmiyor. Mutlu yol okuma-yazması belki bir gün. Gerisi kimlik doğrulama token yönetimi, alan eşleme, geri dönüş yönetimi, idempotency ve CRM'in oran sınırları ile tuhaflıklarına karşı test etmektir. Peki bu gerçekten ne kadar sürer? İşte dürüst dökümü.
Kendi projelerimizde süre şöyle dağılıyor: kimlik doğrulama ve token yenilemede 3-5 saat, alan eşleme ve konuşmaya uygun formatlama katmanında 4-6 saat, geri dönüş ve timeout yönetiminde 4-8 saat, idempotency ve tekilleştirmede 3-5 saat, geri kalanı gerçek çağrı trafiğine karşı test etmektir. İlk CRM kalıbı öğretir; ikinci ve üçüncü daha hızlı gider ama her birinin kendine özgü tuzağı vardır; Pipedrive'ın özel alan webhook'unun yokluğu gibi.
Yapmalı mısınız yoksa satın mı almalısınız? Webhook uç noktası barındırabilecek bir geliştiriciye sahipseniz ve tek bir CRM entegre ediyorsanız, yapın. Bu yazı planınızdır. Üç CRM'e, çok kiracılı kimlik doğrulamaya ve HubSpot sizi saat 9'da oran sınırına alırken aramaya hazır birine ihtiyacınız varsa, hesap değişir. Bu kararı kendiniz yapın mı dışarıya mı verin rehberimizde ayrıntılı olarak ele alıyoruz; fiyatlandırma dökümümüz ise entegrasyon çalışmasının bir projeye ne kadar eklediğini gösteriyor.
Bunların hiçbirini yönetmek istemiyorsanız, bunu müşteriler için yapıyoruz. Techsy, CRM'inize bağlı üretim sesli ajanları sunar: function-call okumaları, webhook geri yazmaları, geri dönüş yönetimi, hepsi dahil. Baskı yok; yukarıdaki kod her iki durumda da kullanımınıza açık.
Yazar Hakkında
Mert Batur Gürbüz, Techsy.io'nun Kurucu Ortağı olup ekip B2B müşteriler için yapay zeka ajanları, otomasyon sistemleri ve sesli/SDR pipeline'ları oluşturmaktadır. Birmingham Üniversitesi'nde öğrenim görmekte ve Techsy ekibinin üretimde gerçekten kullandığı LLM araç yığını hakkında yazmaktadır. LinkedIn üzerinden bağlantı kurabilirsiniz.
Sıkça Sorulan Sorular
Yapay zeka sesli ajanı CRM ile nasıl entegre edilir?
Ajanı CRM'e iki şekilde bağlarsınız: çağrı sırasında canlı okumalar için function calling ve çağrı sonrası yazma için webhook. Ajan arayanı uç noktanız aracılığıyla canlı olarak arar, ardından çağrı sonu webhook'u handler'ınızı tetikler; bu handler CRM'e bir Aktivite kaydeder ve deal aşamasını günceller.
Sesli ajan çağrı sırasında CRM verisi çekebilir mi?
Evet. Ajan, arama uç noktanıza çarpan function calling kullanır; bu araç CRM'i sorgular ve ajanın bir sonraki cümlesinden önce kişi ve deal verisini döndürür. Canlı bir çağrıda API'nin değil arayanın sabrıyla yarıştığınız için 5 saniyelik araç timeout'u ve söylenen bir geri dönüş hattı ayarlayın.
Yapay zeka sesli ajan çağrılarını CRM'e nasıl kaydedersiniz?
Platformun çağrı sonu webhook'unu alırsınız; bu webhook transkripti, özeti, durumu ve kayıt URL'ini taşır. Handler'ınız bunları çıkarır, kişiyle ilişkilendirilmiş bir çağrı Aktivitesi veya engagement'ı CRM'e POST'lar ve müşteri adayı durumunu ayarlar. Arayan zaten kapatmış olduğundan burada gecikme baskısı yoktur.
Sesli ajanlar için webhook ile function calling arasındaki fark nedir?
Function calling, çağrı sırasında canlı bir okumadır: ajan konuşma ortasında CRM'inize soru sorar ve yanıtı hemen kullanır. Webhook ise çağrı sonrası bir yazmadır: platform çağrı bittikten sonra çağrı sonucunu sunucunuza POST'lar. Function calling saatlerle yarışır; webhook'lar yarışmaz.
Vapi, HubSpot, Salesforce ve Pipedrive ile entegre olur mu?
Vapi bu üçü için hazır bağlayıcı sunmaz, ancak function-call araçları (canlı okumalar) ve sunucu URL webhook'ları (çağrı sonrası yazmalar) aracılığıyla herhangi biriyle entegre olur. Bu araçları, HubSpot, Salesforce veya Pipedrive ile kendi REST API'leri üzerinden konuşan kendi uç noktanıza yönlendirirsiniz. Kalıp üç CRM'de de aynıdır.
Çağrı verilerini CRM özel alanlarına nasıl eşlersiniz?
Her çağrı verisi alanını bir CRM nesnesine ve alanına eşleyen bir yapılandırma nesnesi tutun. HubSpot ve Salesforce'ta özel alanlar okunabilir dahili adlar kullanır. Pipedrive özel alanları 40 karakterlik hash anahtarıyla referans gösterir; bu yüzden yapılandırmanız kolay okunur bir ad değil hash'i saklar. Ajan bunları sesli okumadan önce konuşmaya uygun biçimde formatlayın.
Sesli ajan çağrı sırasında CRM'i gerçek zamanlı güncelleyebilir mi?
Gerçek zamanlı okuyabilir; ancak üretim projelerinin büyük çoğunluğu yazmaları çağrı sonrasına erteler. Canlı okumalar hızlı olmalı ve güvenlidir. Canlı yazmalar ise gecikme riski taşır; ayrıca çağrı yazma ortasında düşerse kısmi güncelleme oluşur. Standart kalıp canlı oku, çağrı sonu webhook'unda yaz; bu arayan deneyimini korur.
Sesli ajanın mükerrer CRM kaydı oluşturmasını nasıl engellersiniz?
İdempotency anahtarı kullanın; çağrı ID'si bunun için mükemmeldir. Handler'ınız herhangi bir yazma yapmadan önce o çağrı ID'sini daha önce işleyip işlemediğinizi kontrol edin; öyleyse 200 döndürün ve atlayın. Anahtarı bellekte değil, sunucu yeniden başlatmalarında hayatta kalan ve çağrı ID'sinde benzersiz kısıt olan Redis veya veritabanında saklayın. Webhook'lar yeniden dener, bu yüzden idempotency zorunludur.
Retell, Pipedrive ile entegre olur mu?
Retell, yerleşik bir bağlayıcı listelenmese bile herhangi bir CRM'de olduğu gibi aynı function-call ve webhook kalıbıyla Pipedrive ile entegre olur. Retell'in çağrı olaylarını Pipedrive'ın Activities ve Deals API'lerini kullanan uç noktanıza yönlendirirsiniz. Özel alan sınırlamasına dikkat edin: Pipedrive'ın özel alan değişiklikleri için webhook'u yoktur, bunun yerine dealFields sorgularsınız.
Sesli ajan CRM entegrasyonu oluşturmak ne kadar sürer?
Üretim kalitesinde bir proje için her CRM başına yaklaşık 20-40 saat. Mutlu yol hızlıdır; süre kimlik doğrulama ve token yenileme, alan eşleme, geri dönüş ve timeout yönetimi, idempotency ve gerçek çağrı trafiğine karşı testedir. İlk CRM en yavaşıdır çünkü kalıbı öğretir. Sonraki CRM'lerin hepsinin kendine özgü tuhaflıkları vardır.