Asterisk 18 и FreePBX 16

Как отправить СМС в Telegram через GoIP шлюз
GoIP - шлюзы GSM для работы с Asterisk и SIP. Это простое устройство, которое позволяет выполнять звонки с IP-АТС на мобильные телефоны и в обратном порядке, трансформируя GSM сигнал. С помощью GoIP можно реализовать как входящий, так и исходящий траффик звонков между сетями GSM и VoIP.

Установить Asterisk и FreePBX можно по нашим инструкциям. На  Rocky Linux 9 и Debian 12
Для настройки будем использовать VDS/VPS сервер с выделенным IP адресом. На нем установлен Asterisk.
GoIP шлюз установлен в офисе или дома и имеет выход в интернет через NAT с динамическим ip адресом.
Настройка на стороне GoIP шлюза
Заходим на шлюз. Стандартные логин и пароль admin/admin. Сразу попадаем на стартовую страницу, где можно посмотреть статус установленных симкарт.
Обратите вниманием на третий столбец. Чтобы активировать новую установленную симку, необходимо нажать на "N"
GoIP шлюз Status Sammury
Status -
Summary
Раздел Status - General содержит общую информацию о прошивке, настройках сети, серийном номере и модели используемого GoIP шлюза.
Раздел Status - SIM, содержит более подробную информацию о самих сим-картах.

После того, как ознакомились с общей информацией о шлюзе, переходим к настройкам. Открываем раздел Configurations.
И сразу первый раздел - это Preferences. Тут выбираем язык интерфейса задаем часовой пояс и выключаем IVR и прочие дополнительные функции.
Часовой пояс, если нет настроек для Росси, можно выбрать - Чехословакия.
GoIP шлюз настройка Preferences
Configurations -
Preferences
У нас будет один транк с Asterisk для всех сим-карт. В следующем разделе Config Mode выбираем Single Server Mode. В этом режиме используется только одна SIP регистрация.
Также устанавливаем Routing Prefix для каждой сим-карты. Если этот параметр установлен, соответствующий канал (линия) используется только для набора телефонного номера с соответствующим префиксом маршрутизации.

  • Authentication ID: Это Username на Asterisk
  • Password: Соответствует полю Secret
  • Routing Prefix: добавочный номер для сим-карты ( линии)
  • SIP Proxy: IP сервера Asterisk
  • Sip Registrar Server: IP сервера Asterisk
  • Phone Number: Username на сервере Asterisk
  • Display Name: Username на сервере Asterisk
По окончании, не забываем сохранить настройки и нажать Save Changes
GoIP шлюз настройка Basic VoIP
Config Mode -
Basic VoIP
Раздел Advance VOIP приведем на скрине без описания. Тут нет никаких особых настроек.
GoIP шлюз настройка Advance VOIP
Config Mode -
Advance VOIP
В следующем разделе Media указываем диапазон RTP  портов. На Asterisk он должен соответствовать.
GoIP шлюз настройка Media
Config Mode -
Media
Теперь переходим к настройке исходящих звонков. Устанавливаем значения как на скриншотах ниже.
GoIP шлюз настройка Call Out
Config Mode -
Call Out
GoIP шлюз настройка Call Out Auth
Config Mode -
Call Out Auth
Переходим к следующему разделу Call In, входящая логика обработки вызовов. Определим префикс для всех сим-карт, который будет дальше передаваться на Asteris как DID номер.
В качестве префикса будем использовать 01332 и далее две цифры определяющие слот для сим-карты. В этого получится 0133201, 0133202......0133232
CID Forward Mode: выставляем Use CID as SIP Caller
GoIP шлюз настройка Call In
Config Mode -
Call In
GoIP шлюз настройка Call In Auth
Config Mode -
Call In Auth
Следующие разделы SIM и SIM Forward устанавливаем значения как на скриншотах
GoIP шлюз настройка SIM
Config Mode -
SIM
GoIP шлюз настройка SIM Forward
Config Mode -
SIM Forward
Теперь переходим к ключевым настройкам - раздел SMS
SMS to VoIP - Disable. Этот параметр применяет сразу ко всем линиям и определяет, как устройство обрабатывает полученные SMS-сообщения.
Get Destination Nunumber From - Message body.
SMS To VoIP - тут прописываем для каждой линии свой номер сим-карты, чтобы потом в Asterisk и в Telegram можно было видеть на какую сим-карту и на какой номер пришло смс.

GoIP шлюз настройка SMS
Config Mode -
SMS
Настройка на стороне Telegram
Зарегистрируйте нового Telegram-бота. Для этого  отправьте "/newbot" @BotFather и следуйте дальнейшим  инструкциям. Для настройки потребуется токен, предоставленный @BotFather на последнем шаге.
Создание Telegram-бота
Если вы хотите отправлять персональные уведомления, вам необходимо получить идентификатор чата пользователя, которому бот должен отправлять сообщения.
Отправьте "/getid" на "@myidbot" в мессенджере Telegram.
Получить Telegram id пользователя
Отправьте "/start" боту, созданному ране. Если вы пропустите этот шаг, Telegram-бот не сможет отправлять Вам сообщения.
Так же можно можно открыть @BotFather, набрать /mybots. Выбрать только что созданного бота и нажать "Запустить"
Telegram запуск бота
Если вы хотите отправлять групповые уведомления, вам необходимо получить идентификатор группы, в которую бот должен отправлять сообщения. Чтобы сделать это:

Добавьте "@myidbot" и "@тут_имя_вашего_бота" в свою группу. Отправьте сообщение "/getgroupid@myidbot" в группу. В групповом чате отправьте "/start@тут_имя_вашего_бота".
Если вы пропустите этот шаг, Telegram-бот не сможет отправлять сообщения в группу.
Telegram запуск бота в группе
Настройка на стороне Asterisk и FreePBX
Шлюзы GoIP умеют отправлять СМСки по SIP протоколу. Т.е. с помощью Asterisk (FreePBX). И для этого не нужно настраивать SMS сервера, почтовый ящик или писать скрипты на bash или python.

Заходим на FreePBX. Открываем раздел Setting, далее Advanced Setting, ищем пункт SIP Channel Driver и выбираем both. Мы будем использовать драйвер канала и SIP и PJSIP.

FreePBX Sip channel driver
Настраиваем транк между АТС Asterisk (FreePBX ) и шлюзом GoIP.
Для этого заходим в Connectivity - Trunks и выбираем Add Trunk - Add SIP (chan_sip) Trunk
Во вкладке General пишем имя транка (остальные пункты по умолчания) и переходим на "Sip Setting"
Outgoing



host=dynamic
username=16G1_16M5RMOS
secret=***password***
type=friend
context=from-pstn
qualify=yes

FreePBX outgoing sip setting
Edit Trunk
Sip Setting - Incoming



type=user
username=16G1_16M5RMOS
secret=***password***
context=from-trunk
FreePBX incoming sip setting
Применяем настройки, подключаемся к asterisk и смотрим, что соединение установлено.
sip show peers
Asterisk sip show peers
Перейдем к настройке входящей и исходящей маршрутизации.
Connectivity - Inbound Routes

DID Number: _0132[01]X