Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
peredaem_nomer_zvonjaschego_pri_pereadresacii_na_mobilnyj_s_pomoschju_sms [2013/11/18 17:05]
ansealk создано
peredaem_nomer_zvonjaschego_pri_pereadresacii_na_mobilnyj_s_pomoschju_sms [2013/11/18 17:06] (текущий)
Строка 1: Строка 1:
 +====== Передаем номер звонящего при переадресации на мобильный с помощью СМС ======
 +Требовалось сделать так, чтобы при переадресации звонков с одного мобильного/​городского номера на другой мобильный мы видели номер звонящего,​ а не наш городской номер. Но дело в том, что операторы связи не дадут нам так просто подставлять свои номера при звонке через их сети (И правда,​ это был бы настоящий бардак). Но решить проблему можно передачей его через СМС сообщение через GSM-модем.
 +
 +**Что имеем:​** \\  ​
 +Сервер с FreePBX Distro FreePBX 2.11.0.0beta2.5 (Астериск 1.8), модем Huawei E171, несколько подключенных городских линий, диалплан с переадресацией.
 +
 +Для начала установим модем, переведем его в нужный режим, настроим программу для отправки СМС — Gnokii. Здесь и далее описываю действия для CentOS.
 +  - Обязательно ставим зависимости:<​code bash>yum install usbutils libusb-devel tcl</​code>​
 +  - Вставляем модем и смотрим,​ как он определился:<​code bash>
 +lsusb
 +Bus 002 Device 007: ID 12d1:14fe Huawei Technologies Co., Ltd.
 +</​code>​Так в начале выглядит строка.
 +  - В моем дистрибутиве не было пакета для сборки программ из исходников. Ставим Development Tools.<​code bash>yum groupinstall "​Development Tools" </​code>​
 +  - Качаем программу для переключения режимов модема. Пакеты usb-modeswitch usb-modeswitch-data берем [[http://​www.draisberghof.de/​usb_modeswitch/​|отсюда]].
 +  - Распаковываем оба архива и устанавливаем по-очереди:​ <code bash>
 +tar xvjf ...
 +make install </​code>​
 +  - Передергиваем модем и проверяем:<​code bash>
 +lsusb
 +Bus 002 Device 008: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/​UMTS/​GSM Modem/​Networkcard
 +</​code>​Значит все ОК и модем будет определяться каждый раз как надо. Если строка та же, что и вначале,​ то идем [[http://​awsswa.livejournal.com/​12015.html|сюда]]. \\ Команда dmesg покажет нам:<​code>​
 +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
 +</​code>​
 +  - Устанавливаем репозитарий для EPEL CentOS [[http://​www.server-world.info/​en/​note?​os=CentOS_6&​p=initial_conf&​f=6|вот так]]. ​
 +  - Устанавливаем gnokii <code bash>
 +yum --enablerepo=epel install gnokii gnokii-smsd
 +</​code>​
 +  - Правим конфиг /​etc/​gnokiirc<​code ini>
 +[global]
 +port = /​dev/​ttyUSB0
 +model = AT
 +initlength = default
 +connection = serial
 +use_locking = no
 +serial_baudrate = 115200
 +</​code>​
 +  - Проверяем отправку СМС:<​code bash>
 +echo '​Bingo!'​ | gnokii --sendsms +79060000000
 +</​code>​
 +
 +Теперь нужно разрешить пользователю asterisk запускать gnokii из диалплана. Так как установлена gnokii была под учеткой root, то пользователь asterisk не сможет ее запустить. Правим файл /​etc/​sudoers с помощью команды visudo (настоятельно рекомендуется использовать только visudo для правки файла sudoers):
 +<code bash>​asterisk ALL=NOPASSWD:/​usr/​bin/​gnokii </​bash>​
 +Сохраняем файл и выходим. ​
 +
 +Далее нам нужно внедрить в наш диалплан команду System() для отправки CID в СМС. FreePBX, конечно,​ не даст нам править extensions.conf и extensions_additional.conf,​ так как он сам их все время перезаписывает. Но можно вставлять свои правки в план с помощью файла extensions_override_freepbx.conf,​ что мы и сделаем. Можно просто найти в файле extensions_additional.conf нужный контекст,​ скопировать его фрагмент в extensions_override_freepbx.conf и внести свои изменения. У меня есть внутренний номер 203 который переадресуется на номер мобильника по SIP/​trunk/​номер_телефона. Эту часть диалплана мы и будем править:​
 +<code lua>
 +[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)
 +</​code>​
 +Теперь при звонке или переадресации на 203 будет отправляться СМС с номером звонившего,​ взятая из переменной CALLERID(num) прямо на мобильный телефон.
  
peredaem_nomer_zvonjaschego_pri_pereadresacii_na_mobilnyj_s_pomoschju_sms.txt · Последние изменения: 2013/11/18 17:06 (внешнее изменение)
GNU Free Documentation License 1.3
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0 Яндекс.Метрика