İçeriğe geç

Özel araçlar

Sisteminizin API’si mi var? Bağlarız. Yok mu? Küçük bir webhook yazın — onu da bağlarız. Özel araçlar asistanın kendi sistemlerinizi çağırmasını sağlar; ör. “bir SKU’nun anlık stoğu ve bir sonraki teslim tarihi”.

Ayarlar → Entegrasyonlar → Özel araçlar’dan yönetilir.

TürNasıl çalışırNe zaman uygun
WebhookHTTPS uç noktanıza imzalı bir zarf POST ederiz, siz cevaplarsınız.Küçük bir uç nokta yazabiliyorsanız.
HTTPSitenizin mevcut arama ya da API’sini kendi biçiminde çağırırız. İmza yok.API zaten varsa.
  1. Bir ad ve net bir açıklama verin — asistan aracı ne zaman çağıracağına açıklamadan karar verir.
  2. Girdilerini JSON Schema olarak tanımlayın (parametreler).
  3. Webhook için HTTPS uç noktanızı, HTTP için istek şablonunu girin.
  4. Bir zaman aşımı belirleyin (varsayılan 10 saniye).
  5. İsterseniz Çalıştırmadan önce bir insana sor’u açın — çağrı Konuşmalar’da onay kartı olarak bekler.
  6. Test çağrısı yapın. Uç noktanıza bir gerçek çağrı başarılı olmadan araç yayına çıkamaz — ilk çağıran asistan olmamalı.
POST https://your-endpoint.example.com/tools
Content-Type: application/json
X-Fluxy-Signature: t=1760000000,v1=5f2b…
{
"tool_call_id": "9c1e…",
"tool": "stock_level",
"arguments": { "sku": "SH-42-WHT" },
"conversation_id": "c0ffee…"
}

JSON ile cevap verin; asistan cevabınızı okur.

Başlık, imzalandığı zaman damgasını taşır. Araç sırrınızla <t>.<ham gövde> üzerinde HMAC-SHA256’yı yeniden hesaplayın ve beş dakikadan eski her şeyi reddedin.

import crypto from 'node:crypto';
function verify(rawBody, header, secret) {
const { t, v1 } = Object.fromEntries(header.split(',').map((p) => p.split('=')));
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
const expected = crypto.createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex');
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1));
}

Her çağrı sabit bir tool_call_id taşır; yeniden deneme aynı id’yi kullanır, tekrarlanan id’yi aynı çağrı sayın (idempotent işleme).

DurumBiz ne yaparızSiz ne yaparsınız
Zaman aşımı (varsayılan 10 sn)Aynı tool_call_id ile iki kez yeniden denerizDaha hızlı cevap verin
Uç noktanızdan 5xxAynı tool_call_id ile artan aralıklarla yeniden denerizİşlemi tekrar güvenli hâle getirin
Uç noktanızdan 4xxYeniden denemeyizAsistana çağrının başarısız olduğu söylenir, o da müşteriye açıkça söyler
Webhook 1 MB’tan büyük cevap verirYeniden denemeyizDaha küçük bir cevap döndürün
Adres herkese açık bir https:// adresi değilYeniden denemeyiz — çağrı hiç yapılmazHerkese açık bir HTTPS uç noktası kullanın

Bir çağrı tamamlanamadığında asistan yapılmış gibi davranmaz: müşteriye şu an yapılamadığını söyler ve bir kişinin dönmesini önerir.

  • Her adres herkese açık bir https:// adresi olmalı. Özel ya da iç ağdaki adresler reddedilir.
  • Webhook: yönlendirmeler izlenmez; cevabınızın en çok 1 MB’ını okuruz.
  • HTTP: en çok 5 yönlendirme izlenir ve her adım da herkese açık bir HTTPS adresi olmalı; cevabın en çok 5 MB’ını okuruz.