Шёл февраль 2018-го года. Холодно и промозгло. С обдуваемой со всех сторон ветрами Астаны к нам обратился клиент с просьбой решить их проблемы с настройкой sip-транка от Tele2 на их сервере Asterisk.
Но транк тот был да непростой. Для обычного SIP-транка большинства правайдеров IP-телефонии, в настройках транка достаточно прописать строчку регистрации вида login:password@ip_sip_server:port/DID_number, или, в настройках PEER указать callbackextensions=DID_number. В нашем случае этот вариант тоже бы подошел, если бы не одно НО. В этот SIP-транк со стороны Теле2 будет настроено несколько номеров GSM, а клиенту необходимо различать, на какой GSM номер поступил звонок.
Если в строке регистрации не указывать DID_number, то, при входящем звонке в консоли Asterisk можно увидеть строчку вида DID=s, что говорит о том, что звонок поступил в направление по умолчанию. Естественно, что маршрутизировать такой звонок будет невозможно. Попытка потиранить службу поддержки компании Теле2 результата не дала, точнее, дала пищу для размышлений. Очень умные сотрудники технической службы поведали нам, что информация о том на какой номер нам звонят, доступна в сообщении INVITE. Это сообщение приходит на нашу АТС в таком виде:
From: <sip:7CID@pbx.tele2.kz>;
To: «7DID»<sip:login@pbx.tele2.kz>
где CID — это номер звонящего нам абонента, а DID — номер, на который нам звонят.
В итоге, путем терзания поисковой системы Yandex и некоторого расхода таинственного вещества, находящегося в черепных коробках, мы нашли решение и испытали его на АТС клиента. По умолчанию, все звонки с внешних линий приходят в контекст from-trunk. SIP-транк от Теле2 мы перенаправили в контекст, к примеру, from-tele2. Далее, в конфигурационных файлах Asterisk, создали этот контекст, и написали некоторое количество кода, извлекающего номер, на который звонят, из поля To заголовка SIP сообщения и присваивающего его временной переменной. Далее, входящий звонок направляется в контекст from-trunk с переменной, содержащей правильный и корректный DID.
В результате этих манипуляций, в контекст from-trunk звонок поступает уже с DID и его можно маршрутизировать обычными средствами FreePBX.
В который раз убеждаемся, что Asterisk вкупе с FreePBX — это достаточно гибкая система, позволяющая реализовывать самые смелые фантазии заказчика, и не ограниченная стандартным функционалом интерфейса FreePBX. И даже кривость провайдеров не мешает истинным профессионалам заканчивать начатое.
Ну а чтобы не танцевать с бубном вокруг решения подобных задач, не стоит терять время, нужно лишь зайти к нам на сайт https://market-telecom.kz/asterisk и набрать один из наших телефонных номеров или оставить онлайн-заявку, и все ваши проблемы станут нашей заботой.