Abrechnungssysteme und Debugging-Tools brauchen dieselben Daten in unterschiedlichen Zeitrahmen. Die meisten Plattformen liefern ihnen getrennte Kopien. Auf Bird dient ein Datensatz beiden Zwecken und ist lesbar, sobald der Anruf endet. Das ändert zwei Dinge beim Abgleich: was als Leg zählt und wann die Kosten erscheinen.
Was steht in einem Datensatz?
Ein Datensatz enthält drei Feldgruppen, die drei verschiedene Fragen beantworten.
Was passiert ist. status ist das Ergebnis: answered, no answer, rejected, failed oder unknown. Daneben ist die SIP-Antwort der abschließende SIP-Code. Wenn Bird den Anruf abgelehnt hat statt ein Carrier, benennt ein Ablehnungsgrund die Prüfung, an der er gescheitert ist. Diese drei zusammen gelesen ergeben die Diagnose, und was SIP-Antwortcodes bedeuten beschreibt, wie sie zusammenwirken.
Wann es passiert ist. Started ist der Zeitpunkt, zu dem Bird den Anruf empfangen hat. Answered ist der Zeitpunkt der Annahme oder die Tatsache, dass keine erfolgte. Ended ist der Zeitpunkt des Abbaus. Bei einem eingehenden Anruf erfasst Inbound route, was für die gewählte Nummer konfiguriert war, und Trunk benennt den Trunk, über den der Anruf eingegangen ist oder zugestellt wurde.
Was es gekostet hat. Abrechenbare Zeit, Gesamtdauer und Kosten des Anrufs.
Zwei Bezeichner stehen daneben, und sie sind nicht austauschbar. Die Call-ID (vcl_…) ist der eigene Bezeichner des Datensatzes. Geben Sie sie beim Support an und korrelieren Sie sie in Ihren eigenen Logs. Die Session-ID (vcs_…) wird von jedem Leg eines Anrufs geteilt.
Warum erscheint ein Anruf als zwei Datensätze?
Weil ein Datensatz einen Leg beschreibt und nicht einen Anruf, und manche Anrufe mehr als einen haben.
Ein weitergeleiteter Anruf ist ein Beispiel: Der eingehende Leg und der ausgehende Leg sind separate Datensätze mit derselben Session-ID. Wenn Sie Datensätze als Anrufe zählen, zählen Sie genau die weitergeleiteten Anrufe doppelt. Und wenn Sie Dauern über Datensätze summieren, zählen Sie die überlappende Zeit doppelt.
Die Session-ID ist die Lösung. Gruppieren Sie danach, wenn Sie Anrufe wollen, und lesen Sie die Datensätze einzeln, wenn Sie Legs wollen. Was Sie brauchen, hängt von der Frage ab: Ein Zustellproblem ist eine Leg-Frage, und eine Frage zu Kundenerlebnis oder Volumen ist in der Regel eine Session-Frage.
Warum stimmen meine Kosten nicht mit der Dauer überein?
Die abrechenbare Zeit schließt das Klingeln aus. Die Kosten werden nach dem Ende des Anrufs geschrieben, nicht gleichzeitig.
Abrechenbare Zeit ist nicht Gesamtdauer. Die abrechenbare Zeit läuft von der Annahme bis zum Auflegen. Die Gesamtdauer schließt die Klingelzeit ein, bevor jemand abgenommen hat. Ein Datensatz enthält beides. Ein Abgleich, der stillschweigend den falschen Wert verwendet, weicht bei jedem angenommenen Anruf um die Klingeldauer ab und bei jedem nicht angenommenen Anruf um die gesamte Dauer.
Die Kosten erscheinen nach dem Anruf. Ein Datensatz enthält seine Kosten erst nach der Tarifierung, und das ist nicht der Moment, in dem der Anruf endet. Ein sofort abgerufener Datensatz kann in jeder anderen Hinsicht vollständig sein und trotzdem keinen Preis enthalten. Wenn Sie Ausgaben in Echtzeit berechnen, lesen Sie die Kosten, wenn sie vorhanden sind, und interpretieren Sie ihr Fehlen nie als null. Das ist keine Formalität: fehlende Kosten und Kosten von null sind hier verschiedene Sachverhalte, und Gleichbehandlung unterschätzt die Ausgaben.
Warten ist aber nicht immer die Antwort. Ein nicht angenommener Anruf hat keine Kosten und wird sie nie haben. Ein angenommener Anruf, der weiterhin ohne Kosten bleibt, wartet ebenfalls nicht auf Tarifierung. Der Datensatz verrät nicht, welchen der beiden Fälle Sie vor sich haben. Wenden Sie sich mit der Call-ID an den Support, statt weiter abzufragen.
Welche Anrufe erscheinen nie?
Ein Anruf, den Bird ablehnt, bevor es ihn zulässt, hinterlässt keinen Datensatz. Das Log ist also keine vollständige Aufstellung dessen, was Ihr Konto erreicht hat.
Ein Anruf, den Bird gar nicht zulassen kann, wird abgewiesen, bevor ein Datensatz existiert, und erreicht daher nie das Log. Die IP-Allow-List des Trunks ist eine solche Ablehnung. Ein Anruf von einer Adresse, die nicht darauf steht, wird auf der SIP-Schicht abgelehnt und erzeugt in der Regel keinen Datensatz. Ein Angreifer, der Ihren Trunk abklopft, kann also erheblichen Traffic erzeugen, der an der Stelle, an der Sie natürlicherweise nachsehen würden, keine Spur hinterlässt. Eine falsch konfigurierte PBX, die Telefonanlage, die die Anrufe eines Unternehmens vermittelt, bewirkt dasselbe von einer neuen Adresse aus.
Die praktische Konsequenz: "there is nothing in the call log" beantwortet eine engere Frage, als es den Anschein hat. Es bedeutet, dass kein Anruf zugelassen wurde, nicht dass kein Versuch stattgefunden hat. Wenn ein Telefonsystem meldet, dass seine Anrufe fehlschlagen und das Log leer ist, prüfen Sie zuerst die Allow-List und nicht zuletzt. Voice-Fehlerbehebung deckt den Rest dieses Wegs ab.
Wie bekomme ich die Datensätze heraus?
Für einen einzelnen Anruf öffnen Sie ihn im Anrufprotokoll und lesen die oben genannten Felder. Das Log filtert und durchsucht die Liste und zeigt laufende Anrufe getrennt von abgeschlossenen an.
Für viele Anrufe gibt die Voice-API Anrufe als Datensätze zurück, die Sie durchblättern können. Die Voice-Statistik-Endpunkte aggregieren sie nach Tag, Stunde, Land und Antwortcode. Eine Frage zu einem Muster beantworten Sie aus der Statistik, nicht durch Durchblättern der Datensätze.
Das Anrufprotokoll dokumentiert jedes Feld, das ein Datensatz enthält, und wie die Liste gefiltert wird.
Kurz gesagt
Ein Anruf kann mehrere Datensätze erzeugen.
Jeder Leg erhält einen eigenen Datensatz, und eine gemeinsame Session-ID gruppiert sie. Ein weitergeleiteter Anruf ist zwei Datensätze, nicht einer.
Die abrechenbare Zeit läuft von Annahme bis Auflegen.
Sie ist nicht die Gesamtdauer, die auch das Klingeln einschließt. Beide werden erfasst – gleichen Sie gegen die richtige ab.
Die Kosten fehlen anfangs und manchmal dauerhaft.
Ein Datensatz enthält seine Kosten erst nach der Tarifierung. Wenn ein angenommener Anruf weiterhin ohne Kosten bleibt, wartet er nicht auf Tarifierung – wenden Sie sich mit der Call-ID an den Support.
Manche Anrufe erzeugen gar keinen Datensatz.
Ein Anruf, der abgelehnt wird, bevor Bird ihn zulässt, hinterlässt nichts im Log. Das Log ist also keine vollständige Aufstellung dessen, was Ihr Konto erreicht hat.