Facturatiesystemen en debugtools willen dezelfde gegevens op verschillende momenten. De meeste platforms geven ze aparte kopieën. Op Bird bedient één record beide, en het is leesbaar zodra het gesprek eindigt. Dat verandert twee dingen bij het afstemmen: wat telt als een leg, en wanneer de kosten verschijnen.
Wat staat er in een record?
Een record bevat drie groepen velden die drie verschillende vragen beantwoorden.
Wat er gebeurde. De status is de uitkomst, een van answered, no answer, rejected, failed of unknown. Daarnaast is de SIP-respons de uiteindelijke SIP-code. Als Bird het gesprek weigerde in plaats van een carrier, noemt een rejection reason de controle waarop het faalde. Die drie samen vormen de diagnose, en wat SIP-responscodes betekenen beschrijft hoe ze samenhangen.
Wanneer het gebeurde. Started is het moment waarop Bird het gesprek ontving. Answered is het moment waarop het werd opgenomen, of het feit dat dat niet gebeurde. Ended is het moment waarop het werd afgebroken. Bij een inkomend gesprek registreert Inbound route waarvoor het gebelde nummer was ingesteld, en Trunk noemt de trunk waarover het gesprek binnenkwam of werd afgeleverd.
Wat het kostte. Factureerbare tijd, totale duur en de kosten van het gesprek.
Twee identificatoren staan ernaast, en ze zijn niet uitwisselbaar. Het call-ID (vcl_…) is de eigen identifier van het record. Vermeld het bij support en correleer er in je eigen logs tegen. Het session-ID (vcs_…) wordt gedeeld door elke leg van één gesprek.
Waarom verschijnt één gesprek als twee records?
Omdat een record een leg beschrijft in plaats van een gesprek, en sommige gesprekken meer dan één leg hebben.
Een doorgeschakeld gesprek is daar een voorbeeld van: de inkomende leg en de uitgaande leg zijn aparte records die één session-ID delen. Als je records telt als gesprekken, tel je precies de doorgeschakelde gesprekken dubbel. En als je duren optelt over records heen, tel je de tijd dat ze overlapten dubbel.
Het session-ID is de oplossing. Groepeer erop als je gesprekken wilt, en lees de records afzonderlijk als je legs wilt. Wat je nodig hebt hangt af van de vraag: een afleverprobleem is een leg-vraag, en een klantervaring- of volumevraag is meestal een sessievraag.
Waarom komen mijn kosten niet overeen met de duur?
Factureerbare tijd sluit het overgaan uit. De kosten worden na het gesprek geschreven, niet tegelijk.
Factureerbare tijd is niet de totale duur. Factureerbare tijd loopt van opnemen tot ophangen. Totale duur omvat ook de tijd dat het gesprek overging voordat iemand opnam. Een record bevat beide. Een afstemming die stilletjes de verkeerde gebruikt, wijkt af met de lengte van het overgaan bij elk beantwoord gesprek, en met de volledige duur bij elk onbeantwoord gesprek.
De kosten komen pas na het gesprek. Een record bevat de kosten zodra het gesprek is getarifeerd, en dat is niet het moment waarop het gesprek eindigt. Een record dat je direct ophaalt kan in alle andere opzichten compleet zijn en toch geen prijs bevatten. Als je uitgaven in bijna-realtime berekent, lees de kosten wanneer ze er zijn en interpreteer hun afwezigheid nooit als nul. Dat is geen detail: een ontbrekend bedrag en een bedrag van nul zijn hier verschillende feiten, en ze gelijk behandelen onderschat je uitgaven.
Wachten is echter niet altijd het antwoord. Een onbeantwoord gesprek heeft geen kosten en zal die nooit krijgen. Een beantwoord gesprek dat zonder kosten blijft, wacht ook niet op tarifering. Het record zegt niet welk van de twee je bekijkt. Neem contact op met support met het call-ID in plaats van te blijven pollen.
Welke gesprekken verschijnen nooit?
Een gesprek dat Bird weigert voordat het wordt toegelaten, laat geen record achter. Het logboek is dus geen volledig overzicht van wat je account bereikte.
Een gesprek dat Bird helemaal niet kan toelaten, wordt afgewezen voordat er een record bestaat, en bereikt dus nooit het logboek. De IP-allowlist van de trunk is zo'n weigering. Een gesprek van een adres dat er niet op staat wordt geweigerd op de SIP-laag en levert meestal geen record op. Een aanvaller die je trunk aftast kan dus veel verkeer genereren dat geen spoor achterlaat op de plek waar je van nature zou zoeken. Een verkeerd geconfigureerde PBX, het bedrijfstelefoonsysteem dat de gesprekken van een organisatie routeert, doet hetzelfde vanaf een nieuw adres.
Het praktische gevolg is dat "there is nothing in the call log" een smallere vraag beantwoordt dan het lijkt. Het betekent dat er geen gesprek is toegelaten, niet dat er niets is geprobeerd. Als een telefoonsysteem meldt dat gesprekken falen en het logboek leeg is, controleer dan eerst de allowlist in plaats van als laatste. Voice-probleemoplossing behandelt de rest van dat pad.
Hoe haal ik de records op?
Voor één gesprek open je het in het gesprekslogboek en lees je de bovenstaande velden. Het logboek filtert en doorzoekt de lijst, en toont lopende gesprekken apart van afgeronde.
Voor grote aantallen retourneert de voice-API gesprekken als records waar je doorheen kunt bladeren. De voice-statistiekendpoints aggregeren ze per dag, uur, land en responscode. Een vraag over een patroon beantwoord je vanuit de statistieken, niet door de records te doorlopen.
Het gesprekslogboek documenteert elk veld dat een record bevat en hoe de lijst wordt gefilterd.
Kort gezegd
Eén gesprek kan meerdere records zijn.
Elke leg krijgt een eigen record, en een gedeeld session-id groepeert ze. Een doorgeschakeld gesprek is twee records, niet één.
Factureerbare tijd loopt van opnemen tot ophangen.
Het is niet de totale duur, die ook het overgaan omvat. Beide worden vastgelegd, dus controleer tegen de juiste.
De kosten staan er niet meteen in, en soms nooit.
Een record bevat de kosten zodra het gesprek is getarifeerd. Een beantwoord gesprek dat ze nog steeds mist, wacht niet op tarifering. Neem het call-ID mee naar support.
Sommige gesprekken leveren helemaal geen record op.
Een gesprek dat wordt geweigerd voordat Bird het toelaat, laat niets achter in het logboek. Het logboek is dus geen volledig overzicht van wat je account bereikte.