Geliştiriciler
Webhooks
Aramalar bittiğinde, mesajlar alındığında, randevular, siparişler ve rezervasyonlar değiştiğinde ya da bir kampanya bittiğinde imzalı HTTPS bildirimleri alın ve her birinin gerçekten Ringhum'dan geldiğini doğrulayın.
5 dk. okuma Güncellendi: 24 Eylül 2026
Bu sayfada
Bir webhook, çalışma alanınızda bir şey olduğu anda sunucunuza bir HTTPS isteği gönderir. API'yi yoklamak (polling) yerine webhook kullanın: bir arama bittiğinde, özeti, sonucu, toplanan ayrıntıları ve dökümü hemen alırsınız. Her teslimat, yalnızca sizin ve Ringhum'un bildiği bir gizli anahtarla imzalanır, böylece sunucunuz Ringhum'dan gelmeyen her şeyi reddedebilir.
Bir uç nokta ekleme
Uç noktaları yalnızca çalışma alanı Sahibi ve Adminleri ekleyebilir, test edebilir ve kaldırabilir.
- Kenar çubuğunda Geliştiriciler'i açın.
- Webhooks kartında Uç nokta ekle'ye tıklayın.
- Uç nokta URL'sini girin.
https://ile başlamalıdır. - Etkinlikler altında, istediğiniz olayları işaretleyin.
call.endedsizin için işaretlidir. - Uç nokta ekle'ye tıklayın.
- Yeşil kutudan imzalama gizli anahtarını (
whsec_ile başlar) kopyalayın ve sunucunuzda saklayın. Bitti'ye tıklayın.
Önemli: İmzalama gizli anahtarı yalnızca bir kez gösterilir. Kaybederseniz, uç noktayı kaldırın ve yeni bir gizli anahtar almak için tekrar ekleyin.
İhtiyacınız kadar uç nokta ekleyebilirsiniz. Webhook'lar, çalışma alanındaki her asistanı kapsar. Uç noktaları write kapsamına sahip bir anahtarla, POST /webhooks üzerinden API aracılığıyla da yönetebilirsiniz.
Olaylar
| Olay | Ne zaman gönderilir |
|---|---|
call.started |
Bir arama bir asistan tarafından yanıtlandı |
call.ended |
Bir arama bitti ve özetlendi (döküm ve özet dahil) |
call.transferred |
Bir arama bir insana aktarıldı |
message.taken |
Asistan bir mesaj aldı |
appointment.booked |
Asistan bir randevu aldı |
appointment.rescheduled |
Bir randevu yeni bir saate taşındı |
appointment.cancelled |
Bir randevu iptal edildi |
order.created |
Bir sipariş verildi (bir asistan tarafından, elle veya API üzerinden) |
order.updated |
Bir sipariş yeni bir duruma taşındı |
order.cancelled |
Bir sipariş iptal edildi |
reservation.created |
Bir oda rezerve edildi (bir asistan tarafından, elle veya API üzerinden) |
reservation.updated |
Bir rezervasyon yeni bir duruma taşındı (onaylandı, giriş yapıldı, çıkış yapıldı, gelmedi) |
reservation.cancelled |
Bir rezervasyon iptal edildi |
campaign.completed |
Giden bir kampanya listesini aramayı bitirdi |
test.ping |
Test gönder'e tıkladınız |
Bir teslimat neye benzer
Her teslimat, bir JSON gövdesi ve şu başlıklarla bir POST'tur:
POST https://example.com/hooks/ringhum
Content-Type: application/json
User-Agent: Ringhum-Webhooks/1.0
X-Ringhum-Event: call.ended
X-Ringhum-Timestamp: 1789250000
X-Ringhum-Signature: v1=5f1a…
{
"id": "evt_8f2k…",
"type": "call.ended",
"created_at": "2026-09-24T14:03:11+00:00",
"data": {
"call_id": 4812,
"direction": "inbound",
"from": "+14155550132",
"to": "+14155550100",
"assistant_id": 3,
"status": "completed",
"outcome": "message_taken",
"sentiment": "neutral",
"duration_seconds": 94,
"summary": "Caller asked for a quote for a kitchen repair…",
"extracted": { "name": "Dana Lee", "reason": "Quote" },
"transcript": [
{ "role": "assistant", "content": "Hello, you've reached…" },
{ "role": "user", "content": "Hi, I'd like a quote…" }
]
}
}
data nesnesi olaya bağlıdır:
call.endedvemessage.taken: yukarıdaki arama alanları.call.startedvecall.transferred:call_id,direction,from,to,assistant_id,statusvestarted_at.appointment.*:appointment_id,title,status,starts_at,ends_at,timezone,customer(ad, telefon, e-posta),contact_id,service,staff,call_idvenotes.order.*:order_id,number,status,fulfillment,customer,address, seçenekler ve fiyatlarlaitems,currency,subtotal,fee,total,source,call_idve, iptaller için,cancel_reason.reservation.*:reservation_id,number,status,room,check_in,check_out,nights,adults,children,guest,currency,nightly,totalvesource.campaign.completed:campaign_id,nameve kampanyanın ilerleme sayıları.
Not: Asistan bir arama sırasında bir randevu aldığında,
appointment.booked'ı iki kez alabilirsiniz. Biri, randevu alanlarıyla birlikte rezervasyon yapıldığında gönderilir. Diğeri, arama özetlendikten sonra, arama alanlarıyla birlikte gönderilir.data'nınappointment_idmi yoksacall_idmi olduğunu kontrol edin ve bir teslimatı iki kez işlemekten kaçınmak içinidalanını kullanın.
İmzayı doğrulama
İmza, zaman damgasının, bir noktanın ve ham istek gövdesinin, uç noktanızın imzalama gizli anahtarıyla anahtarlanmış bir HMAC-SHA256'sıdır. v1= ardından onaltılık özet olarak gönderilir.
- Ham gövdeyi, herhangi bir JSON ayrıştırmasından önce, alındığı gibi tam olarak okuyun.
{X-Ringhum-Timestamp}.{ham gövde}dizesini oluşturun.- Gizli anahtarınızla HMAC-SHA256'yı hesaplayın ve önüne
v1=ekleyin. - Sabit zamanlı bir karşılaştırma kullanarak
X-Ringhum-Signatureile karşılaştırın. - Tekrarlanan istekleri engellemek için, zaman damgası beş dakikadan eskiyse isteği reddedin.
Node.js:
const crypto = require('crypto');
function isValid(req, rawBody, secret) {
const ts = req.header('X-Ringhum-Timestamp');
const sig = req.header('X-Ringhum-Signature') || '';
const expected = 'v1=' + crypto.createHmac('sha256', secret).update(`${ts}.${rawBody}`).digest('hex');
const fresh = Math.abs(Date.now() / 1000 - Number(ts)) < 300;
return fresh && sig.length === expected.length &&
crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(expected));
}
PHP:
$ts = $_SERVER['HTTP_X_RINGHUM_TIMESTAMP'] ?? '';
$sig = $_SERVER['HTTP_X_RINGHUM_SIGNATURE'] ?? '';
$expected = 'v1=' . hash_hmac('sha256', $ts . '.' . file_get_contents('php://input'), $secret);
if (! hash_equals($expected, $sig) || abs(time() - (int) $ts) > 300) {
http_response_code(400);
exit;
}
Yanıtlar, zaman aşımları ve tekrar denemeler
- Teslimatı onaylamak için herhangi bir
2xxdurumuyla yanıt verin. Yanıt verdikten sonra yavaş işler yapın. - Ringhum, yanıtınız için en fazla 10 saniye bekler.
- Uç noktanız bir
2xxile yanıt vermezse, teslimat toplamda en fazla 3 kez denenir: hemen, yaklaşık 10 saniye sonra tekrar ve yaklaşık 60 saniye sonra son bir kez. Bundan sonra bırakılır. - Teslimatlar sırasız gelebilir. Onları sıraya koymak için
created_at'i vedataiçindeki kimlikleri kullanın.
Webhooks tablosu, her uç noktanın son HTTP durumunu ve ne zaman gönderildiğini gösterir. Başarısız bir uç nokta aktif kalır; Ringhum onu sizin için kapatmaz.
Test etme, duraklatma ve kaldırma
- Test gönder, hemen bir
test.pingolayı gönderir ve bir mesaj, uç noktanızın döndürdüğü HTTP durumunu gösterir. - Aktif anahtarı bir uç noktayı duraklatır. Kapalıyken olan olaylar daha sonra gönderilmez.
- Kaldır, uç noktayı ve gizli anahtarını siler.
Sık sorulan sorular
Entegrasyonlar altındaki Zapier, Make ve n8n uygulamalarından farkı nedir? Bu bağlantılar Entegrasyonlar sayfasını ve onun altı olay türünü kullanır. Gövdeleri {"event", "workspace", "sent_at", "data"}'dır ve bir gizli anahtar ayarladığınızda imza başlığı, yalnızca gövdenin bir HMAC-SHA256'sı olan X-Ringhum-Signature: sha256=…'dır. Burada anlatılan geliştirici webhook'ları daha fazla olayı kapsar ve bir zaman damgasıyla v1= imzasını kullanır. Bkz. Nelerin gönderileceğini seçme.
Uç noktam 2xx döndürüyor ama kodum hiçbir şey görmüyor. O uç nokta için olayın işaretli olduğunu, uç noktanın aktif olduğunu ve güvenlik duvarınızın internetten gelen istekleri kabul ettiğini kontrol edin.
İmza kontrolü neden başarısız oluyor? Çoğunlukla gövde, hashlenmeden önce ayrıştırılıp yeniden kodlanmıştır. Ham baytları, alındığı gibi tam olarak hashleyin.
← Önceki
API anahtarları ve kapsamlar
İleri →
Ringhum'u Claude ve diğer yapay zeka araçlarına bağlayın (MCP)
İlgili makaleler
API anahtarları ve kapsamlar
Geliştiriciler sayfasında API anahtarları oluşturun ve iptal edin, okuma veya yazma erişimi seçin ve Ringhum REST API'sinin temellerini öğrenin - temel URL, kimlik doğrulama, sayfalama, hatalar ve hız sınırları.
Ringhum'u Claude ve diğer yapay zeka araçlarına bağlayın (MCP)
Ringhum'u Model Context Protocol'ü destekleyen Claude, ChatGPT, Cursor, VS Code ve diğer yapay zeka uygulamalarına bir bağlayıcı olarak ekleyin, salt okunur veya okuma ve değiştirme erişimi seçin ve bir uygulamanın bağlantısını kesin.
Nelerin gönderileceğini seçme
Her bağlı uygulamanın hangi aramaları, gelen kutusu öğelerini, randevuları ve siparişleri alacağını seçin ve arama güncellemelerini birinin harekete geçmesi gereken aramalarla sınırlayın.
Bir uygulama bağlama
Slack, CRM'iniz, yardım masanız, görev aracınız, e-tablonuz, mağazanız veya takviminiz Ringhum'a nasıl bağlanır, her uygulamanın hangi tür bağlantı kullandığı ve çalıştığını nasıl kontrol edersiniz.
Hâlâ takıldınız mı?
E-posta gönderin [email protected] veya bize mesaj gönderin. Team ve Scale planları öncelikli destek alır.