WIADOMOŚCI

Trasowanie połączeń głosowych: więcej niż samo kodowanie!

Published on:27 / September / 2016

Firmowa platforma Infobip przetwarza ponad 200 mln transakcji dziennie dla przeszło 200 tys. użytkowników biznesowych – programistów, firm internetowych, banków itp. – na świecie. Duża liczba tych firmy korzysta z naszej platformy do trasowania połączeń głosowych.

Stworzenie możliwości samodzielnego trasowania połączeń było sporym wyzwaniem. Wymagało ścisłej współpracy zespołów programistów oraz kilku tygodni badań i rozwoju. Co ciekawe – wyzwanie nie sprowadzało się do samego kodowania.

Nasz zespół zajmujący się obsługą połączeń głosowych musiał skonfigurować kontrolera granicznego sesji (SBC*) pod kątem analizowania przychodzących połączeń głosowych za pomocą serwera na bazie ENUM* opracowanego przez zespół monitoringu SMS, zgłaszającego żądania trasowania do IPCore w celu wyboru bramki.

Wymagało to bardzo niewielkiej ilości kodowania i sprowadzało się głównie do połączenia istniejących komponentów w układankę, którą postaram się tutaj opisać.

Po otrzymaniu połączenia przychodzącego kontroler graniczny sesji musi przełożyć wybrany numer na adres IP, do którego połączenie zostanie przetrasowane. Skonfigurowano to poprzez sprawdzenie statycznej konfiguracji, która przypisuje prefiks każdego numeru do konkretnego adresu IP.

Utrzymanie takiej skomplikowanej konfiguracji było trudne, bo nie integrowała się ona dobrze z resztą ekosystemu Infobip, w którym mapowanie obsługiwane jest zwykle przez nasze wewnętrzne narzędzie zarządzania kontami.

Na szczęście kontrolera granicznego sesji można skonfigurować tak, aby składał żądania ENUM, które są w gruncie rzeczy sprawdzeniem DNS, przekładającym wybrany numer na adres IP. Nie analizowaliśmy całego RFC3761, po prostu przechwyciliśmy pakiety UDP przy użyciu Wireshank i odtworzyliśmy kod źródłowy.

Wraz z wybranymi numerami SBC przesyła również adres IP klienta, który proxy SBC ENUM następnie wykorzystuje do przełożenia na SmsChannelId poprzez wywołanie usługi API SBC.

Po wybraniu numeru (adresu docelowego) i ID klienta (SmsChannelId) możemy zażądać, aby IPCore wybrał bramkę. W tym celu wystarczy przesłać wiadomość do wybranego numeru w imieniu klienta, co pozwala naszemu zespołowi IPCore zastosować standardowe reguły trasowania do wyboru bramki.

Każda bramka jest skonfigurowana, aby przesłać żądanie HTTP z powrotem do usługi proxy SBC ENUM. Żądanie HTTP zawiera adres IP bramki, który jest wynikiem początkowego zapytania ENUM, i zostaje zwrócone do SBC.

Nie tylko ujawniliśmy SBC istniejący mechanizm trasowania, wykorzystując standardowe narzędzia Infobip do zarządzania, lecz także zyskaliśmy kilka innych korzyści:

  • MOŻLIWOŚĆ ŚLEDZENIA - każde żądanie trasowania jest widoczne w części MessageLog, wraz z innymi działaniami, i jest oznaczone jako requestType 43. Umożliwia nam to analizowanie żądań trasowania, na przykład w formularzu testowania trasowania. Żądania z bramki są też widoczne w dziennikach komunikacji, co zapewnia większą przejrzystość. To z kolei przekłada się bezpośrednio na dużo lepszą niż wcześniej możliwość monitorowania procesów trasowania przez inne zespoły techniczne..
  • OBSŁUGA MNP  - możemy teraz właściwie obsługiwać przeniesione numery dzięki przeprowadzaniu sprawdzania numerów i lepiej wybierać bramki. Przyczynia się to do istotnej poprawy jakości obsługi naszych klientów, ponieważ pozwala nam uzyskać jeszcze lepsze współczynniki skuteczności przeprowadzanych połączeń. Umożliwia to również znaczącą optymalizację kosztów wszystkim firmom korzystającym z naszej platformy do trasowania połączeń głosowych.
  • ZAAWANSOWANE MOŻLIWOŚCI TRASOWANIA - statyczna konfiguracja SBC była ograniczona do reguł trasowania według prefiksu, natomiast teraz możemy wdrażać i realizować bardziej złożone reguły trasowania. Możemy równoważyć bramki, zapewniać trasy dostosowane do potrzeb klientów, tworzenie czarnych list oraz wiele innych funkcji umożliwiających oferowanie klientom profesjonalnej obsługi połączeń głosowych na wymaganym poziomie.

Autor: Milan Mimica, inżynier oprogramowania w Infobip