Просто заметки Заметки обо всем и вся

Elastix замена номера при исходящем вызове.

Многие операторы связи не разрешают пропускать любые номера вида +7XXXXXXXXXX при исходящих вызовах: подменять номер на любой существующий. Чаще всего чтобы компании пускали трафик через них они закрывают исходящий вызов одним из номеров компании и таким образом перетягивают простыню на себя. Но существуют и исключения.

Для чего вообще нужна трансляция номеров? В основном для многих компаний она необходима прежде всего сотрудникам с разъездным характером работы, чтобы они могли видеть кто к ним звонил при переадресации на их мобильный телефон.

Предположим, что нашли такого провайдера, который разрешает подстановку/трансляцию номеров вида +7XXXXXXXXXX соответственно только номерная емкость России. Любая другая абракадабра из другой номерной емкости или будет прикрываться другим номером или же просто отваливаться.

Рассмотрим несколько вариантов подключения с переадресацией на мобильный телефон и трансляцией номера звонившего абонента.

Вариант первый:

Elastix у нас выступает в роли центральной АТС куда подключены все абоненты. У нас настроен транк с провайдером. В Elastix уже по умолчанию заложена функция трансляции номеров, то есть если мы при создании транка оставим поле Outbound Caller ID пустым будет происходить трансляция номеров. При входящем звонке на внутренний номер 100 извне, на котором установлена переадресация на мобильный через транк провайдера пропускающего CallerId будет улетать номер входящего абонента. Если же на номер 100 (с переадресацией на мобильный) позвонят с внутреннего номера 101, то Elastix соответственно пошлет номер 101 в транк с переадресацией. В этом случае произойдет либо подмена номером провайдера или же отруб линии, так как номер посылается некорректно в виде. Нам необходимо заменить внутренний номер на номер +7XXXXXXX101, который реально существует (иначе операторы связи могут просто не пустить звонок дальше). Здесь все просто в свойствах Extension 101 в поле Outbound CID прописываем номер например +74992000101.

undefined Все теперь Elastix в транк будет выкидывать данный номер наружу и на сотовом будет видно по окончанию что взонок идет с внутреннего номера.

Вариант второй:

Когда Elastix выступает в роли Proxy (выступает промежуточным звеном) и связан с основной АТС транком и уже только потом с провайдером, прорускающим CallerID. В данном случае все настройки транка: поле Outbound Caller ID оставляем пустым. Здесь штатными средствами Web-интерфейса не обойтись и придется немного подкорректировать план звонков.

1. В Outbound Routes у нас создан маршрут, через который у нас идут звонки по транку с трансляцией Caller ID. Смотрим как мы его назвали, например trans. Далее открываем сформированый динамически файл extensions_additional.conf и ищем там наш маршрут на выход (называться будет [outrt-1]):

[outrt-1] ; trans
include => outrt-1-custom
exten => _7X.,1,Macro(user-callerid,SKIPTTL,)
exten => _7X.,n,Noop(Calling Out Route: teltech)
exten => _7X.,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _7X.,n,Set(_NODEST=)
exten => _7X.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _7X.,n,Macro(dialout-trunk,3,${EXTEN},)
exten => _7X.,n,Macro(outisbusy,)

Необходимо подкорректировать данные на выход, чтобы как и в предидущем 1-м варианте при звонках у нас транслировались внутренние номера вида +74992000XXX. Для того чтобы информация после перезапуска Asterisk сохранилась необходимо добавить в файл изменения со строчкой:

[outrt-1] ; trans
include => outrt-1-custom
exten => _7X.,1,Macro(user-callerid,SKIPTTL,)
exten => _7X.,n,Noop(Calling Out Route: teltech)

exten => _7X.,n,ExecIf($[${LEN(${CALLERID(number)})} = 3]?Set(CALLERID(number)=7495100${CALLERID(number)}))


exten => _7X.,n,Set(MOHCLASS=${IF($["${MOHCLASS}"=""]?default:${MOHCLASS})})
exten => _7X.,n,Set(_NODEST=)
exten => _7X.,n,Macro(record-enable,${AMPUSER},OUT,)
exten => _7X.,n,Macro(dialout-trunk,3,${EXTEN},)
exten => _7X.,n,Macro(outisbusy,)

Вставляем условие: Если длина CallerID = 3 (наша номерная емкость), то добавляем справа к CallerID 74992000

exten => _7X.,n,ExecIf($[${LEN(${CALLERID(number)})} = 3]?Set(CALLERID(number)=7495100${CALLERID(number)}))

Теперь при звонке с внутреннего номера на внутренний номер на котором установлена переадресация будет транслироваться номер вида +74992000XXX

Elastix отправка уведомлений смс кто звонил на сотовый

При установке переадресации на сотовый через веб-интерфейс во многих компаниях на телефоне высвечивается общий номер телефона и не видно кто звонил. В основном почти все операторы связи не дают подменять номера на произвольные и использовать трансляцию (например для внутренних +7495999XXXX, где ХХХХ - 4-х значный внутренний номер телефона). Хотя в самом Elastix данная фишка существует изначально. Когда мы на рабочем месте, то можем видеть кто звонит. А что же делать, если работа разъездного характера. В данном случае необходимо поставить какое-либо уведомление "Кто звонил?": e-mail, sms. Было решено остановиться на смс уведомлениях. То есть на любой звонок на внутренний номер телефона с которого установлена переадресация на сотовый будет отправлено смс уведомление с номером звонившего.

Для реализации данной задачи будем использовать USB-модем (разлоченный или неразлоченный не имеет значения так же не важно включен ли на нем голос), программу для отправки смс Gnokii и небольшое вклинивание в код Elastix.

Настроим программу для отправки СМС — Gnokii.
1. ставим зависимости:
yum install usbutils libusb-devel tcl
2. Вставляем модем и смотрим, как он определился:

lsusb

Bus 002 Device 007: ID 12d1:14fe Huawei Technologies Co., Ltd.


3. Добавляем репозитории

yum -y install epel-release

4. Устанавливаем usb-modeswitch usb-modeswitch-data
yum install usb-modeswitch
yum install usb-modeswitch-data

5. Передергиваем модем и проверяем:

lsusb
Bus 002 Device 008: ID 12d1:1506 Huawei Technologies Co., Ltd. E398 LTE/UMTS/GSM Modem/Networkcard

6. Устанавливаем gnokii
yum --enablerepo=epel install gnokii gnokii-smsd

7. Правим конфиг /etc/gnokiirc

[global]
port = /dev/ttyUSB0
model = AT
initlength = default
connection = serial
use_locking = no
serial_baudrate = 115200

8. Вносим изменения в файл elastix
Из файла extensions_additional.conf
копируем весь макрос [macro-dial-one] в файл extensions_override_elastix.conf
с добавлением строчки
exten => cf,n,System(echo 'Абонент +${CALLERID(num)} звонил вам' | sudo gnokii --sendsms ${DB(CF/${DEXTEN})})

где ${DB(CF/${DEXTEN})} - номер сотового телефона, на который установлена переадресация.
после строки
exten => cf,n,ExecIf($["${DB(CF/${DEXTEN})}"="${CFAMPUSER}" | "${DB(CF/${DEXTEN})}"="${REALCALLERIDNUM}" | "${CUT(CUT(BLINDTRANSFER,-,1),/,1)}" = "${DB(CF/${DEXTEN})}" | "${DEXTEN}"="${DB(CF/${DEXTEN})}"]?Return())

строка находится в блоке call forward exten => cf,n...

Таким образом будет при перадресации будет приходить смс вида "Абонент +74951234567 звонил вам" или же для внутренних "Абонент +ХХХХ звонил вам".

Elastix настройка уведомлений на почту

Так как по большей части Elastix является софтовой АТС, то не имеет смысла держать на нем тяжеловесный postfix

Удаляем тяжелый postfix (в web-интерфейсе пропадет вкладка Email)
yum remove postfix

Настройка отправку уведомленийна почту при помощи ssmtp-клиента.

Установим ssmtp

yum install ssmtp
Теперь настроим ssmtp.
переименуем оригинальный конфиг
mv /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp.conf_orig
Создадим новый конфигурационный файл:
nano /etc/ssmtp/ssmtp.conf
с содержимым:
#Debug=YES #Если нужна отладка запускаем
#Адрес почтового сервера, который находится в сети предприяития
mailhub=172.16.1.5:25
hostname=mail.comoj.local
root=pbx@comoj.ru #Заранее заведенный почтовый ящик на сервере, от которого будут приходить сообщения.

Логи хранятся в /var/log/maillog
Теперь нам требуется настроить права для локальных пользователей, кто может выполнять отправку писем:
nano /etc/ssmtp/revaliases
добавляем:
root:pbx@comoj.ru:172.16.1.5:25
asterisk:pbx@comoj.ru:172.16.1.5:25

Проверяем отправку уведомлений например Voicemail. Все уведомления будут приходить с ящика pbx@comoj.ru

Главная