Неоднократно приходись делать объединение офисной АТС на базе Asterisk с call-центром Oktell или просто интегрировать два номерных плана удаленных офисов на Oktell IP PBX и Asterisk. В общем, нет ничего сложного, посмотрим как это все работает на простом примере.
У нас есть 2 офиса: в одном прекрасно работает Oktell IP PBX (номерной план 1хх и 2хх), а в другом со своей задачей отлично справляется Asterisk (номерной план 3хх и 4хх). У каждой из АТС имеются свои городские номера, только еще на Asterisk установлен GSM-шлюз. Каждая из АТС имеет белый внешний адрес (или VPN между офисами). Задача сделать прозрачное объединение двух номерных планов, что бы сотрудник не задумываясь набирал номер, а так же дать возможность сотрудникам за Oktell звонить через GSM-шлюз. Рассмотрим как это решается.
На стороне Asterisk (адрес в сети 10.0.0.1).
Будем использовать подключение к Oktell без регистрации, для этого создаем peer в sip.conf
[oktell] type=friend host=10.0.0.2 dtmfmode=rfc2833 disallow=all allow=ulaw allow=alaw allow=gsm context=oktell-in qualify=no regseconds=0 rtpkeepalive=0
Все входящие звонки будут обрабатываться в dialplan контекстом oktell-in, задача которого просто позвонить на набранный внутренний номер. Другое дело исходящие на сотрудников за Oktell (номерной план 1хх и 2хх), для них мы в dialplan прописываем:
exten => _1XX,1,Dial(SIP/${EXTEN}@oktell) exten => _2XX,1,Dial(SIP/${EXTEN}@oktell)
На стороне Oktell (адрес в сети 10.0.0.2).
На карте сети просто создаем внешний шлюз без регистрации на 10.0.0.1
Остальное — это настройка сценариев на свой вкус 🙂
Главный сценарий: если приходит звонок с нашего шлюза — маршрутизируем на внутренние номера
Маршрутизация внутренних звонков: если набрали (3 или 4)хх, а так же любой сотовый номер — отправляем на Asterisk.
Думаю, что мой небольшой пост должен помочь в решение этой задачи.
После непродолжительной потери связи перестали проходить звонки из октелла в астериск, причем из астериска звонки идут. Есть какой либо механизм у октелла возобновить транк?
Спасибо.
А транк с регистрацией?
Подскажите пожалуйста как это реализовать?
(Главный сценарий: если приходит звонок с нашего шлюза – маршрутизируем на внутренние номера)
плохо шарю в сценариях. Буду благодарен подробного описания.
Уважаемый Виталий.
Соединил астериск с октелом согласно Вашей статьи. Все работает, однако когда из номер октела звонят номерам астериск номер определяется как 100. Это нормально или связано с неправильной настройкой.
Прошу помочь с данной задачой.
На внешнем шлюзе без регистрации установлен CallerID 100, скорее всего он и уходит на asterisk. Вам нужно в самой компоненте сценария oktell передавать callerId абонента, тогда он и уйдет на asterisk.
Виталий не подскажете где имеено настраивается данная настройка? в каких параметрах?
и еще один вопросик:
В Вашей статье при создании внешного шлюза указан этот caller id, без него нельзя как то?
На вики написано:
CallerId — Подставляемый для звонка номер. При отсутствии или некорректном значении будет взят номер по умолчанию для канала.
Вам нужно выбрать служебную переменную CallerId в этом поле
Добрый день!
Исходящие с Asterisk работают хорошо.
А вот проблема с входящими из Oktell на Asterisk.
CLI> NOTICE[56450][C-0000001d]: chan_sip.c:26273 handle_request_invite: Call from ‘oktell’ (192.168.0.0:5060) to extension ‘623’ rejected because extension not found in context ‘oktell-in’.
Не находит сценарий в extensions.conf, на сколько я понимаю.
Но в extensions.conf прописано:
exten => oktell,n,Dial(SIP/623)
Что-то комментарий не остается(
Писал так долго
Замените на
exten => 623,n,Dial(SIP/623)