MikoPBX
Модули
MikoPBX
Модули
Это старая версия документа!
В нашем примере шлюз GoIP4 будет регистрироваться на АТС MikoPBX. Для этого на АТС создадим учетную запись провайдера:
[SIP-1659624077-incoming-custom] exten => _[0-9*#+a-zA-Z][0-9*#+a-zA-Z]!,1,NoOp(------) same => n,Set(tmpRpid=${PJSIP_HEADER(read,Remote-Party-ID)}) same => n,ExecIf($["x${tmpRpid}" != "x"]?Set(fromCid=${CUT(CUT(tmpRpid,@,1),:,2)})) same => n,ExecIf($["${fromCid}x" != "x"]?Set(CALLERID(num)=${fromCid})) same => n,ExecIf($["${fromCid}x" != "x"]?Set(CALLERID(name)=${fromCid})) same => n,return
Перейдем в web интерфейс шлюза GoIP.
1) На вкладке Configurations - Preferences установим подходящий часовой пояс, отключить использование IVR:
2) Перейдем на вкладку Basic VoIP, укажем настройки подключения к АТС:
Далее в настройке Routing Prefix необходимо настроить префиксы номеров для выбора линии при исходящем вызове. Для Line1 укажем префикс 1, для Line2 укажем префикс 2 и т.д. Позже мы добавим маршруты исходящих звонков для каждой SIM карты, перед набором к номеру будет добавляться необходимый префикс.
3) Перейдем на вкладку Call Out. Перед совершением исходящего звонка необходимо обработать номер телефона и удалить префикс, с которым пришел номер от АТС. Для первого канала CH1 в поле Dial Plan укажем правило «1:-1» (если номер начинается на 1, то первая цифра будет удалена, и вызов уйдет через первый канал). Переключимся на CH2, в поле Dial Plan укажем правило «2:-2» (если номер начинается на 2, то первая цифра будет удалена, и вызов уйдет через второй канал). И так далее.
4) Настроим переадресацию входящих звонков на SIP линию. Перейдем на страницу Call In. Для каждого GSM канала в поле Forwarding to VoIP Number укажем номер телефона, с которым звонок будет направлен на MikoPBX. В нашем случае для CH1 мы указали мобильный номер, который соответствует этой sim. Аналогичным образом для CH2, CH3, CH4 нужно указать номера соответствующих sim карт.
5) В разделе «Misc»
« CID Forward Mode» выставляем значение «Use Remoe Party ID»
Настройка шлюза завершена, перейдем на страницу Status - Summary. В колонке VoIP отображается статус подключения шлюза к АТС MikoPBX, Y - шлюз успешно зарегистрировался на АТС(по 4 линии статус N, т.к. на ней не установлена sim):
1) Вернемся к настройкам АТС MikoPBX, перейдем на страницу Маршрутизация - Входящие маршруты. Добавим новое правило входящих звонков с первого канала GSM шлюза:
Аналогично нужно описать правила для входящих с остальных GSM каналов.
2) Настроим исходящую маршрутизацию через каждую sim карту. Перейдем на страницу Маршрутизация - Исходящие маршруты. Добавим новое правило для звонков через первую sim:
Звонки на номера соответствующие шаблону 8911XXXXXXX или 7911XXXXXXX, будем отправлять через провайдера GoIP4, перед набором к номеру будем добавлять префикс 1+.
Добавим новое правило для звонков через вторую sim:
Звонки на номера с шаблоном 8926XXXXXXX или 7926XXXXXXX, будем отправлять через провайдера GoIP4, перед набором к номеру будем добавлять префикс 2+.
Аналогичным образом можно настроить правила для звонков через другие sim.
Правила настройки исходящих маршрутов подробно описаны на wiki.
На этом настройка подключения шлюза к MikoPBX завершена. Можно тестировать входящие и исходящие звонки через GSM шлюз.
Для начала через чат Telegram следует написать боту @BotFather. Этот бот позволит создать и настроить вашего нового бота для интеграции с MIKOPBX.
/start
/newbot
MIKOPBX_NEW_BOT
<?php require_once 'Globals.php'; use \GuzzleHttp\Client; const API_KEY = ''; const CHAT_ID = ''; $agi = new MikoPBX\Core\Asterisk\AGI(); $message = str_replace( ['n'], ["\n"], $argv[1]??"");; $did = $agi->request['agi_extension']; $agi->verbose($message, 3); $TEXT = " SMS на номер: $did От: $message "; $apiURL = 'https://api.telegram.org/bot' . API_KEY . '/'; $client = new Client([ 'base_uri' => $apiURL, 'timeout' => 1, 'http_errors' => false, ]); try { $client->post( 'sendMessage', ['query' => ['chat_id' => CHAT_ID, 'text' => $TEXT]] ); }catch (Throwable $e){ }
«CHAT_ID» - идентификатор телеграм чата (группы). см. статью
/etc/asterisk/extensions.conf
[messages-from-goip] exten => _X.,1,AGI(DIALPLAN-APP-A4A4D30C.php, "${MESSAGE(body)}") same => n,hangup()
Для провайдера MikoPBX «Тип учетной записи» - Аутентификация по IP, без пароля
«Расширенные настройки» для провайдера MikoPBX - нужно прописать:
[endpoint] message_context = messages-from-goip