Что имеем:
Сервер с FreePBX Distro FreePBX 2.11.0.0beta2.5 (Астериск 1.8), модем Huawei E171, несколько подключенных городских линий, диалплан с переадресацией.
Для начала установим модем, переведем его в нужный режим, настроим программу для отправки СМС — Gnokii. Здесь и далее описываю действия для CentOS.
1. Обязательно ставим зависимости:
Код: Выделить всё
yum install usbutils libusb-devel tcl
Код: Выделить всё
lsusb
Bus 002 Device 007: ID 12d1:14fe Huawei Technologies Co., Ltd.
3. В моем дистрибутиве не было пакета для сборки программ из исходников. Ставим Development Tools.
Код: Выделить всё
yum groupinstall "Development Tools"
5. Распаковываем оба архива и устанавливаем по-очереди:
Код: Выделить всё
tar xvjf ...
make install
Код: Выделить всё
lsusb
Bus 002 Device 008: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard
Команда dmesg покажет нам:
Код: Выделить всё
option 2-1.4:1.0: GSM modem (1-port) converter detected
usb 2-1.4: GSM modem (1-port) converter now attached to ttyUSB0
option 2-1.4:1.1: GSM modem (1-port) converter detected
usb 2-1.4: GSM modem (1-port) converter now attached to ttyUSB1
option 2-1.4:1.2: GSM modem (1-port) converter detected
usb 2-1.4: GSM modem (1-port) converter now attached to ttyUSB2
8. Устанавливаем gnokii
Код: Выделить всё
yum --enablerepo=epel install gnokii gnokii-smsd
Код: Выделить всё
[global]
port = /dev/ttyUSB0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200
Код: Выделить всё
echo 'Bingo!' | gnokii --sendsms +79060000000
добавим строку для пользователя asterisk:
Код: Выделить всё
asterisk ALL=NOPASSWD:/usr/bin/gnokii
Далее нам нужно внедрить в наш диалплан команду System() для отправки CID в СМС. FreePBX, конечно, не даст нам править extensions.conf и extensions_additional.conf, так как он сам их все время перезаписывает. Но можно вставлять свои правки в план с помощью файла extensions_override_freepbx.conf, что мы и сделаем. Можно просто найти в файле extensions_additional.conf нужный контекст, скопировать его фрагмент в extensions_override_freepbx.conf и внести свои изменения. У меня есть внутренний номер 203 который переадресуется на номер мобильника по SIP/trunk/номер_телефона. Эту часть диалплана мы и будем править:
Код: Выделить всё
[ext-local]
exten => 203,1,Set(__RINGTIMER=${IF($[${DB(AMPUSER/203/ringtimer)} > 0]?${DB(AMPUSER/203/ringtimer)}:${RINGTIMER_DEFAULT})})
exten => 203,n,System(echo '8${CALLERID(num)}' | sudo gnokii --sendsms +79061234567) ; отправка номера
exten => 203,n,Macro(exten-vm,novm,203,0,0,0)
exten => 203,n(dest),Set(__PICKUPMARK=)
exten => 203,n,Goto(${IVR_CONTEXT},return,1)
exten => 203,hint,SIP/10000/778899
exten => Narva778899,1,Goto(from-internal,203,1)