Your AI Connector Docs

Özel Fonksiyonlar

Özel işlevler, yapay zeka botunuzun canlı görüşmeler sırasında diğer sistemlere bağlanmasını sağlar. Bot, “Kontrol edip size geri döneceğim” demek yerine, bir sipariş durumuna bakabilir, envanteri kontrol edebilir veya CRM’inizde (müşteri ilişkileri yönetimi sistemi - HubSpot veya Salesforce gibi potansiyel müşterileri ve müşterileri takip etmek için kullandığınız yazılım) bir kayıt oluşturabilir; üstelik tüm bunları müşteri beklerken gerçek zamanlı olarak yapar.


Özel Fonksiyonlar ve Webhook’lar

Bu, en yaygın kafa karışıklığı noktasıdır, bu yüzden herhangi bir şey oluşturmadan önce bunu netleştirmekte fayda var.

Webhook’lar Özel Fonksiyonlar
Yön Tek yönlü (gönder ve unut) Çift yönlü (çağır ve bekle)
Bot ne yapar Bir şey olduğunda bildirim gönderir ve yoluna devam eder. Dışarıya çağrı yapar, duraklar, yanıtı bekler ve konuşmaya devam etmek için gelen yanıtı kullanır.
Konuşmadaki görünürlük İşlem sonucu bot için görünmezdir; ne olduğunu asla görmez. Yanıt doğrudan yapay zekaya geri beslenir, böylece bot bunu alıntılayabilir, üzerinde mantık yürütebilir ve müşteriye bu yanıtla cevap verebilir.
En iyi kullanım alanı Olayları günlüğe kaydetme, verileri bir CRM ile senkronize etme, harici otomasyonları tetikleme (Zapier, Make, n8n). Botun yanıt vermeden önce bir cevaba ihtiyaç duyduğu her durum; canlı sorgulamalar, gerçek zamanlı fiyatlandırma, anlık içerik oluşturma.

Hangisinin seçileceği: Eğer başka bir sisteme sadece bir şeyin gerçekleştiğini bildirmeniz gerekiyorsa, bir webhook kullanın; bu, başka bir sisteme gönderilen tek yönlü otomatik bir mesajdır (bkz. Ayarlar → Entegrasyonlar → Webhook’lar). Eğer botun görüşmeye devam etmeden önce başka bir sistemden bir şey öğrenmesi gerekiyorsa, özel bir işlev kullanın.


Özel Fonksiyonların Sağladığı Olanaklar

Yanıt doğrudan konuşmaya geri beslendiği için, özel fonksiyonlar webhook’ların yapamadığı şeylerin önünü açar:

  • Canlı Shopify veya WooCommerce envanter sorgulama — Bot, müşteriye fiyat vermeden önce stokları gerçek zamanlı olarak kontrol eder ve “Kontrol edip size döneceğim” demek yerine “Evet, M beden 12 adet mevcut” şeklinde yanıt verir.
  • Google E-Tablolar üzerinden dinamik fiyatlandırma — Satış ekibiniz fiyatları bir tabloda günceller; bot, konuşma sırasında en son satırı okur ve yapay zeka yapılandırmasına kimse dokunmadan güncel fiyatı sunar.
  • Sesli yapay zeka geri arama temsilcisi — Bot bir potansiyel müşteriyi nitelendirdiğinde, dakikalar içinde müşteriyi geri araması için bir sesli temsilciyi (örneğin, ElevenLabs destekli bir arayıcı) tetikler ve müşteriye “Harika, önümüzdeki 5 dakika içinde bir arama bekleyin” şeklinde onay verir.
  • Sohbet sırasında oluşturulan ve e-postayla gönderilen özel teklif PDF’i — Bot gereksinimleri toplar, teklif oluşturucunuzu çağırır, bir PDF URL’si alır ve müşteriye “Teklifinizi e-posta adresinize gönderdim, gelen kutunuzu kontrol edin” der.

Özel Fonksiyonlar Neler Yapabilir?

Özel fonksiyonları, botunuza sadece sohbet etmenin ötesinde süper güçler kazandırmak olarak düşünün. İşte gerçek dünyadan örnekler:

  • Sipariş takibi - Bir müşteri “Siparişim nerede?” diye sorduğunda bot e-ticaret sisteminizi kontrol eder ve gönderim durumu ile takip bağlantısını yanıt olarak iletir.
  • Envanter kontrolü - “Bu ürünün 10 numarası var mı?” Bot stok sisteminizi kontrol eder ve gerçek zamanlı bir yanıt verir.
  • CRM güncellemeleri - Bot bir potansiyel müşteriyi nitelendirdiğinde, HubSpot, Salesforce veya başka herhangi bir CRM’de otomatik olarak bir kayıt oluşturur veya günceller.
  • Teklif oluşturma - Bot müşterinin gereksinimlerini toplar ve fiyatlandırma sisteminizden kişiselleştirilmiş bir teklif oluşturur.
  • Rezervasyon - Bot harici rezervasyon sisteminizde bir randevu oluşturur.
  • İndirim doğrulama - “Bu kupon kodu geçerli mi?” Bot kontrol eder ve onaylar.
  • Hesap sorgulama - Geri dönen bir müşteri otomatik olarak tanınır ve hesap detayları getirilir.

Müşteri arka planda neler olduğunu asla görmez. Sadece sorularını gerçek ve güncel bilgilerle yanıtlayabilen bir bot deneyimi yaşar.


Özel Fonksiyonlar Nasıl Çalışır (Basit Versiyon)

Bir konuşma sırasında özel bir fonksiyon tetiklendiğinde şunlar gerçekleşir:

  1. Müşteri bir şey sorar (örneğin, “Siparişim nerede?”) ve bu gerçek zamanlı veri gerektirir.
  2. Bot, yanıt vermek için özel bir işlev kullanması gerektiğini algılar.
  3. Bot, müşteriden eksik bilgileri toplar (örneğin, “Sipariş numaranız nedir?”).
  4. Platform, sisteminize (web siteniz, CRM’iniz veya başka bir aracınız) ilgili ayrıntılarla birlikte bir istek gönderir.
  5. Sisteminiz, verilerle yanıt verir (örneğin, sipariş durumu, takip numarası, teslimat tarihi).
  6. Bot yanıtı okur ve doğal bir cevap hazırlar: “ORD-4582 numaralı siparişiniz kargoya verildi ve Cuma gününe kadar ulaşması bekleniyor!”

Özel bir işlev çağrısının maliyeti nedir

Her özel işlev çağrısı, Ajanınızın Yapay Zeka Kalite seviyesi üzerinden ücretlendirilir:

Yapay Zeka Kalite düzeyi Özel işlev çağrısı başına kredi Kendi Anthropic anahtarınız (BYOK) bağlıyken
Pro 1 kredi 0 kredi — kendi anahtarınızla çalışır
Ekonomi (kullanımdan kaldırıldı) 0,5 kredi 0 kredi — kendi anahtarınızla çalışır
Max 0,25 kredi yine 0,25 kredi, kendi anahtarınız bağlı olsa bile faturalandırılır
Mini 0,15 kredi yine 0,15 kredi, kendi anahtarınız bağlı olsa bile faturalandırılır

Özel İşlev Kurulumu (Adım Adım)

  1. Ana kenar çubuğunda, AI Studio altında Custom Functions öğesine tıklayın.
  1. Sağ üstteki yeşil + Add Function (veya New function) düğmesine tıklayın.

Özel işlevler listesi, aşağıdaki sütunları içeren bir tablo görüntüler:

Sütun Ne Gösterir
Ad İşlevin adı (örneğin, check_order_status)
Açıklama İşlevin ne yaptığına dair kısa bir özet (tabloda 50 karakterle sınırlandırılmıştır)
Yöntem Kullanılan HTTP yöntemi, renkli bir rozet olarak gösterilir: GET (mavi), POST (yeşil), PUT (turuncu), DELETE (kırmızı)
Oluşturulma İşlevin oluşturulduğu tarih

Bu, işlevlerinize bir bakışta göz atmanızı ve ihtiyacınız olanı bulmanızı kolaylaştırır.

1. Adım: Bir Ad ve Açıklama Verin

Alan Ne Girilmeli Örnek
Ad Harf, rakam ve alt çizgi kullanan kısa bir ad check_order_status
Açıklama Bu işlevin ne yaptığını açıklayın (AI, ne zaman kullanacağına karar vermek için bunu okur) “Müşterinin sipariş numarasını kullanarak siparişinin güncel durumuna bakar”
Amaç (AI Eylemi) AI’ya bu işlevi tam olarak ne zaman ve nasıl kullanacağını söyleyin “Bunu bir müşteri sipariş durumu, kargo veya teslimat hakkında soru sorduğunda kullanın. Önce sipariş numarasını isteyin.”

İpucu: Açıklama ve amaç konusunda çok spesifik olun. İşlevin ne zaman kullanılması gerektiği konusunda ne kadar net olursanız, bot onu doğru zamanda o kadar güvenilir bir şekilde kullanacaktır.

2. Adım: Bağlantıyı Kurun

Uygulamaya isteği nereye göndereceğini söylemeniz gerekir:

Alan Ne Girilmeli Örnek
URL Sisteminizin uç noktasının web adresi (sisteminizde isteği alan ve veriyi geri gönderen belirli adres) https://api.yourstore.com/v1/orders/status
Yöntem Gönderilecek istek türü Aşağıdaki seçeneklere bakın

Hangi yöntem seçilmeli:

Yöntem Ne Zaman Kullanılmalı
GET Bilgi ararken (sipariş durumu, envanter, hesap detayları)
POST Yeni kayıtlar oluştururken (destek biletleri, potansiyel müşteriler, rezervasyonlar) veya karmaşık sorgulamalarda
PUT Mevcut bir kaydı tamamen güncellerken
PATCH Mevcut bir kaydın bir kısmını güncellerken
DELETE Bir kaydı silerken

Hangisini kullanacağınızdan emin değilseniz, geliştiricinize veya bağlandığınız sistemin belgelerine başvurun. GET (aramalar için) ve POST (kayıt oluşturmak için) en yaygın olanlarıdır.

Adım 3: Kimlik Doğrulama Başlıklarını Ekleyin

Çoğu sistem istekleri kabul etmek için kimlik doğrulaması gerektirir. Gerekli tüm başlıkları ekleyin:

Başlık Örnek Değer
Authorization Bearer your-api-key-here
Content-Type application/json

Authorization veya X-API-Key gibi bir anahtar veya parola taşıyan başlıkların değerleri, yazıldıklarında nokta olarak görünür. Değeri görmek için yanındaki göz simgesine tıklayın.

Güvenlik ipucu: Sınırlı izinlere sahip özel bir API anahtarı kullanın. Yönetici düzeyinde kimlik bilgileri kullanmayın.

API anahtarları nerede bulunur: Bağlandığınız sistemin (örneğin CRM’iniz, e-ticaret platformunuz veya rezervasyon aracınız) ayarlarını veya geliştirici bölümünü kontrol edin.

Adım 4: Girişi Tanımlayın (Botun Ne Gönderdiği)

Giriş parametreleri, botun konuşmadan topladığı ve sisteminize gönderdiği bilgi parçalarıdır.

Her parametre için şunları belirtirsiniz:

Özellik Anlamı
Ad Parametre adı (sisteminizin beklediğiyle eşleşmelidir)
Tür Veri türü (metin, sayı, doğru/yanlış vb.)
Açıklama Yapay zekaya bu bilginin ne olduğunu ve konuşmada nerede bulacağını söyleyin
Gerekli Evet olarak ayarlanırsa, bot devam etmeden önce müşteriden bu bilgiyi isteyecektir

Kullanılabilir parametre türleri:

Tür Ne Anlama Gelir
string Metin (isimler, sipariş numaraları, adresler)
number Sayısal bir değer (miktar, fiyat)
boolean Doğru veya yanlış (evet/hayır değerleri)
array Bir öğe listesi. Gerçek bir JSON listesi olarak gönderilir — Testi Çalıştır kısmında bunu [8624], ["a", "b"] olarak veya sadece virgülle ayrılmış (8624, 8625) şekilde yazabilirsiniz; sizin için dönüştürülür. API’niz listenin içeriği konusunda katıysa (örneğin sadece sayılar) türün yanındaki isteğe bağlı Öğe türü (Item type) kısmını ayarlayın; listedeki her değer buna dönüştürülür.
query_param İstek gövdesi yerine URL parametresi olarak gönderilen metin. API’niz veriyi URL içinde beklediğinde bunu kullanın (örneğin, ?order_id=123).

Her parametrenin ayrıca isteğe bağlı bir İstek gövdesi yolu alanı vardır. Normalde bir parametre, istek gövdesinde üst düzey bir alan olarak (veya query_param türü için sorgu dizesi değeri olarak) gönderilir. Uç noktanız bunun yerine iç içe geçmiş bir yapı bekliyorsa — örneğin {"order": {"id": "ORD-123"}} — yolu order.id olarak ayarlayın; platform değeri sizin için oraya yerleştirecektir.

Örnek: Bir sipariş durumu sorgulaması için şunları tanımlayabilirsiniz:

  • order_number (string, gerekli): “Müşterinin sipariş numarası. Genellikle ORD- ile başlar ve ardından rakamlar gelir. Müşteri belirtmediyse bunu isteyin.”
  • email (string, isteğe bağlı): “Ek doğrulama için müşterinin e-posta adresi. Sadece sipariş numarası tek başına eşleşme bulamazsa gereklidir.”

Sisteminizin Otomatik Olarak Aldıkları

Tanımladığınız giriş parametrelerine ek olarak, platform her istekle birlikte otomatik olarak sistem verilerini de dahil eder. Uç noktanız bunu bir system alanında alır:

Sistem Alanı İçeriği
system.contactId Görüşmedeki kişinin platform kimliği
system.campaignId Görüşmeyi yöneten yapay zeka temsilcisini agent:<agentId> biçiminde tanımlar (alan eski adını korur)
system.userId Kullanıcı kimliğiniz
system.channel Mesajlaşma kanalı (örneğin, "whatsapp", "instagram")
system.contact Tam kişi kaydı (ad, telefon, e-posta, etiketler vb.)
system.campaign Görüşmeyi yöneten yapay zeka temsilcisinin ayarları (alan eski adını korur)
system.test Bu bir Deneme testi ise true, canlı görüşmeler için false
system.callback_url Yalnızca Sonuç daha sonra gelecek açık olduğunda: sonucun gönderileceği bağlantı (bkz. Uzun süren işler)
system.callback_expires_at Yalnızca Sonuç daha sonra gelecek açık olduğunda: bu bağlantının süresinin dolacağı zaman

Bu, sisteminizin kişiyi tanımlaması, işlevi hangi temsilcinin çağırdığını kontrol etmesi veya test sırasında farklı davranması gerekiyorsa kullanışlıdır.

Bir takip denetimi işlevinizi çağırdığında (bkz. Yalnızca denetim başarılı olduğunda gönder), istek, konuşma içi bir çağrıdan farklıdır: girdi parametresi yoktur ve system alanı yalnızca system.contact (kendi id öğesiyle) ve bir system.follow_up bloğu (type, cycle_number, follow_up_number, reason, campaign_id, agent_id) taşır. İçinde campaign nesnesi bulunmaz. Sistem Verilerini Atla seçeneği bu çağrı için de geçerlidir.

Sistem verilerine ihtiyacınız yok mu? İşlev oluşturucudaki Sistem Verilerini Atla düğmesini açın. Bot daha sonra yalnızca tanımladığınız giriş parametrelerini gönderir; kişi veya temsilci verisi göndermez. Uç noktanız beklenmedik alanları reddediyorsa veya sadece daha yalın bir veri yükü istiyorsanız bunu kullanın.

Adım 5: Test Edin, Ardından Botun Yanıtı Okumasını Sağlayın

Normalde yanıt alanlarını eşlemenize hiç gerek yoktur. Uç noktanız yanıt verdiğinde, bot tüm JSON yanıtını okur ve neyin önemli olduğunu belirleyip doğal bir şekilde sunmak için işlevinizin Açıklama ve Amaç (Yapay Zeka Eylemi) kısımlarını — artı her parametrenin kendi açıklamasını — kullanır. İşlevin kendisindeki net bir Açıklama (“Gönderim bilgileri ve takip dahil olmak üzere bir müşteri siparişinin mevcut durumunu alır”), alan bazlı eşlemenin yapacağından daha fazlasını burada gerçekleştirir.

Uç noktanız büyük bir yanıt döndürüyorsa ve botun yalnızca birkaç belirli değeri görmesini istiyorsanız, Yanıt eşleme bölümünü açın (varsayılan olarak daraltılmıştır, Test’in hemen üzerindedir). Her satır, yanıttan bir üst düzey alan seçer: Yanıt alanı, API’nizin JSON yanıtındaki alan adıdır ve Çıktı alanı, botun onu hangi adla alacağıdır. En az bir satır doldurulduğunda, bot tam yanıt gövdesi yerine yalnızca eşlediğiniz değerleri alır. Varsayılan tam yanıt davranışını korumak için bölümü boş bırakın.

Kaydetmeden önce, oluşturucunun alt kısmındaki Test bölümünü kullanarak isteği tam olarak yapılandırıldığı gibi gönderin ve uygulamadan ayrılmadan gerçek yanıtı görün:

Burada gördüğünüz yanıt, uç noktanın ham yanıtıdır. Yukarıda Yanıt eşleme ayarını yaptıysanız, gerçek bir sohbetteki bot yalnızca bu eşlenmiş alanları alır; test ise her zaman tam ham yanıtı gösterir, böylece eşlenebilecek verileri görebilirsiniz. Bir şeyler hatalı görünüyorsa (beklenmedik alan adları, fazladan iç içe geçme gibi), bunu uç noktanızda düzeltin veya eşlemenizi ayarlayın.


İşlevleri Bir Temsilciye Atama

Özel bir işlev oluşturduktan sonra, her Temsilciye hangi işlevleri kullanabileceğini söylemeniz gerekir:

  1. AI Studio → AI Temsilcileri altındaki Temsilci’yi açın.
  2. AI Yetenekleri sekmesine gidin.
  3. Oluşturduğunuz her özel işlevin bir listesini göreceksiniz. Bu Temsilcinin botunun çağırabilmesini istediğiniz her işlevi açın.
  4. Alt kısımdaki Değişiklikleri kaydet düğmesine tıklayın. Seçimler yalnızca kaydedildikten sonra geçerli olur.

Bot için yalnızca atanan işlevler kullanılabilir. Bu, botun yanlışlıkla ilgili olmayan işlevleri kullanmasını önler.


Özel İşlevlerinizi Test Etme

Canlıya geçmeden önce kapsamlı bir şekilde test edin:

  1. Yerleşik Testi çalıştırın - İşlev oluşturucunun içindeki Test bölümünü (yukarıya bakın) kullanarak uygulamadan ayrılmadan hızlı bir kontrol yapın — gerçekçi değerler girin ve Testi çalıştır’a tıklayın.
  2. Sisteminizin uç noktasını doğrudan test edin - Aşağıdaki tam kontrol listesi için Postman gibi özel bir araç (veya geliştiriciniz) tek bir Testi çalıştır işleminden daha derinlemesine inceleme yapar.
  3. Deneme sürümünde test edin - Müşterinin işlevi tetiklemesi gereken bir şey sorduğu bir konuşmayı simüle edin.
  4. Yanıtı kontrol edin - Botun verileri doğru bir şekilde okuduğundan ve sunduğundan emin olun.
  5. Hata senaryolarını test edin - Müşteri geçersiz bir sipariş numarası verirse ne olur? Sisteminiz geçici olarak kapalıysa ne olur?

Test 401 veya 403 hatası döndürdüğünde

401 veya 403 hatası, uç noktanızın isteği aldığını ancak reddettiğini gösterir. Bunun en belirgin işareti kendi günlüklerinizde hiçbir şeyin görünmemesidir — çoğu araç, yetkisiz bir çağrıyı iş akışını başlatmadan önce reddeder, bu nedenle tarafınızda görülecek bir şey olmaz ve istek hiç ulaşmamış gibi görünür.

Bu durum neredeyse her zaman bir kimlik doğrulama uyuşmazlığından kaynaklanır: uç noktanız bir tür kimlik bilgisi beklerken işlev farklı bir tane gönderiyordur. 3. Adımda eklediğiniz başlığın sisteminizin beklediğiyle birebir aynı olduğundan emin olun.

Bunun en yaygın versiyonu, Basic Auth ile korunan bir web kancasıdır (n8n, Make ve çoğu kendi kendine barındırılan araç bunu web kancasının üzerinde bir onay kutusu olarak sunar), ancak işlev X-My-Secret gibi özel bir gizli başlık gönderir. Basic Auth yalnızca Authorization başlığını kabul eder, bu nedenle özel bir başlık göz ardı edilir ve çağrı reddedilir. İki seçeneğiniz vardır:

  • Web kancasında Basic Auth’u kapatın ve bunun yerine iş akışınızın içindeki özel başlığınızı kontrol edin.
  • Basic Auth’u açık tutun ve işleve, değeri Basic kelimesini ve ardından base64 ile kodlanmış username:password değerini içeren bir Authorization başlığı ekleyin.

Her ikisi de işe yarar; sadece her iki tarafın da anlaştığından emin olun.

Test 404 hatası döndürdüğünde

Uç nokta URL’si yanlıştır veya iş akışı yayınlanmamıştır. Özellikle n8n’de her web kancasının ayrı bir Test URL’si ve Production (Üretim) URL’si vardır ve Test URL’si yalnızca düzenleyici açıkken dinleme yapar. Production URL’sini kopyalayın ve iş akışının aktif olduğundan emin olun.

Deneme ve Sohbetlerde hataları görme

Yapay zeka bir görüşme sırasında özel bir işlevi çağırdığında ve çağrı başarısız olduğunda (örneğin yanlış kimlik bilgileri, kapalı bir uç nokta veya zaman aşımı nedeniyle), görüşme artık bunu gösterir: hem temsilcinin Deneme sekmesinde hem de Sohbetler içindeki gerçek görüşmelerde iş parçacığında kırmızı bir “(işlev adı) başarısız oldu” işareti görünür. Ayrıntıları genişletmek için işarete tıklayın: uç noktanızın döndürdüğü durum kodu ve yanıt gövdesi; bunlar genellikle neyi düzeltmeniz gerektiğini anlamanız için yeterlidir (“unauthorized” mesajı içeren bir 401, kimlik doğrulama başlığı anlamına gelir; zaman aşımı, uç noktanızın 30 saniyeden uzun sürdüğü anlamına gelir; daha uzun süren bir iş için bkz. Uzun süren işler).

Başarılı çağrılar da bir işaret gösterir; uç noktanızın gerçekte ne gönderdiğini görmek için üzerine tıklayın. Bu, bir entegrasyonda uçtan uca hata ayıklamanın en hızlı yoludur: Deneme’de test konuşmasını yapın, ardından sayfadan ayrılmadan gerçek istek sonucunu görmek için işlev işaretine tıklayın.

Bir araç gerçek konuşmalarda sürekli başarısız olduğunda

Aynı özel işlev, yapay zeka temsilciniz sohbet ederken 24 saat içinde 3 kez başarısız olursa, bunun için günde bir kez uyarı alırsınız: e-posta yoluyla, bildirim zilinin altında ve etkinleştirdiyseniz anlık bildirim olarak. Uyarı aracın adını belirtir, son hatayı gösterir ve etkilenen sohbetlere bağlantı verir; çünkü temsilci bu kişilere teknik bir sorunla karşılaştığını bildirmiş olacaktır. Ayarlar’daki işlev satırı, araç tekrar çalışana kadar hata sayısını ve son hatayı içeren bir Hatalı satırı gösterir; başarılı bir çağrı bu durumu temizler. Bu uyarıları Ayarlar → Bildirimler → Araç hataları altından kapatabilirsiniz.


Tam Örnek: Sipariş Durumu Sorgulama

İşte şablon olarak kullanabileceğiniz tam yapılandırılmış bir örnek:

Temel Bilgiler:

  • Ad: check_order_status
  • Açıklama: “Müşteri siparişinin mevcut durumunu, gönderim bilgileri ve takip dahil olmak üzere getirir”
  • Yapay Zeka Eylemi: “Müşteri sipariş durumunu, paketinin nerede olduğunu veya ne zaman geleceğini sorduğunda bunu çağırın. Her zaman önce sipariş numarasını isteyin.”

Bağlantı:

  • URL: https://api.mystore.com/orders/lookup
  • Yöntem: POST

Başlıklar:

  • Authorization: Bearer sk_live_abc123
  • Content-Type: application/json

Giriş Parametreleri:

  • order_number (metin, zorunlu): “Müşteri tarafından sağlanan sipariş numarası”
  • customer_email (metin, isteğe bağlı): “Ek doğrulama için müşterinin e-posta adresi”

Yanıt eşlemesi gerekmez — yukarıda halihazırda ayarlanmış net bir Açıklama ve Yapay Zeka Eylemi ile bot, uç noktanızın döndürdüğü her türlü JSON’u (durum, takip numarası, teslimat tarihi, ürünler) okur ve bunun hakkında nasıl konuşacağını belirler.

Konuşma nasıl görünür:

Müşteri: Hey, siparişim nerede?

Bot: Merhaba! Siparişinizi kontrol etmekten memnuniyet duyarım. Sipariş numaranızı benimle paylaşabilir misiniz?

Müşteri: ORD-78234

Bot: Sizin için hemen bakıyorum…

ORD-78234 numaralı siparişiniz kargoya verildi ve yolda! Tahmini teslimat tarihi 10 Mart. Paketinizi buradan takip edebilirsiniz: https://tracking.example.com/1Z999AA1

Size başka bir konuda yardımcı olabilir miyim?


Tam Örnek: Shopify Sipariş Durumu

Mağaza Shopify üzerinde çalışıyorsa, bir arama uç noktası oluşturmak için geliştiriciye ihtiyacınız yoktur; Shopify’ın kendi sistemi sipariş sorularını doğrudan yanıtlayabilir. (Bir Shopify mağazasındaki ürün ve stok soruları için özel bir işleve hiç ihtiyacınız yoktur: bunun yerine mağazanın yerleşik sunucusunu bağlayın — bkz. Bir Shopify mağazasını bağlayın.)

Öncelikle, Shopify’da bir erişim belirteci (access token) oluşturun. Shopify bunu 2026 yılında değiştirdi: uygulamalar artık Shopify yöneticisi içinde oluşturulamıyor ve yeni uygulama ekranı size hazır bir belirteç yerine bir İstemci Kimliği (Client ID) ve İstemci gizli anahtarı (Client secret) veriyor. Aşağıdaki adımlar bunları kalıcı bir belirtece dönüştürür. Mağaza başına yaklaşık on dakikanızı ayırın. (Mağazada eski yöntemle oluşturulmuş daha eski bir uygulama zaten varsa, mevcut belirteci çalışmaya devam eder; doğrudan aşağıdaki özel işleve geçin.)

  1. dev.shopify.com adresindeki Shopify Geliştirici Paneline gidin, kuruluşunuzu açın ve Apps → Create app seçeneğine tıklayın. Order lookup gibi bir ad verin.
  2. Uygulamaya read_orders izni verin, bir sürüm yayınlayın ve uygulamayı mağazaya yükleyin.
  3. Uygulamanın Settings kısmını açın ve mağazanın kendi web adresini (örneğin https://www.yourstore.com/) izin verilen yönlendirme URL’lerine ekleyin. Kaydedin.
  4. Yine Settings içinde, Client ID ve Client secret bilgilerini kopyalayın.
  5. O mağazanın Shopify yöneticisinde oturum açtığınız bir tarayıcıda, mağaza adını, istemci kimliğini ve yönlendirme adresini kendinizinkiyle değiştirerek aşağıdaki adresi açın: https://YOUR-STORE.myshopify.com/admin/oauth/authorize?client_id=YOUR-CLIENT-ID&scope=read_orders&redirect_uri=https://www.yourstore.com/&state=12345 Görünen ekranı onaylayın. Tarayıcı yönlendirme adresinize ulaşacaktır ve adres çubuğu artık code= ve ardından uzun bir değer içerecektir — bu değeri kopyalayın. Sadece birkaç dakika geçerlidir, bu yüzden doğrudan bir sonraki adıma geçin.
  6. Bu kodu, Your AI Connector içinde yapabileceğiniz şekilde belirteçle değiştirin. Özel fonksiyon oluşturucuda Method kısmını POST ve URL kısmını https://YOUR-STORE.myshopify.com/admin/oauth/access_token olarak ayarlayın, client_id, client_secret ve code adında üç metin giriş parametresi ekleyin, ardından Test’e tıklayın, üç değeri girin ve çalıştırın. Yanıt access_token içerir — bu sizin kalıcı belirtecinizdir. Güvenli bir yere kopyalayın, ardından oluşturucuyu temizleyin ve aşağıdaki gerçek fonksiyonu kurun.

Ardından özel işlevi ayarlayın:

Temel Bilgiler:

  • Ad: check_shopify_order
  • Açıklama: “Mağazanın Shopify sistemindeki bir siparişi arar ve durumunu, takibini ve ürünlerini döndürür”
  • Yapay Zeka Eylemi: “Bir müşteri sipariş durumu veya teslimat hakkında soru sorduğunda bunu çağırın. Her zaman önce sipariş numarasını isteyin.”

Bağlantı:

  • URL: https://YOUR-STORE.myshopify.com/admin/api/2026-01/orders.json?status=any — YOUR-STORE kısmını mağazanın .myshopify.com adıyla değiştirin (bu adres, mağazanın özel alan adını değil, teknik Shopify alan adını kullanır)
  • Yöntem: GET

Üstbilgiler:

  • X-Shopify-Access-Token: shpat_... (yukarıdaki belirteç)

Giriş Parametreleri:

  • name (query_param, gerekli): “Müşterinin sipariş onayında göründüğü şekliyle, # işareti dahil olmak üzere tam sipariş numarası — örneğin #1001. Müşteri belirtmediyse ondan isteyin.”

Yanıt eşlemesi gerekmez — bot, döndürülen siparişi (ödeme durumu, gönderim durumu, takip, ürünler) okur ve doğal bir şekilde yanıtlar.

Bilmekte fayda var: bu şekilde oluşturulan bir belirteç, son 60 gündeki siparişleri görebilir; bu, günlük destek soruları için yeterlidir ancak tam bir sipariş geçmişi değildir.


Tam Örnek: Randevu Oluşturma

Temel Bilgiler:

  • Ad: create_booking
  • Açıklama: “Randevu sistemimizde yeni bir randevu oluşturur”
  • Yapay Zeka Eylemi: “Bunu, tarih, saat ve iletişim bilgilerini müşteriyle doğruladıktan sonra kullanın. Müşteri randevu almak istediğini açıkça onaylamadan çağırmayın.”

Bağlantı:

  • URL: https://booking.mycompany.com/api/appointments
  • Yöntem: POST

Giriş Parametreleri:

  • date (metin, zorunlu): “YYYY-AA-GG formatında randevu tarihi”
  • time (metin, zorunlu): “SS:DD formatında randevu saati”
  • name (metin, zorunlu): “Müşterinin tam adı”
  • phone (metin, zorunlu): “Müşterinin telefon numarası”
  • service_type (metin, zorunlu): “Randevu alınan hizmet türü”

Tam Örnek: CRM’inize Bülten Abonesi Ekleme

Çok yaygın bir senaryo: bot yanıtlamayı bitirir, bülteninizi önerir, kişi e-posta adresiyle yanıt verir ve bu adresin doğrudan e-posta aracınıza ulaşması gerekir. Çoğu CRM (FluentCRM, ActiveCampaign, MailerLite, Brevo ve diğerleri) tam olarak bunun için basit bir POST isteğini kabul eder, bu nedenle arada herhangi bir otomasyon platformuna gerek kalmaz.

Bu örnek, WordPress üzerinde FluentCRM kullanmaktadır. Yapı, size “gelen webhook” veya “abone oluştur” uç noktası sağlayan diğer tüm araçlar için aynıdır.

Öncelikle, CRM’inizden URL’yi alın. WordPress’te FluentCRM → Ayarlar → Gelen Webhook’lar kısmını açın ve bir webhook oluşturun. Yeni kişilerin alması gereken listeyi, etiketleri ve abonelik durumunu seçin, ardından oluşturulan webhook URL’sini kopyalayın. Burada ayarladığınız her şey otomatik olarak uygulanır, bu nedenle botun sadece e-posta adresini göndermesi yeterlidir.

Ardından özel işlevi ayarlayın:

Temel Bilgiler:

  • Ad: add_newsletter_subscriber
  • Açıklama: “Sohbet sırasında verdikleri e-posta adresini kullanarak birini bülten listemize ekler”
  • Yapay Zeka Eylemi: “Bunu, kişi bültene abone olmayı kabul ettiği ve e-posta adresini verdiği anda kullanın. Adresi gerçekten vermeden önce çağırmayın ve aynı kişi için iki kez çağırmayın.”

Bağlantı:

  • URL: CRM’inizden kopyaladığınız webhook URL’si
  • Yöntem: POST

Giriş Parametreleri:

  • email (dize, gerekli): “Kişinin konuşma sırasında verdiği e-posta adresi”
  • first_name (dize, isteğe bağlı): “Kişinin belirttiği takdirde adı”

Sistem Verilerini Atla: bunu açık konuma getirin. CRM’iniz yalnızca yukarıdaki alanlara ihtiyaç duyar ve daha yalın bir veri yükü, beklenmedik alanları reddeden araçlardan kaynaklanabilecek hataları önler.

Yanıt eşleme: burada gerekli değildir. Botun devam etmesi için geri bir şey gelmesine gerek yoktur.

Fonksiyonu, konuşmayı yürüten Temsilci için açmayı unutmayın (bkz. Temsilciye Fonksiyon Atama). Bu, doğru oluşturulmuş bir fonksiyonun asla çalışmamasının en yaygın nedenidir.

İpucu: botun ayrıca, adresi platform içindeki kişi kaydına kaydeden yerleşik bir Kişi E-postasını Güncelle aracı vardır. Bu, bu işlevden ayrıdır ve onunla birlikte kullanıldığında faydalıdır; yerleşik araç kendi kişi kaydınızı eksiksiz tutar, özel işlev ise adresi CRM’inize aktarır.


Güvenilir Özel İşlevler İçin İpuçları

  1. Tekrarlanan isteklerin güvenli olduğundan emin olun. Aynı istek yanlışlıkla iki kez gönderilirse, yinelenen kayıtlar oluşturmamalıdır. Ağ kesintileri bazen buna neden olabilir.

  2. Net hata mesajları döndürün. Sisteminizin tarafında bir sorun oluşursa, insan tarafından okunabilir bir hata döndürün. Bot, bunu müşteriye nazik bir şekilde iletecektir.

  3. Yanıt sürelerini 10 saniyenin altında tutun. Sisteminiz daha uzun sürüyorsa, önce hızlı bir onay döndürmeyi düşünün.

  4. Süresi dolmuş veya geçersiz kimlik bilgilerini yönetin. API anahtarınızın süresi dolarsa, botun yeniden denemek yerine bir insana haber vermesi gerektiğini anlaması için hata mesajının net olduğundan emin olun.

  5. Ayrıntılı açıklamalar yazın. Yapay zeka, işlevi ne zaman çağıracağını ve konuşmadan doğru bilgiyi nasıl çıkaracağını anlamak için açıklamalarınızı kullanır. Belirsiz açıklamalar hatalara yol açar.

  6. Gerçek görüşmelerle test edin. Deneme, ilk testler için harikadır ancak her şeyin gerçek müşteri sorgularıyla çalıştığından emin olmak için ilk birkaç canlı görüşmenizi izleyin.

  7. Kendi tarafınızda günlük tutun. Geliştiricinizden, uygulamadan gelen istekleri günlüğe kaydetmesini isteyin, böylece sorunları hızlı bir şekilde giderebilirsiniz.

  8. Güvenlik duvarınızın bir IP izin listesine ihtiyacı varsa, her özel işlev çağrısı (ve her takip kontrolü), web kancalarımızın kullandığıyla aynı olan tek bir sabit IPv4 adresinden gönderilir; aralıklar, IPv6 veya rotasyon yoktur. Destek ekibiyle iletişime geçin, size adresi verelim. İstek imzalamayı açın ve gerçek güven kontrolünüz olarak imzayı doğrulayın, IP’yi ise ek bir filtre olarak değerlendirin.

  9. Herkese açık bir nihai URL kullanın. İşlev URL’niz herkese açık bir web (HTTP/HTTPS) adresi olmalıdır. Dahili, localhost ve özel ağ adresleri güvenlik nedeniyle reddedilir ve platform yönlendirmeleri takip etmez; işlevi, yönlendirme yapan bir URL’ye değil, doğrudan nihai URL’ye yönlendirin.


Uzun süren işler: sonucu daha sonra alma

Normalde özel bir işlev, kişi yanıtı beklerken 30 saniye içinde yanıt vermelidir. Bazı işler bundan daha uzun sürer: video oluşturma, kredi kontrolü yapma, tarafınızdaki birinin bir şeyi onaylamasını bekleme gibi. Bunlar için Sonuç daha sonra gelecek (uzun süren) seçeneğini açın. Yapay zekanın çağrısı o zaman sadece işi başlatır. Hizmetiniz hemen yanıt verir, yapay zeka kişiye sonucun yolda olduğunu söyler ve görüşmeye devam eder, hizmetiniz de iş bittiğinde sonucu bir geri arama bağlantısına (callback link) gönderir.

Ne zaman kullanılır

Hizmetiniz 30 saniye içinde güvenilir bir şekilde yanıt veremediğinde kullanın. Hızlı aramalar (sipariş durumu, stok kontrolü, fiyat) için kapalı bırakın: bunlar normal bir çağrı olarak daha basittir, çünkü yapay zeka sonucu aynı yanıtta verir.

Düzenleyicideki ayarlar

Bunları özel işlev düzenleyicisinde, Sistem Verilerini Atla seçeneğinin yanında bulabilirsiniz.

Ayar Ne işe yarar
Sonuç daha sonra gelecek (uzun süren) İşlevi bir başlatma sinyaline dönüştürür. Hizmetinizin ilk çağrıyı yanıtlamak için 30 saniyesi vardır (herhangi bir 2xx durumu, gövde göz ardı edilir) ve ardından sonucu göndermek için Şu kadar süre bekle süresine kadar vaktiniz vardır.
Sonuç geldiğinde Yapay zeka bir sonraki mesajı yazar (varsayılan): yapay zeka sonucu okur ve işlevin Amacını (Yapay Zeka Eylemi) izleyerek bir sonraki mesajı kendi sesiyle yazar. Metni olduğu gibi gönder: gönderdiğiniz metin kişiye kelimesi kelimesine iletilir.
Şu kadar süre bekle Geri arama bağlantısının 1 ile 168 (7 gün) saat arasında ne kadar süre geçerli kalacağı. Varsayılan değer 24’tür.

Hizmetinizin aldıkları

Geçiş düğmesi açıkken, her çağrı yukarıda açıklanan her şeye (giriş parametreleriniz, system bloğu ve imzalama başlıkları) ek olarak geri arama bağlantısını üç yerde taşır:

Nerede İçeriği
Başlık X-Callback-Url Geri arama bağlantısı.
Gövde alanı callback_url POST, PUT, PATCH ve DELETE için aynı bağlantı. GET ve HEAD için bunun yerine callback_url adında bir sorgu parametresidir.
system.callback_url ve system.callback_expires_at Bağlantı ve süresinin dolacağı zaman (ISO 8601 tarih ve saati). Sistem Verilerini Atla açık olduğunda dahil edilmez.

Bağlantı her çağrı için benzersizdir, o kişiye ve o çağrıya aittir, bir kez çalışır ve Şu kadar süre bekle süresinden sonra sona erer. Kullanmak için bir API anahtarına ihtiyacınız yoktur: bağlantının kendisi izindir. Ona bir parola gibi davranın ve asla herkese açık bir günlüğe yazmayın.

Sonucu gönderme

İş bittiğinde, geri arama bağlantısına bir POST gönderin:

POST https://api.<your host>/v1/custom-functions/callback/d3f9...
Content-Type: application/json

{
  "result": { "video_url": "https://cdn.example.com/spring-offer.mp4", "duration_seconds": 42 },
  "message": "Your video is ready: https://cdn.example.com/spring-offer.mp4"
}
  • result, yapay zekanın okuduğu kısımdır. Metin veya bir JSON nesnesi olabilir.
  • message isteğe bağlıdır. Metni olduğu gibi gönder seçeneğiyle, bir tane gönderdiğinizde kişi message alır, aksi takdirde metin olduğunda result alır.
  • media_url isteğe bağlıdır: kişinin bağlantı olarak değil, gerçek bir ek olarak alacağı bir dosyaya (resim, video, ses veya belge) giden bir https bağlantısıdır. Aşağıdaki Dosya gönderme bölümüne bakın.
  • Ayrıca Content-Type: text/plain ile düz metin gövdesi de gönderebilirsiniz. Bu, result olarak işlenir.
  • Gövde 64 KB’a kadar olabilir.

Geri arama bağlantısının verdiği yanıtlar:

Durum Gövde Anlamı
202 {"ok":true,"received":true} Sonuç alındı.
200 {"ok":true,"duplicate":true} Bu bağlantı zaten bir sonuç aldı. İkinci kez hiçbir şey olmaz, bu yüzden yeniden denemek her zaman güvenlidir.
400 Gövde geçerli değil.
404 Bağlantı bilinmiyor. İstekten gelen bağlantıyı tam olarak kullandığınızdan emin olun.
410 Bağlantının süresi doldu. Yapay zekaya sonucun hiç gelmediği zaten bildirilmişti.
413 Gövde 64 KB’tan büyük.
429 Aynı bağlantıya bir dakika içinde 20’den fazla gönderi yapıldı. Bekleyin ve tekrar deneyin.

Tam bir örnek: üç dakika süren bir video

  1. Yapay zeka fonksiyonunuzu çağırır. Şunları alırsınız (kısaltılmış):
POST https://api.example.com/render
X-Callback-Url: https://api.<your host>/v1/custom-functions/callback/d3f9...
Content-Type: application/json

{
  "video_title": "Spring offer",
  "callback_url": "https://api.<your host>/v1/custom-functions/callback/d3f9...",
  "system": {
    "contactId": "...",
    "callback_url": "https://api.<your host>/v1/custom-functions/callback/d3f9...",
    "callback_expires_at": "2026-10-20T19:15:00.000Z"
  }
}
  1. Hizmetiniz oluşturma işlemini başlatır ve hemen yanıt verir:
{ "status": "started" }
  1. Yapay zeka kişiye videonun hazırlandığını söyler ve sohbet etmeye devam eder.
  2. Üç dakika sonra hizmetiniz sonucu geri arama bağlantısına gönderir:
{ "result": { "video_url": "https://cdn.example.com/spring-offer.mp4", "duration_seconds": 42 } }
  1. Yapay zeka bir sonraki mesajı kendi kelimeleriyle yazar, örneğin “Videonuz hazır: https://cdn.example.com/spring-offer.mp4”.

Zapier veya Make mi kullanıyorsunuz? Tetikleyici web kancasının çağrıyı almasını sağlayın ve akışın son adımını tetikleyici verilerinden callback_url adresine bir POST isteği olacak şekilde ayarlayın.

Sohbette neler oluyor

Sonuç, konuşmaya bir fonksiyon girişi olarak kaydedilir, böylece diğer özel fonksiyon çağrıları gibi gelen kutusunda görürsünüz. Ardından, Sonuç geldiğinde ayarına bağlı olarak, yapay zeka bir sonraki mesajı yazar ve gönderir (bu, herhangi bir yapay zeka mesajı gibi bir yapay zeka yanıtı maliyeti doğurur) veya metniniz olduğu gibi gönderilir. Metni olduğu gibi gönder seçeneği ile, bir tane eklediğinizde message alanı gönderilir, aksi takdirde düz metin olduğunda result gönderilir; yalnızca metin içermeyen bir nesne gönderirseniz, yapay zeka mesajı kendisi yazar.

Sonuç geldiğinde o kişi için yapay zeka kapalıysa (bir ekip üyesi devraldıysa, yapay zeka duraklatıldıysa, temsilci kapalıysa veya kredisi bittiyse), sonuç yine de konuşmaya kaydedilir ancak hiçbir mesaj gönderilmez. Yapay zeka tekrar açıldığında da gönderilmez. Ekip üyesi sonucu sohbette görür ve kullanabilir.

Temsilcinin Deneme sekmesinde tüm akış çalışır: sonuç test sohbetine ulaşır.

Dosya gönderme (video, resim, PDF)

Dosya olan bir sonuç, örneğin hizmetinizin arka planda oluşturduğu bir video, her iki modda da kişiye sohbet içinde açabileceği bir ek olarak ulaşır. Platform, geri aramanızdaki dosyayı şu şekilde bulur:

  1. Bir tane gönderdiğinizde gövdedeki media_url.
  2. Aksi takdirde result nesnesindeki bir dosya alanı: file_url, video_url, image_url, pdf_url, document_url, audio_url, attachment_url veya download_url.
  3. Aksi takdirde metin içindeki, .mp4, .jpg, .png veya .pdf gibi bir dosya uzantısıyla biten ilk https bağlantısı.

Yapay zeka bir sonraki mesajı yazar seçeneğiyle, yapay zeka metni yazar ve dosya bu mesaja eklenir (yapay zekaya bağlantıyı yapıştırmaması söylenir). Metni olduğu gibi gönder seçeneğiyle, message değeriniz ekin açıklaması olur.

{
  "result": { "status": "done", "title": "Spring offer" },
  "message": "Your video is ready.",
  "media_url": "https://cdn.example.com/spring-offer.mp4"
}

Dosyalar 16 MB’a kadar olabilir ve https üzerinden erişilebilir olmalıdır. Her kanal farklı türleri destekler: örneğin, e-posta ve WhatsApp kanalları video, resim, ses ve belge kabul ederken, SMS dosya taşımaz. Bir kanal dosyayı kabul edemediğinde veya dosya çok büyük olduğunda, kişi mesajı yine de alır ve mesajın sonuna dosyaya giden bağlantı eklenir.

Sonuç hiç gelmediğinde

Şu kadar süre bekle süresi dolmadan önce hiçbir şey gönderilmezse, yapay zekaya sonucun hiç gelmediği bildirilir, böylece kişiyi bilgilendirebilir. Ayarlar → Hata günlüğü altında APP-3103 kodlu bir giriş görünür ve bir araç hatası bildirimi alırsınız.

Bir bakışta limitler

  • Geri arama bağlantısı başına bir sonuç. Aynı bağlantıya yapılan sonraki gönderiler kopya olarak yanıtlanır ve hiçbir şeyi değiştirmez.
  • Sonuç başına 64 KB’a kadar.
  • Sonuç başına bir dosya, 16 MB’a kadar, https üzerinden.
  • Bir bağlantıya dakikada 20 gönderiye kadar.
  • 1 ila 168 saat arasında Bekleme süresi.
  • Hizmetinizin ilk çağrıyı yanıtlamak için hala 30 saniyesi vardır.

Bir Çağrının Gerçekten Bizden Geldiğini Doğrulama

İşlevinizin URL’sini öğrenen herkes ona sahte bir istek gönderebilir. Bir kimlik doğrulama başlığındaki uzun bir gizli anahtar yardımcı olur, ancak bu her çağrıda aynı değerdir, bu nedenle bir isteği gören herkes (bir günlükte veya ekran görüntüsünde) onu yeniden kullanabilir. İstek imzalama bunu düzeltir: her çağrı, yalnızca gizli anahtarınızı elinde tutan birinin üretebileceği ve birkaç dakika sonra geçerliliğini yitiren bir imza taşır.

İmzalama isteğe bağlıdır ve varsayılan olarak kapalıdır; tüm hesabınız için tek bir ayardır: tek bir gizli anahtar tüm özel işlevleri imzalar.

İmzalama özelliğini açma

  1. Özel İşlevler’i açın.
  2. İşlev listenizin altında, İstek imzalama kartını bulun ve İmzalamayı aç’a tıklayın.
  3. Göster’e tıklayın, gizli anahtarı kopyalayın (whsec_ ile başlar) ve çağrıları alan sisteme kaydedin. Bunu bir parola gibi saklayın.

Aynı karttan gizli anahtarı tekrar kopyalayabilir, Yenileyebilir (eskisi hemen çalışmayı durdurur) veya imzalamayı Kapatabilirsiniz.

Ne gönderiyoruz

İmzalama açıldığında, bir özel işlevin yaptığı her çağrı iki ek başlık taşır: bir sohbet sırasındaki yapay zeka çağrıları, takip gönderim koşulları ve düzenleyicideki Testi Çalıştır düğmesi.

Başlık Anlamı
X-Webhook-Signature v1=<hex> biçimindeki imza.
X-Webhook-Timestamp Saniye cinsinden Unix zaman damgası olarak gönderdiğimiz zaman.

İmzalı olsun ya da olmasın her çağrı, kendi User-Agent başlığınızı ayarlamadığınız sürece User-Agent: Custom-Function/1.0 değerini de taşır.

Başlıklar ve imza, imzalı web kancaları ile tamamen aynı şekilde çalışır, bu nedenle web kancalarımızı zaten doğruluyorsanız, aynı kod burada da çalışır. Sadece gizli anahtar farklıdır.

Nasıl doğrulanır

İmza, imzalama gizli anahtarınızı anahtar olarak kullanan <timestamp>.<raw request body> dizesinin bir HMAC-SHA256’sıdır. Bunu ham gövdeye, yani aldığınız tam baytlara karşı kontrol edin: JSON’u ayrıştırmak ve tekrar metne dönüştürmek baytları değiştirebilir ve imza eşleşmez.

GET (veya gönderilecek hiçbir şeyi olmayan bir POST) kullanan bir işlevin gövdesi yoktur, bu nedenle imzalı dize, boş bir gövde ile sadece <timestamp>.'dır. İmza, çağrının bizden geldiğini ve yeni olduğunu kanıtlar, ancak sorgu dizesini kapsamaz.

Node.js örneği:

const crypto = require("crypto");

function verify(rawBody, headers, secret) {
  const timestamp = headers["x-webhook-timestamp"];
  const signature = headers["x-webhook-signature"] || ""; // "v1=<hex>"

  // Reject anything older than 5 minutes so a captured request can't be replayed later.
  if (Math.abs(Date.now() / 1000 - Number(timestamp)) > 300) return false;

  const expected = crypto.createHmac("sha256", secret).update(`${timestamp}.${rawBody}`).digest("hex");
  const received = signature.replace("v1=", "");

  return received.length === expected.length && crypto.timingSafeEqual(Buffer.from(received), Buffer.from(expected));
}

Python örneği:

import hashlib, hmac, time

def verify(raw_body: bytes, headers, secret: str) -> bool:
    timestamp = headers.get("X-Webhook-Timestamp", "")
    signature = headers.get("X-Webhook-Signature", "").replace("v1=", "")
    if not timestamp or abs(time.time() - int(timestamp)) > 300:
        return False
    expected = hmac.new(secret.encode(), f"{timestamp}.".encode() + raw_body, hashlib.sha256).hexdigest()
    return hmac.compare_digest(signature, expected)

Düzenleyicideki Testi Çalıştır ile test edin: imzalama açıldığında, test çağrısı tıpkı canlı bir çağrı gibi imzalanır, bu nedenle testi geçen bir işlev, gerçek sohbetler sırasında da kontrolünüzü geçecektir.

API mi kullanıyorsunuz? Aynı gizli anahtar /v1/custom-functions/signing-secret üzerindeki GET, POST ve DELETE ile okunabilir, oluşturulabilir, yenilenebilir ve kaldırılabilir.


Yürütme Sınırları

Her özel işlevin düzenleyicinin altında isteğe bağlı bir Yürütme sınırları bölümü bulunur. Bu bölüm, yapay zekanın işlevi ne sıklıkla çalıştırabileceğini ve daha önceki bir sonucun yeniden kullanılıp kullanılamayacağını kontrol eder. Buradaki her şey isteğe bağlıdır; hepsini boş bırakırsanız işlev eskisi gibi davranmaya devam eder.

Salt okunur işlev. İşleviniz yalnızca veri okuyorsa (hisse senedi sorgulama, fiyat kontrolü, sipariş durumu arama gibi) ve hiçbir şey oluşturmuyor veya değiştirmiyorsa bunu açın. Yapay zeka yanıt verirken geçici bir ağ kesintisi yaşandığında, platform müşteriyi cevapsız bırakmak yerine konuşma sırasını güvenli bir şekilde yeniden deneyebilir. Yalnızca işlev gerçekten hiçbir şey yazmıyorsa etkinleştirin: kayıt oluşturan bir işlev kapalı kalmalıdır, böylece yeniden deneme işlemi onu yanlışlıkla iki kez çalıştırmaz. GET yöntemini kullanan işlevler, GET istekleri yalnızca veri getirmeyi amaçladığından otomatik olarak salt okunur kabul edilir; POST, PUT, PATCH ve DELETE işlevleri için bu anahtarın açılması gerekir.

Tekrarlanan çağrılarda önbelleğe alınmış sonucu sun. Yapay zeka işlevi aynı girdilerle tekrar çağırdığında (örneğin, müşteri aynı soruyu iki kez sorduğunda), uç noktanızı tekrar çağırmak yerine önceki sonuç yeniden kullanılır. Önbelleğe alınan sonuçlar 24 saate kadar saklanır ve farklı girdilerle yapılan bir çağrı her zaman uç noktanıza taze bir şekilde gider.

Konuşma başına maksimum çalışma. Bir konuşma içinde işlevin kaç kez çalışabileceğine dair kesin bir sınır. Teklif oluşturma, geri arama tetikleme, otomasyon başlatma gibi her sohbette yalnızca bir kez çalışması gereken işlevler için bunu 1 olarak ayarlayın. Sınıra ulaşıldığında, yapay zekaya işlevin zaten çalıştığı söylenir ve en son sonuç verilir, böylece sessiz kalmak yerine müşteriye cevap vermeye devam edebilir.

Zaman aralığı başına maksimum çalışma. Zaman içinde bir hız sınırı: örneğin, 60 dakika içinde en fazla 5 çalışma. Ücretli üçüncü taraf hizmetlerini çağıran veya daha ağır otomasyonları tetikleyen işlevler için kullanışlıdır. Her iki kutu da birlikte doldurulmalıdır (çalışma sayısı ve 7 güne kadar dakika cinsinden bir pencere).

LinkedIn üzerinden teklif, sözleşme veya fatura gönderme. Yapay zeka LinkedIn’de yanıt verdiğinde, bunu hesap sahibinin kendi gelen kutusundan yapar; bu nedenle, hesap sahibi özellikle belirtmediği sürece onun adına bir teklif, sözleşme, fiyat teklifi, fatura, ödeme bağlantısı veya erişim göndermemelidir. Otomatik (varsayılan) ayarında, adı veya açıklaması bu öğelerden birini gönderdiğini belirten bir işlev LinkedIn’de çalıştırılmaz: yapay zekaya hiçbir şeyin gönderilmediği bildirilir ve karşı tarafa konunun hesap sahibi tarafından ele alınacağı bilgisi verilir. İşlevin LinkedIn’de yine de çalışmasına izin vermek için İzin verildi seçeneğini veya otomatik denetimin gözden kaçırabileceği bir işlevi engellemek için LinkedIn’de asla seçeneğini belirleyin. Diğer kanallar bundan etkilenmez ve yukarıdaki sınırların aksine, bu ayar Deneme (Try Out) bölümünde de geçerlidir.

Bilmeniz gereken birkaç şey:

  • Sınırlar yalnızca başarılı çalışmaları sayar. Uç noktanız tarafında başarısız olan bir çağrı bütçeyi tüketmez.
  • Bir çalışma sınır tarafından engellendiğinde, müşteri asla cevapsız bırakılmaz; yapay zekaya neden engellendiği söylenir ve elindeki bilgilerle çalışmaya devam eder.
  • Sınırlar, işlevin çalıştığı her yerde geçerlidir: her kanaldaki normal sohbetler ve bir otomasyon tarafından yönetilen işlevler. Deneme (Try Out) kısmındaki test konuşmaları sayılmaz ve sınırlandırılmaz.

Yerleşik Bot Araçları

Kendi oluşturduğunuz özel işlevlere ek olarak, platform, yapay zeka botunun bir konuşma sırasında kullanabileceği önceden oluşturulmuş araçlardan oluşan bir kütüphane ile birlikte gelir. Bunlar, bir botun yapması gereken en yaygın şeyleri (bir ekip üyesini uyarma, randevu alma, bir kişiyi etiketleme, web sitenizde arama yapma, takip planlama ve daha fazlası) kapsar, böylece bunları sıfırdan bağlamak zorunda kalmazsınız.

Bot, her aracı ne zaman kullanacağına görüşmede neler olduğuna ve Temsilcinizin nasıl yapılandırıldığına bağlı olarak karar verir. Bu araçların çoğu, ilgili özellik etkinleştirildiğinde otomatik olarak açılır (örneğin, rezervasyon araçları yalnızca bir takvim bağlayıp rezervasyonları etkinleştirdiğinizde kullanılabilir hale gelir).

Kredi maliyeti: Her araç çağrısı, Ajanınızın Yapay Zeka Kalite seviyesi üzerinden ücretlendirilir ve kendi oluşturduğunuz özel işlevler de aynı şekilde ücretlendirilir:

Yapay Zeka Kalite düzeyi Araç çağrısı başına kredi Kendi Anthropic anahtarınız (BYOK) bağlıyken
Pro 1 kredi 0 kredi — kendi anahtarınızla çalışır
Ekonomi (kullanımdan kaldırıldı) 0,5 kredi 0 kredi — kendi anahtarınızla çalışır
Max 0,25 kredi yine 0,25 kredi, kendi anahtarınız bağlı olsa bile faturalandırılır
Mini 0,15 kredi yine 0,15 kredi, kendi anahtarınız bağlı olsa bile faturalandırılır

Ekip ve Görev Araçları

Araç Ne Yapar Bot Ne Zaman Kullanır
Ekip Üyesini Uyar Bu kişi için botu duraklatır ve ekibinize bir insana ihtiyaç duyulduğunu e-posta ile bildirir. Sohbet, bir ekip arkadaşının devralabilmesi için işaretlenir. Müşteri bir insan istediğinde, hayal kırıklığına uğradığında veya botun yanıtlamasına izin verilmeyen ya da yanıtlayamadığı bir şey sorduğunda.
Görev Oluştur Görev panonuzda, isteğe bağlı olarak kişi ve görüşme ile bağlantılı yeni bir görev oluşturur. Bot normal şekilde yanıt vermeye devam eder; görev sadece ekibinizin takip etmesi için bir nottur. Özellik isteği, satış fırsatı veya ekibin daha sonra ele alması gereken bir geri arama gibi acil olmayan öğeler için.
SSS Güncellemesi Öner Bot iyi yanıtlayamadığı bir soruyla karşılaştığında, ekibinizden bilgi tabanına bir yanıt eklemesini isteyen bir görev oluşturur. Bir kişi mevcut SSS’lerinizde yer almayan bir şey sorduğunda; böylece eksiklik bir dahaki sefere giderilmiş olur.
SSS Önerisine Bağlam Ekle Başka bir kişi daha sonra farklı bir açıdan benzer bir soru sorarsa, bot yinelenen bir görev oluşturmak yerine bu bağlamı mevcut SSS önerisine ekler. Otomatik; birden fazla kişi aynı bilgi eksikliğini dile getirdiğinde görev listenizi düzenli tutar.

Kişi Araçları

Araç Ne Yapar Bot Ne Zaman Kullanır
Etiketleme Her bot yanıtından sonra otomatik olarak çalışır; müşteriyle yüz yüze olan botun çağırmaya karar verdiği bir araç değildir. Sistem, son konuşmayı gözden geçirir ve ilgili etiketleri uygular, mümkün olduğunda mevcut etiketlerinizi yeniden kullanır (ve yalnızca gerektiğinde yeni bir tane oluşturur). Otomatik; konuşma, ilgi alanı, niyet, potansiyel müşteri kalitesi veya dil gibi segmentlere ayırmaya değer bir şey ortaya çıkardığında.
Kişi Adını Güncelle Kişi paylaştığında adını ve/veya soyadını kaydeder. Müşteri kendini tanıttığında veya bir ismi düzelttiğinde.
Kişi E-postasını Güncelle Kişi paylaştığında e-posta adresini kaydeder. Müşteri bir e-posta adresi sağladığında; bültenler, makbuzlar, hesap aramaları vb. için.

Randevu & Rezervasyon Araçları

Bu araçlar yalnızca Temsilcinizde rezervasyonlar etkinleştirildiğinde ve bir takvim etkinlik türü yapılandırıldığında kullanılabilir.

Araç Ne İşe Yarar Bot Bunu Ne Zaman Kullanır
Müsait Zaman Dilimlerini Kontrol Et Belirli bir tarih veya tarih aralığı için bağlı takviminizde hangi zamanların boş olduğunu arar. Müşteri rezervasyon yapmak istediğinde ve botun gerçek müsaitlik durumunu sunması gerektiğinde.
Randevu Oluştur Takviminizde randevuyu oluşturur ve rezervasyonu müşteriye onaylar. Müşteri belirli bir tarih ve saati onayladıktan sonra.
Randevuyu Taşı Mevcut bir randevuyu yeni bir tarih ve saate yeniden planlar. Müşteri yeniden planlama istediğinde.
Randevuyu İptal Et Mevcut bir randevuyu iptal eder. Müşteri iptal etmek istediğinde.
Randevuları Sorgula Bir kişinin mevcut randevularını getirir, böylece bot halihazırda neler olduğunu bilir. Müşteri “randevum ne zaman?” diye sorduğunda veya yeniden planlama teklif etmeden önce.

Bilgi & Web Araçları

Araç Ne Yapar Bot Ne Zaman Kullanır
Web Sitenizi Arayın Müşterinin sorusunu yanıtlayan ürün sayfalarını, makaleleri veya diğer içerikleri bulmak için Temsilcinin dinamik URL’ler listesine eklediğiniz URL’leri tarar. Yalnızca AI Web Araması açık olduğunda ve en az bir Dinamik URL eklediğinizde kullanılabilir. AI Web Araması kapalıysa, bot sayfaları veya bağlantıları okuyamaz; müşterinin sohbete yapıştırdıkları dahil. Müşteri, web sitenizde bulunması muhtemel bir şey hakkında soru sorduğunda (ürünler, fiyatlandırma, konumlar, politikalar).
Bağlantıyı Kontrol Et Botun o sayfa hakkındaki soruları yanıtlayabilmesi için belirli bir URL’nin içeriğini okur. Yalnızca AI Web Araması açık olduğunda ve en az bir Dinamik URL eklediğinizde kullanılabilir. AI Web Araması kapalıysa, bot sayfaları veya bağlantıları okuyamaz; müşterinin sohbete yapıştırdıkları dahil. Müşteri bir bağlantı paylaştığında veya sitenizdeki belirli bir sayfa hakkında soru sorduğunda.
Web’de Ara Genel bir Google araması yapar ve en iyi sonuçları döndürür, böylece bot kendi içeriğinizin dışındaki soruları yanıtlayabilir. Müşteri, bilgi tabanınızda olmayan genel bir şey (örneğin, yol tarifleri, genel bilgiler) hakkında soru sorduğunda. Yalnızca web araması etkinse kullanılır.

Takip Araçları

Bu araçlar, Temsilcinizde takiplerin etkinleştirilmesini gerektirir.

Araç Ne İşe Yarar Bot Bunu Ne Zaman Kullanır
Akıllı Takip Planla Takip dizinizi kullanarak akıllı bir takip mesajı planlar; konuşmaya dayalı olarak doğru şablonu ve zamanlamayı seçer. Müşteri sessiz kaldığında veya bottan “daha sonra tekrar kontrol etmesini” istediğinde.
Takip Planla Belirli bir zamanda temel bir takip planlar. Botun konuşmayı belirli bir anda ileriye taşıması gerektiğinde.

Özel İşlev Çalıştırıcı

Araç Ne İşe Yarar Bot Bunu Ne Zaman Kullanır
Özel İşlev Çalıştır Oluşturduğunuz ve Temsilciye atadığınız özel işlevlerden birini yürütür (bu sayfanın geri kalanına bakın). Müşterinin isteği, özel işlevlerinizden birinin amacıyla eşleştiğinde.
Araç Sonucundan Dosya Gönder Bağlantıyı yapıştırmak yerine, özel işlevlerinizden veya MCP sunucularınızdan birinden gelen bağlantıya sahip bir görseli, videoyu, ses dosyasını veya belgeyi gerçek bir ek olarak gönderir. Temsilcinin en az bir özel işlevi veya MCP sunucusu olduğunda kullanılabilir. Bir araç sonucu, kişinin görmeyi istediği bir dosyayı içerdiğinde. Kendi araçlarınızdan dosyalar bölümüne bakın.

Restoran Rezervasyon Araçları (Zenchef ve Formitable)

Bu araçlar yalnızca bir Zenchef veya Formitable entegrasyonu bağlı olduğunda kullanılabilir. Botun restoran rezervasyonlarını uçtan uca yönetmesini sağlarlar.

Araç Ne İşe Yarar Bot Bunu Ne Zaman Kullanır
Restoran Müsaitliğini Kontrol Et Belirli bir tarih, kişi sayısı ve (isteğe bağlı) oturma alanı için açık rezervasyon yuvalarını arar. Bir misafir masa ayırtmak istediğinde.
Restoran Rezervasyonu Oluştur Yeni bir rezervasyon oluşturur. Misafir belirli bir zaman dilimini onayladıktan sonra.
Restoran Rezervasyonunu Güncelle Mevcut bir rezervasyonun tarihini, saatini, kişi sayısını veya notlarını değiştirir. Misafir rezervasyonunu değiştirmek istediğinde.
Rezervasyonu İptal Et veya Durumunu Değiştir Bir rezervasyonu iptal eder veya durumunu günceller (örneğin, onaylandı, gelmedi). Misafir iptal ettiğinde veya botun bir durum değişikliğini işaretlemesi gerektiğinde.
Rezervasyonları Ara İsim, e-posta veya tarih gibi kriterlerle eşleşen mevcut rezervasyonları bulur. Geri dönen bir misafir mevcut bir rezervasyon hakkında soru sorduğunda.
Misafir Profilini Güncelle Misafirin restoran sistemindeki profilini günceller (tercihler, notlar, iletişim bilgileri). Misafir beslenme tercihlerini, yeni bir telefon numarasını veya profil düzeyindeki diğer bilgileri paylaştığında.
Restoran Ürünlerini Listele Rezervasyon için mevcut olan menülerin, set menülerin veya ekstraların listesini çeker. Misafir “hangi set menüleriniz var?” diye sorduğunda veya botun bir rezervasyona menü eklemesi gerektiğinde.

Araçları Açma ve Kapatma

Çoğu araç, Temsilcinin AI Yetenekleri sekmesinden kontrol edilir:

  • Rezervasyon araçları, aynı AI Yetenekleri sekmesindeki Rezervasyonlar kartında rezervasyonları etkinleştirip bir takvim bağladığınızda açılır
  • Takip araçları, takipler özelliğini etkinleştirdiğinizde açılır
  • Restoran araçları, bir Zenchef veya Formitable hesabı bağladığınızda açılır
  • Web araması, SSS ve Bilgi sekmesinde kendi açma/kapama düğmesine sahiptir
  • Görev araçları, Yapay zekanın görev oluşturmasına izin ver düğmesi ile Temsilci bazında kapatılabilir (varsayılan olarak açıktır; Ayarlar → Profil → Özellikler altındaki hesap genelindeki Görevler anahtarı, tüm görev sistemini her yerde kapatır)
  • Kişi güncelleme araçları, aynı AI Yetenekleri sekmesinden kontrol edilir; yapay zekanın kişileri yeniden adlandırıp adlandıramayacağı veya toplanan ek bilgileri üzerlerine kaydedip kaydedemeyeceği buradan yönetilir
  • Uyarı araçları her zaman kullanılabilir; etiketleme her bot yanıtından sonra otomatik olarak çalışır (botun çağırmayı seçtiği bir araç değildir)

Botun belirli bir yerleşik aracı kullanmasını durdurmak istiyorsanız, en temiz yol temel özelliği devre dışı bırakmaktır (örneğin, tüm rezervasyon araçlarını devre dışı bırakmak için rezervasyonları kapatın).


Bir Otomasyon Tarafından Yönetilen İşlevler

Özel İşlevler sayfanızdaki bazı girdiler Otomasyon tarafından yönetiliyor rozeti taşıyabilir. Bunlar burada oluşturulmamıştır; dış bir web adresine yönlendirmek yerine adımlarını otomasyon tuvali üzerinde görsel olarak oluşturduğunuz bir yeteneği temsil eden, Yapay Zeka Ajanı İşlevi tetikleyicisine sahip bir otomasyondan gelirler.

Yönetilen bir işlev sizin yerinize takip edilir: adı, açıklaması ve alanları her zaman otomasyonun tetikleyicisinde ayarlananları takip eder, bu nedenle bu sayfadan düzenlenemez veya silinemez; bunun yerine Otomasyonu aç bağlantısını kullanın ve otomasyonun kendisini değiştirin. Yine de hangi temsilcilerin bu işleve sahip olacağını normal yolla seçebilirsiniz: bir temsilcinin Yapay Zeka Yetenekleri sekmesinde, temsilcinin diğer yeteneklerinin yanında normal bir açma/kapama düğmesiyle görünür (otomasyonu duraklatılmışsa, satır bunu belirtir; otomasyon açıldığında yetenek canlı hale gelir). Bununla ilgili diğer her şey, diğer tüm özel işlevler gibi davranır: Yapay Zeka onu ne zaman çağıracağına karar verir, tanımladığınız ayrıntıları toplar ve otomasyonun yanıtını aynı konuşmada kullanabilir.

İkisi arasında seçim yapıyorsanız: normal bir özel işlevi, zaten çağrılacak bir adresi olan bir sisteme yönlendirin; işi adımlardan oluşturmayı tercih ediyorsanız (bir elektronik tabloda veya veritabanında arama yapma, bir koşula göre dallanma, kayıt oluşturma gibi) kendi sunucunuzu çalıştırmadan bir Yapay Zeka Ajan İşlevi tetikleyicisi ile otomasyon oluşturun. Bkz. Otomasyonlar.


Plan Gereksinimleri

Özel işlevler, özel işlevler özelliğini içeren planlarda mevcuttur. Kullanılabilirliği doğrulamak için aboneliğinizi kontrol edin.


Sonraki Adımlar