डेवलपर्स
वेबहुक
कॉल खत्म होने, मैसेज लिए जाने, अपॉइंटमेंट, ऑर्डर और रिज़र्वेशन बदलने, या एक कैंपेन खत्म होने पर साइन किए हुए HTTPS नोटिफिकेशन प्राप्त करें, और जांचें कि हर एक सच में Ringhum से आया है।
6 मिनट में पढ़ें 24 सितम्बर 2026 को अपडेट किया गया
इस पेज पर
एक वेबहुक आपके वर्कस्पेस में कुछ होते ही आपके सर्वर को एक HTTPS रिक्वेस्ट भेजता है। API को पोल करने की बजाय वेबहुक इस्तेमाल करें: जब कोई कॉल खत्म होती है, तो आपको सारांश, नतीजा, इकट्ठा किए गए विवरण और ट्रांसक्रिप्ट तुरंत मिलते हैं। हर डिलीवरी एक सीक्रेट से साइन की जाती है जिसे सिर्फ़ आप और Ringhum जानते हैं, ताकि आपका सर्वर उस किसी भी चीज़ को अस्वीकार कर सके जो Ringhum से नहीं आई।
एक एंडपॉइंट जोड़ें
सिर्फ़ वर्कस्पेस का ओनर और एडमिन ही एंडपॉइंट जोड़, टेस्ट और हटा सकते हैं।
- साइडबार में डेवलपर्स खोलें।
- वेबहुक कार्ड में, एंडपॉइंट जोड़ें पर क्लिक करें।
- एंडपॉइंट URL डालें। यह
https://से शुरू होना चाहिए। - इवेंट के तहत, जो इवेंट आप चाहते हैं उन पर टिक करें।
call.endedआपके लिए टिक किया हुआ है। - एंडपॉइंट जोड़ें पर क्लिक करें।
- हरे बॉक्स से साइनिंग सीक्रेट कॉपी करें (यह
whsec_से शुरू होता है) और इसे अपने सर्वर पर रखें। Done पर क्लिक करें।
ज़रूरी: साइनिंग सीक्रेट सिर्फ़ एक बार दिखाया जाता है। अगर आप इसे खो देते हैं, तो एंडपॉइंट हटाएं और नया सीक्रेट पाने के लिए इसे फिर से जोड़ें।
आप जितने चाहें उतने एंडपॉइंट जोड़ सकते हैं। वेबहुक वर्कस्पेस के हर असिस्टेंट को कवर करते हैं। आप write स्कोप वाली कुंजी के साथ POST /webhooks का इस्तेमाल करके API से भी एंडपॉइंट मैनेज कर सकते हैं।
इवेंट
| इवेंट | यह कब भेजा जाता है |
|---|---|
call.started |
एक असिस्टेंट ने एक कॉल का जवाब दिया |
call.ended |
एक कॉल खत्म हुई और इसका सारांश बना (ट्रांसक्रिप्ट और सारांश शामिल) |
call.transferred |
एक कॉल एक इंसान को ट्रांसफ़र की गई |
message.taken |
असिस्टेंट ने एक मैसेज लिया |
appointment.booked |
असिस्टेंट ने एक अपॉइंटमेंट बुक की |
appointment.rescheduled |
एक अपॉइंटमेंट नए समय पर स्थानांतरित हुई |
appointment.cancelled |
एक अपॉइंटमेंट रद्द हुई |
order.created |
एक ऑर्डर दिया गया (असिस्टेंट, हाथ से या API के ज़रिए) |
order.updated |
एक ऑर्डर नई स्थिति में गया |
order.cancelled |
एक ऑर्डर रद्द हुआ |
reservation.created |
एक कमरा रिज़र्व हुआ (असिस्टेंट, हाथ से या API के ज़रिए) |
reservation.updated |
एक रिज़र्वेशन नई स्थिति में गया (पुष्ट, चेक-इन, चेक-आउट, नो-शो) |
reservation.cancelled |
एक रिज़र्वेशन रद्द हुआ |
campaign.completed |
एक आउटबाउंड कैंपेन ने अपनी सूची को कॉल करना खत्म किया |
test.ping |
आपने टेस्ट भेजें पर क्लिक किया |
एक डिलीवरी कैसी दिखती है
हर डिलीवरी एक JSON बॉडी और इन हेडर के साथ एक POST है:
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 ऑब्जेक्ट इवेंट पर निर्भर करता है:
call.endedऔरmessage.taken: ऊपर वाले कॉल फ़ील्ड।call.startedऔरcall.transferred:call_id,direction,from,to,assistant_id,statusऔरstarted_at।appointment.*:appointment_id,title,status,starts_at,ends_at,timezone,customer(नाम, फ़ोन, ईमेल),contact_id,service,staff,call_idऔरnotes।order.*:order_id,number,status,fulfillment,customer,address, विकल्प व कीमतों के साथitems,currency,subtotal,fee,total,source,call_idऔर, रद्दीकरण के लिए,cancel_reason।reservation.*:reservation_id,number,status,room,check_in,check_out,nights,adults,children,guest,currency,nightly,totalऔरsource।campaign.completed:campaign_id,nameऔर कैंपेन की प्रगति की गिनती।
नोट: जब असिस्टेंट कॉल के दौरान एक अपॉइंटमेंट बुक करता है, तो आपको
appointment.bookedदो बार मिल सकता है। एक बुकिंग होते ही भेजा जाता है, अपॉइंटमेंट फ़ील्ड के साथ। दूसरा कॉल का सारांश बनने के बाद भेजा जाता है, कॉल फ़ील्ड के साथ। जांचें किdataमेंappointment_idहै याcall_id, और एक डिलीवरी को दो बार प्रोसेस करने से बचने के लिएidफ़ील्ड इस्तेमाल करें।
सिग्नेचर जांचें
सिग्नेचर टाइमस्टैंप, एक डॉट, और कच्ची रिक्वेस्ट बॉडी का एक HMAC-SHA256 है, जो आपके एंडपॉइंट के साइनिंग सीक्रेट से की-युक्त है। यह v1= के बाद हेक्स डाइजेस्ट के रूप में भेजा जाता है।
- किसी भी JSON पार्सिंग से पहले, कच्ची बॉडी को बिल्कुल वैसे ही पढ़ें जैसे प्राप्त हुई।
- स्ट्रिंग
{X-Ringhum-Timestamp}.{raw body}बनाएं। - अपने सीक्रेट से HMAC-SHA256 निकालें और इसके आगे
v1=जोड़ें। - इसे कॉन्स्टेंट-टाइम तुलना का इस्तेमाल करके
X-Ringhum-Signatureसे मिलाएं। - अगर टाइमस्टैंप पांच मिनट से ज़्यादा पुराना है, तो रिक्वेस्ट को अस्वीकार करें, ताकि दोहराई गई रिक्वेस्ट रोकी जा सकें।
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;
}
रिस्पॉन्स, टाइमआउट और रीट्राई
- डिलीवरी की पुष्टि के लिए किसी भी
2xxस्टेटस से जवाब दें। जवाब देने के बाद धीमा काम करें। - Ringhum आपके रिस्पॉन्स के लिए 10 सेकंड तक इंतज़ार करता है।
- अगर आपका एंडपॉइंट
2xxसे जवाब नहीं देता, तो डिलीवरी कुल मिलाकर 3 बार तक आज़माई जाती है: तुरंत, फिर लगभग 10 सेकंड बाद, और आख़िरी बार लगभग 60 सेकंड बाद। इसके बाद इसे छोड़ दिया जाता है। - डिलीवरी बेतरतीब क्रम में आ सकती हैं। इन्हें क्रम में रखने के लिए
created_atऔरdataमें मौजूद आईडी इस्तेमाल करें।
वेबहुक टेबल हर एंडपॉइंट की आख़िरी HTTP स्थिति और यह कब भेजी गई, दिखाती है। एक फेल हुआ एंडपॉइंट सक्रिय बना रहता है; Ringhum इसे आपके लिए बंद नहीं करता।
टेस्ट, रोकें और हटाएं
- टेस्ट भेजें तुरंत एक
test.pingइवेंट भेजता है, और एक मैसेज आपके एंडपॉइंट की दी हुई HTTP स्थिति दिखाता है। - सक्रिय स्विच एक एंडपॉइंट को रोक देता है। इसके बंद रहने के दौरान होने वाले इवेंट बाद में नहीं भेजे जाते।
- हटाएं एंडपॉइंट और इसका सीक्रेट मिटा देता है।
सामान्य सवाल
इंटीग्रेशन के तहत Zapier, Make और n8n ऐप से यह कैसे अलग है? वे कनेक्शन इंटीग्रेशन पेज और इसके छह इवेंट टाइप इस्तेमाल करते हैं। इनकी बॉडी {"event", "workspace", "sent_at", "data"} है, और जब आप एक सीक्रेट सेट करते हैं तो सिग्नेचर हेडर X-Ringhum-Signature: sha256=… होता है, सिर्फ़ बॉडी का एक HMAC-SHA256। यहां बताए गए डेवलपर वेबहुक ज़्यादा इवेंट कवर करते हैं और टाइमस्टैंप के साथ v1= सिग्नेचर इस्तेमाल करते हैं। देखें क्या भेजा जाए यह चुनना।
मेरा एंडपॉइंट 2xx लौटाता है लेकिन मेरे कोड को कुछ नहीं दिखता। जांचें कि उस एंडपॉइंट के लिए इवेंट टिक है, एंडपॉइंट सक्रिय है, और आपका फ़ायरवॉल इंटरनेट से रिक्वेस्ट की अनुमति देता है।
सिग्नेचर जांच क्यों फेल होती है? ज़्यादातर बार बॉडी को हैश करने से पहले पार्स और फिर से एनकोड किया गया था। कच्चे बाइट्स को बिल्कुल वैसे ही हैश करें जैसे प्राप्त हुए। </content>
संबंधित लेख
API कुंजियां और स्कोप
डेवलपर्स पेज पर API कुंजियां बनाएं और रद्द करें, रीड या राइट एक्सेस चुनें, और Ringhum REST API की बुनियादी बातें जानें - बेस URL, ऑथेंटिकेशन, पेजिनेशन, एरर और रेट लिमिट।
Ringhum को Claude और दूसरे एआई टूल से कनेक्ट करें (MCP)
Claude, ChatGPT, Cursor, VS Code और Model Context Protocol सपोर्ट करने वाले दूसरे एआई ऐप में Ringhum को एक कनेक्टर के रूप में जोड़ें, रीड-ओनली या रीड-एंड-चेंज एक्सेस चुनें, और किसी ऐप को डिसकनेक्ट करें।
क्या भेजा जाए यह चुनना
चुनें कि हर कनेक्टेड ऐप को कौन सी कॉल, इनबॉक्स आइटम, अपॉइंटमेंट और ऑर्डर मिलें, और कॉल अपडेट को सिर्फ़ उन कॉल तक सीमित करें जिन पर किसी को कार्रवाई करनी है।
एक ऐप कनेक्ट करना
Slack, अपना CRM, हेल्प डेस्क, टास्क टूल, स्प्रेडशीट, दुकान या कैलेंडर Ringhum से कैसे कनेक्ट करें, हर ऐप किस तरह का कनेक्शन इस्तेमाल करता है, और यह जांचना कि यह काम करता है।
अब भी अटके हुए हैं?
[email protected] पर ईमेल करें या हमें संदेश भेजें। Team और Scale प्लान को प्राथमिकता वाला सपोर्ट मिलता है।