Nasıl Çalışır
- Araçları bir şemayla tanımlarsınız (aracın kabul ettiği argümanlar)
- Bir
endpointyapılandırması sağlarsınız (ThunderPhone’un API’nizi çağırdığı yer) veya araç çağrılarını kuruluşunuzun webhook’unda almak için bunu boş bırakırsınız - Görüşme sırasında yapay zeka, konuşmaya göre ne zaman araç kullanacağına karar verir
- ThunderPhone, araç argümanlarıyla birlikte endpoint’inizi çağırır
- API yanıtınız, konuşmanın devam etmesi için yapay zekaya geri iletilir
İşlev araçları, kendi API’nizi kullanma seçeneğidir. ThunderPhone ayrıca
endpoint gerektirmeyen, platform tarafından yönetilen araçlar da sunar:
uygulama bağlantıları (HubSpot, Salesforce, Slack,
Google Calendar, Google Sheets, Cal.com),
API bağlantıları ve
MCP sunucuları.
Araç Şeması
Her araç bu yapıyı izler:İşlev Tanımı
Endpoint Yapılandırması
endpoint yapılandırması yapay zeka modeline gönderilmez; yalnızca ThunderPhone tarafından araç çağrısını yürütmek için kullanılır.İki çağırma yolu
Sunucunuzun aldığı isteğin türü, aracın birendpoint değeri olup olmamasına bağlıdır:
Her iki yol da bloklayıcıdır — yapay zeka cümle ortasında sonucu
bekler — ve 20 sn zaman aşımına sahiptir. İşleyicileri hızlı tutun.
Karma kullanım mümkündür: kuruluşunda webhook URL’si bulunan bir görüşmede,
endpoint içeren araçlar doğrudan çağrılır, diğerleri ise webhook’a geri döner.
Doğrudan endpoint çağrıları
Yapay zeka birendpoint içeren bir aracı çağırdığında ThunderPhone,
URL’nize bir istek gönderir:
İstek Başlıkları
endpoint.headers içindeki özel başlıklar her zaman aynen eklenir;
bunlara ek olarak ThunderPhone ad alanına ait iki başlık bulunur:
X-ThunderPhone-Signature— kuruluş webhook gizli anahtarınızla anahtarlanmış, tam istek gövdesi baytlarının HMAC-SHA256 değeriX-ThunderPhone-Call-ID— Geçerli çağrı kimliği
endpoint.headers ile geçersiz kılınmadığı sürece
Content-Type: application/json ayarlanır — özel bir Content-Type
önceliklidir.
İstek Gövdesi
POST / PUT / PATCH için gövde, kanonik olarak serileştirilmiş
(sıralanmış anahtarlar, sıkıştırılmış ayırıcılar) yalnızca araç
bağımsız değişkenlerini içerir (sarmalayıcı yoktur):
GET / DELETE için bağımsız değişkenler sorgu parametreleri
olarak gönderilir ve gövde boştur — imza bu durumda boş bayt dizisi
üzerinden hesaplanır. Bkz.
Webhook imzalarını doğrulama.
Yanıt
Araç sonucunu içeren bir JSON yanıtı döndürün:{"data": "<text>"} olarak
sarmalanır; zaman aşımları ve bağlantı hataları yapay zekaya hata
olarak bildirilir; böylece ajan duraklamak yerine özür dileyip devam
edebilir.
Webhook modu dağıtımı
endpoint içermeyen araçlar, kuruluşunuzun eski webhook URL’sine
imzalı bir telephony.tool (telefon çağrıları) veya web.tool
(web çağrıları) isteği olarak gönderilir. Yürütmeden sonra webhook
endpoint’lerine teslim edilen denetim bildirimlerinden
farklı olarak, bu istek yürütmenin kendisidir — HTTP yanıtınız araç
sonucudur.
web.tool, from_number / to_number yerine origin_domain taşır.
Araç sonucuyla JSON olarak yanıt verin — doğrudan endpoint çağrılarıyla
aynı yanıt sözleşmesi geçerlidir. İstek, diğer tüm webhook’lar gibi,
ham gövde üzerinden kuruluş webhook gizli anahtarıyla imzalanır.
Abone olunan webhook endpoint’leri, her araç
yürütmesinden sonra (hangi yol yürüttüyse yürütülsün) aracın yanıtını
da içeren, engellemeyen bir
telephony.tool / web.tool bildirimi
ek olarak alır — denetim izleri için kullanışlıdır. Bkz.
olay kataloğu.İmza Doğrulama
Doğrudan araç çağrıları, webhook’larla aynı şekilde imzalanır:- Tam istek gövdesi baytları üzerinden HMAC-SHA256 (kanonik JSON — sıralanmış anahtarlar, ek boşluk olmadan)
- Kuruluşunuzun webhook gizli anahtarıyla anahtarlanır
GET/DELETEaraçları boş bayt dizisini imzalar
Örnek: Eksiksiz Randevu Akışı
Eksiksiz bir randevu rezervasyon sistemi için araç seti aşağıdadır:En İyi Uygulamalar
Açık açıklamalar yazın
Açık açıklamalar yazın
description alanı, yapay zekanın aracı ne zaman kullanacağını anlamasına yardımcı olur. Aracın ne yaptığını ve ne zaman uygun olduğunu açıkça belirtin.Hataları zarif bir şekilde ele alın
Hataları zarif bir şekilde ele alın
Genel 500 hataları yerine yapay zekanın anlayabileceği hata mesajları döndürün:
{"error": "No slots available for that date"}Yanıtları kısa tutun
Yanıtları kısa tutun
Yalnızca yapay zekanın konuşmaya devam etmek için ihtiyaç duyduğu bilgileri döndürün. Büyük yükler yanıt sürelerini yavaşlatır.
Zorunlu alanları dikkatli kullanın
Zorunlu alanları dikkatli kullanın
Alanları yalnızca gerçekten gerekli olduğunda
required olarak işaretleyin. Yapay zeka, aracı çağırmadan önce kullanıcıdan gerekli bilgileri isteyecektir.İlgili
Uygulama bağlantıları
HubSpot, Salesforce, Slack, Google
Calendar, Google Sheets ve Cal.com için platform tarafından yönetilen araçlar — uç nokta gerekmez.
MCP sunucuları
Bir MCP sunucusu bağlayın ve ajanın araçlarını çağırmasına izin verin.
API bağlantıları
Ajanlara bağlayabileceğiniz yeniden kullanılabilir REST entegrasyonları.
Webhook imzalarını doğrulayın
Webhook’lar ve araç çağrıları için tek bir doğrulama yardımcısı.