Utviklere
Webhooker
Motta signerte HTTPS-varsler når samtaler avsluttes, beskjeder tas imot, avtaler, bestillinger og reservasjoner endres, eller en kampanje fullføres, og bekreft at hver av dem faktisk kom fra Ringhum.
5 min lesetid Oppdatert 24 september 2026
På denne siden
En webhook sender en HTTPS-forespørsel til serveren din i det øyeblikket noe skjer i arbeidsområdet ditt. Bruk webhooker i stedet for å polle API-et: når en samtale avsluttes, mottar du sammendraget, resultatet, de innsamlede detaljene og transkripsjonen med en gang. Hver levering signeres med en hemmelighet bare du og Ringhum kjenner, slik at serveren din kan avvise alt som ikke kom fra Ringhum.
Legg til et endepunkt
Bare arbeidsområdets Eier og administratorer kan legge til, teste og fjerne endepunkter.
- Åpne Utviklere i sidemenyen.
- I kortet Webhooks klikker du på Legg til endepunkt.
- Skriv inn Endepunkt-URL. Den må starte med
https://. - Under Hendelser krysser du av for hendelsene du vil ha.
call.endeder avkrysset for deg. - Klikk på Legg til endepunkt.
- Kopier signeringshemmeligheten fra den grønne boksen (den starter med
whsec_) og lagre den på serveren din. Klikk på Ferdig.
Viktig: Signeringshemmeligheten vises bare én gang. Hvis du mister den, fjerner du endepunktet og legger det til på nytt for å få en ny hemmelighet.
Du kan legge til så mange endepunkter du trenger. Webhooker dekker hver assistent i arbeidsområdet. Du kan også administrere endepunkter via API-et, med POST /webhooks og en nøkkel som har tilgangen write.
Hendelser
| Hendelse | Når den sendes |
|---|---|
call.started |
En samtale ble besvart av en assistent |
call.ended |
En samtale ble avsluttet og oppsummert (inkluderer transkripsjon og sammendrag) |
call.transferred |
En samtale ble overført til et menneske |
message.taken |
Assistenten tok imot en beskjed |
appointment.booked |
Assistenten bestilte en avtale |
appointment.rescheduled |
En avtale ble flyttet til et nytt tidspunkt |
appointment.cancelled |
En avtale ble avbestilt |
order.created |
En bestilling ble lagt inn (av en assistent, manuelt eller via API-et) |
order.updated |
En bestilling flyttet til en ny status |
order.cancelled |
En bestilling ble kansellert |
reservation.created |
Et rom ble reservert (av en assistent, manuelt eller via API-et) |
reservation.updated |
En reservasjon flyttet til en ny status (bekreftet, sjekket inn, sjekket ut, ikke møtt) |
reservation.cancelled |
En reservasjon ble avbestilt |
campaign.completed |
En utgående kampanje ble ferdig med å ringe listen sin |
test.ping |
Du klikket på Send test |
Slik ser en levering ut
Hver levering er en POST med en JSON-body og disse headerne:
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-objektet avhenger av hendelsen:
call.endedogmessage.taken: samtalefeltene over.call.startedogcall.transferred:call_id,direction,from,to,assistant_id,statusogstarted_at.appointment.*:appointment_id,title,status,starts_at,ends_at,timezone,customer(navn, telefon, e-post),contact_id,service,staff,call_idognotes.order.*:order_id,number,status,fulfillment,customer,address,itemsmed alternativer og priser,currency,subtotal,fee,total,source,call_idog, for kanselleringer,cancel_reason.reservation.*:reservation_id,number,status,room,check_in,check_out,nights,adults,children,guest,currency,nightly,totalogsource.campaign.completed:campaign_id,nameog kampanjens fremdriftstall.
Merk: Når assistenten bestiller en avtale under en samtale, kan du motta
appointment.bookedto ganger. Den ene sendes idet bestillingen gjøres, med avtalefeltene. Den andre sendes etter at samtalen er oppsummert, med samtalefeltene. Sjekk omdataharappointment_idellercall_id, og brukid-feltet for å unngå å behandle en levering to ganger.
Bekreft signaturen
Signaturen er en HMAC-SHA256 av tidsstempelet, et punktum, og den rå forespørselsbodyen, nøklet med endepunktets signeringshemmelighet. Den sendes som v1= etterfulgt av hex-sammendraget.
- Les den rå bodyen nøyaktig slik den ble mottatt, før noen JSON-parsing.
- Bygg strengen
{X-Ringhum-Timestamp}.{raw body}. - Regn ut HMAC-SHA256 med hemmeligheten din og sett
v1=foran. - Sammenlign den med
X-Ringhum-Signatureved hjelp av en konstant-tid-sammenligning. - Avvis forespørselen hvis tidsstempelet er mer enn fem minutter gammelt, for å blokkere gjenspilte forespørsler.
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;
}
Svar, tidsavbrudd og nye forsøk
- Svar med en hvilken som helst
2xx-status for å bekrefte leveransen. Gjør tregt arbeid etter at du har svart. - Ringhum venter opptil 10 sekunder på svaret ditt.
- Hvis endepunktet ditt ikke svarer med en
2xx, prøves leveransen opptil 3 ganger totalt: med en gang, igjen etter omtrent 10 sekunder, og en siste gang omtrent 60 sekunder senere. Etter det forkastes den. - Leveranser kan komme i feil rekkefølge. Bruk
created_atog ID-ene idatafor å sette dem i riktig rekkefølge.
Tabellen Webhooks viser hvert endepunkts siste HTTP-status og når den ble sendt. Et endepunkt som feiler, forblir aktivt; Ringhum slår det ikke av for deg.
Test, pause og fjern
- Send test sender en
test.ping-hendelse med en gang, og en melding viser HTTP-statusen endepunktet ditt returnerte. - Bryteren Aktiv pauser et endepunkt. Hendelser som skjer mens den er av, sendes ikke senere.
- Fjern sletter endepunktet og hemmeligheten dets.
Vanlige spørsmål
Hva er forskjellen fra Zapier-, Make- og n8n-appene under Integrasjoner?
Disse tilkoblingene bruker Integrasjoner-siden og dens seks hendelsestyper. Bodyen deres er {"event", "workspace", "sent_at", "data"}, og når du setter en hemmelighet, er signaturheaderen X-Ringhum-Signature: sha256=…, en HMAC-SHA256 av bare bodyen. Utviklerwebhooker, beskrevet her, dekker flere hendelser og bruker v1=-signaturen med et tidsstempel. Se Velge hva som sendes.
Endepunktet mitt returnerer 2xx, men koden min ser ingenting. Sjekk at hendelsen er avkrysset for det endepunktet, at endepunktet er aktivt, og at brannmuren din tillater forespørsler fra internett.
Hvorfor feiler signatursjekken? Oftest ble bodyen parset og re-kodet før hashing. Hash de rå bytene nøyaktig slik de ble mottatt.
Relaterte artikler
API-nøkler og tilganger
Opprett og tilbakekall API-nøkler på Utviklere-siden, velg lese- eller skrivetilgang, og lær det grunnleggende om Ringhums REST-API – base-URL, autentisering, paginering, feil og hastighetsgrenser.
Koble Ringhum til Claude og andre AI-verktøy (MCP)
Legg til Ringhum som en connector i Claude, ChatGPT, Cursor, VS Code og andre AI-apper som støtter Model Context Protocol, velg skrivebeskyttet eller les-og-endre-tilgang, og koble fra en app.
Velge hva som sendes
Velg hvilke samtaler, innbokselementer, avtaler og bestillinger hver tilkoblede app mottar, og begrens samtaleoppdateringer til samtalene som krever at noen handler.
Koble til en app
Hvordan du kobler Slack, CRM-et ditt, kundeservicesystemet, oppgaveverktøyet, regnearket, butikken eller kalenderen til Ringhum, hvilken type tilkobling hver app bruker, og hvordan du sjekker at det fungerer.
Fortsatt fast?
Send en e-post til [email protected] eller send oss en melding. Planene Team og Scale får prioritert support.