Systemy billingowe i narzędzia diagnostyczne potrzebują tych samych danych, ale w różnych terminach. Większość platform udostępnia im osobne kopie. Na Bird jeden rekord obsługuje oba cele i jest dostępny od razu po zakończeniu połączenia. To zmienia dwie rzeczy przy uzgadnianiu: co liczy się jako odcinek i kiedy pojawia się koszt.
Co zawiera rekord?
Rekord zawiera trzy grupy pól, odpowiadające na trzy różne pytania.
Co się stało. status to wynik: answered, no answer, rejected, failed lub unknown. Obok niego odpowiedź SIP to końcowy kod SIP. Jeśli połączenie odrzucił Bird, a nie operator, powód odrzucenia wskazuje, jaką kontrolę połączenie nie przeszło. Te trzy pola czytane razem stanowią diagnozę, a znaczenie kodów odpowiedzi SIP opisuje, jak się łączą.
Kiedy to się stało. Started to moment, w którym Bird odebrał połączenie. Answered to moment, w którym zostało odebrane, lub informacja, że nie zostało. Ended to moment rozłączenia. Przy połączeniu przychodzącym Inbound route rejestruje, co wybrany numer miał robić, a Trunk wskazuje trunk, przez który połączenie przyszło lub zostało dostarczone.
Ile kosztowało. Czas naliczany, całkowity czas trwania i koszt połączenia.
Obok tych pól znajdują się dwa identyfikatory, które nie są wymienne. Identyfikator połączenia (vcl_…) to własny identyfikator rekordu. Podawaj go do wsparcia i koreluj z nim w swoich logach. Identyfikator sesji (vcs_…) jest wspólny dla wszystkich odcinków jednego połączenia.
Dlaczego jedno połączenie pojawia się jako dwa rekordy?
Ponieważ rekord opisuje odcinek, a nie połączenie, a niektóre połączenia mają więcej niż jeden.
Przekierowane połączenie jest tego przykładem: odcinek przychodzący i odcinek wychodzący to osobne rekordy ze wspólnym identyfikatorem sesji. Jeśli liczysz rekordy jako połączenia, zawyżysz dokładnie te połączenia, które były przekierowane, a jeśli sumujesz czasy trwania między rekordami, policzysz podwójnie czas ich nakładania się.
Identyfikator sesji rozwiązuje ten problem. Grupuj po nim, gdy chcesz policzyć połączenia, a czytaj rekordy pojedynczo, gdy interesują Cię odcinki. Wybór zależy od pytania: problem z dostarczeniem to pytanie o odcinek, a pytanie o doświadczenie klienta lub wolumen to zwykle pytanie o sesję.
Dlaczego koszt nie zgadza się z czasem trwania?
Czas naliczany nie obejmuje dzwonienia. Koszt jest zapisywany po zakończeniu połączenia, a nie razem z nim.
Czas naliczany to nie całkowity czas trwania. Czas naliczany biegnie od odebrania do rozłączenia. Całkowity czas trwania obejmuje czas dzwonienia, zanim ktokolwiek odebrał. Rekord zawiera oba. Uzgadnianie, które po cichu używa niewłaściwego, odchyla się o długość dzwonienia przy każdym odebranym połączeniu i o cały czas trwania przy każdym połączeniu nieodebranym.
Koszt pojawia się po połączeniu. Rekord zawiera koszt dopiero po wycenie, co nie następuje w chwili zakończenia połączenia. Rekord pobrany natychmiast może być kompletny pod każdym innym względem i nie zawierać ceny. Jeśli obliczasz wydatki w czasie zbliżonym do rzeczywistego, odczytuj koszt, gdy jest dostępny, i nigdy nie traktuj jego braku jako zera. To nie kwestia konwencji: brak kosztu i koszt wynoszący zero to tu różne fakty, a zrównanie ich zaniża wydatki.
Czekanie nie zawsze jest jednak rozwiązaniem. Nieodebrane połączenie nie ma kosztu i nigdy go mieć nie będzie. Odebrane połączenie, które wciąż go nie ma, też nie czeka na wycenę. Rekord nie mówi, na który z tych dwóch przypadków patrzysz. Skontaktuj się ze wsparciem z identyfikatorem połączenia, zamiast dalej odpytywać rekord.
Które połączenia nigdy się nie pojawiają?
Połączenie, które Bird odrzuci, zanim je przyjmie, nie zostawia rekordu, więc log nie jest pełnym obrazem tego, co dotarło do Twojego konta.
Połączenie, którego Bird w ogóle nie może przyjąć, jest odrzucane, zanim rekord powstanie, więc nigdy nie trafia do logu. Lista dozwolonych adresów IP trunka to jeden z takich przypadków odrzucenia. Połączenie z adresu, którego nie ma na liście, jest odrzucane na warstwie SIP i zwykle nie generuje rekordu. Atakujący sondujący Twój trunk może więc wygenerować bardzo dużo ruchu, który nie zostawi śladu tam, gdzie naturalnie byś szukał. Źle skonfigurowana centrala PBX, czyli system telefoniczny firmy kierujący jej połączenia, robi to samo z nowego adresu.
Praktyczna konsekwencja jest taka, że "there is nothing in the call log" odpowiada na węższe pytanie, niż mogłoby się wydawać. Oznacza, że żadne połączenie nie zostało przyjęte, a nie że nic nie było próbowane. Gdy system telefoniczny zgłasza nieudane połączenia, a log jest pusty, sprawdź listę dozwolonych adresów w pierwszej kolejności. Diagnostyka głosowa opisuje dalsze kroki.
Jak pobrać rekordy?
Dla pojedynczego połączenia otwórz je w logu połączeń i odczytaj powyższe pola. Log filtruje i przeszukuje listę oraz wyświetla połączenia w toku oddzielnie od zakończonych.
Dla wielu połączeń głosowy API zwraca połączenia jako rekordy, po których możesz stronicować. Endpointy statystyk głosowych agregują je według dnia, godziny, kraju i kodu odpowiedzi. Na pytanie o wzorzec odpowiadają statystyki, a nie stronicowanie rekordów.
Log połączeń dokumentuje każde pole rekordu i sposób filtrowania listy.
W skrócie
Jedno połączenie może mieć kilka rekordów.
Każdy odcinek ma własny rekord, a łączy je wspólny identyfikator sesji. Przekierowane połączenie to dwa rekordy, nie jeden.
Czas naliczany to czas od odebrania do rozłączenia.
To nie całkowity czas trwania, który obejmuje dzwonienie. Oba są zapisywane, więc uzgadniaj dane z właściwym.
Koszt nie pojawia się od razu, a czasem wcale.
Rekord zawiera koszt dopiero po wycenie. Odebrane połączenie wciąż bez kosztu nie czeka na wycenę, więc przekaż identyfikator połączenia do wsparcia.
Niektóre połączenia w ogóle nie generują rekordu.
Połączenie odrzucone, zanim Bird je przyjmie, nie pozostawia niczego w logu, więc log nie jest pełnym obrazem tego, co dotarło do Twojego konta.