telkit

Hendelser

Hendelsesloggen og strømmen

Alle hendelsene til bedriften ligger i en logg, i den rekkefølgen de skjedde. Du kan lese loggen når det passer deg, eller holde en forbindelse åpen og få hendelsene med en gang. Begge virker med vanlig HTTP, så curl, Python og Go kan lese dem uten et eget bibliotek.

Webhook, strøm eller logg?

  • Webhooks passer når du har en offentlig adresse og vil at vi skal komme til deg.
  • Strømmen passer når du ikke kan ta imot innkommende kall, for eksempel bak en brannmur, eller vil ha hendelsene uten at vi må nå deg.
  • Loggen passer for å ta igjen det du gikk glipp av, og for jobber som kjører av og til.

En hendelse har den samme id-en (evt_…) i alle tre. Du kan bruke flere samtidig og fjerne duplikater med id-en.

Hendelsesloggen

Hver hendelse har en position. Posisjonene øker i den rekkefølgen hendelsene ble lagret, uten hull. Filtrerer du på type eller profil, hopper svaret over posisjonene du ikke ba om. Lagre den siste posisjonen du har behandlet, og spør etter alt etter den:

Les hendelsene etter posisjon 1200
  • Svaret har events (eldste først), next, head og floor. Er next ikke null, er det mer: send den som after.
  • Uten after starter du ved den eldste hendelsen loggen har. limit: 0 gir bare head, nyttig når du vil starte fra nå.
  • Loggen tar vare på hendelser i 30 dager.
Les bare avsluttede samtaler

Én hendelse etter id:

Hent én hendelse

Når posisjonen din er for gammel

Er after lavere enn floor, er noen av hendelsene etter den slettet. Da svarer vi 409 med koden resume_too_old i stedet for å gi deg en liste med et hull du ikke ser. Les fra floor, eller uten after, og sjekk tilstanden mot dine egne data.

Hendelsesstrømmen

GET /v1/event-stream holder forbindelsen åpen og sender hendelsene som server-sent events så snart de er lagret. Nøkkelen trenger tilgangen events:read.

Følg hendelsene direkte
ParameterBetyr
typesBare disse hendelsene. Gjenta parameteren, eller skill med komma.
profileBare denne profilens hendelser (UUID).
afterStart etter denne posisjonen.
Last-Event-IDHeader: start etter denne posisjonen. Går foran after.

Uten after og Last-Event-ID får du bare hendelser som kommer etter at du koblet til. Hver hendelse er tre linjer: id er posisjonen, event er navnet, og data er hendelsen slik GET /v1/events gir den.

Fra strømmen
id: 1201event: call.endeddata: {"id":"evt_0199e4aa8b6e7c5f97a4ce9f6bacbd54","position":1201,"type":"call.ended","version":1,"mode":"live","profileId":"0199e4a2-7c1b-7d3e-9a41-5f2c8b6d1e07","occurredAt":"2026-10-14T09:15:02.118Z","data":{…}} event: heartbeatdata: {} 
  • Er det stille, sender vi heartbeat hvert 15. sekund, så du vet at forbindelsen lever.
  • En strøm er åpen i inntil 60 minutter. Når vi starter serveren på nytt, stenger vi strømmene pent. Koble til igjen med Last-Event-ID i begge tilfeller.
  • Nøkkelen, tilgangen og profilen blir sjekket på nytt hvert 30. sekund. En nøkkel som er trukket tilbake, stenger strømmen.
  • En nøkkel får bare hendelser i sin egen modus, test eller live.

Fortsett der du slapp

  1. Lagre posisjonen (id) for hver hendelse du har behandlet.
  2. Når forbindelsen stenger, koble til igjen med den som Last-Event-ID.
  3. Får du hendelsen error med resume_too_old, er posisjonen din eldre enn loggen. Strømmen stenger. Les fra floor med GET /v1/events, sjekk mot dine egne data, og åpne strømmen igjen fra der du kom.
Fortsett etter posisjon 1200
Når posisjonen er for gammel
event: errordata: {"code":"resume_too_old","floor":950,"head":4210} 

Når strømmen ikke åpner

SvarBetyr
400 event_stream_query_invalidEn parameter har feil form.
401 unauthenticatedNøkkelen mangler eller er ugyldig.
403Nøkkelen har ikke lov til å lese strømmen. Koden i svaret sier hvorfor.
429 event_streams_per_key_reachedNøkkelen har allerede 5 åpne strømmer.
503Prøv igjen om litt.

Kom i gang med telkit

Registrer bedriften med organisasjonsnummeret.