Asterisk на роутере, или бюджетный Voip Gsm шлюз
Многие из нас имеют в быту замечательные WIFI роутеры ASUS.
В данной статье речь пойдет о варианте применения этих роутеров, в частности моделей RT-N16, WL-500GP, WL-500W в качестве сервиса VOIP телефонии на базе продукта Asterisk, в том числе с построением шлюза GSM Asterisk VOIP.
В результате получаем:
— вполне работоспособную IP – телефонию на роутере, без лишних затрат и дополнительных точек отказа в виде дополнительного железа
— очень бюджетное решение по VOIP2GSM терминации для личных нужд (на базе 3G модемов HUAWEI)
Насколько это нужно — решать Вам!
Я лично использую эту схему (при минимальных затратах на «железо») для:
— недорогих звонков за границу с мобильного телефона (GSM->VOIP->GSM or Landline)
— экономии расходов на связь в роуминге (c помощью Callback на «местную» или туристическую симку)
— в качестве VOIP GSM шлюза в одной из стран, где цены на локальные звонки и интернет вполне адекватные, а вот VOIP трафик стоит немало.
1. Собственно указанный роутер ASUS RT-N16, WL-500GP, WL-500W (возможно список моделей может быть шире)
2. Для GSM VOIP шлюза – нужен 3G модем HUAWEI E1550 или E173 (опять же – список может быть шире, но тестировались именно эти модели). Шлюз GSM-VOIP в виде сервиса мегафона «Мультифон» — остается за рамками нашей темы.
Процессу настройки ASTERISK посвящено немало статей на Хабрахабре, приведу ссылки на некоторые из них:
habrahabr.ru/blogs/voip/104026
habrahabr.ru/blogs/voip/113707
Постараюсь не повторяться а осветить особенности установки Asterisk именно на роутере.
Итак, Часть 1-я, «Установка Asterisk»
1. Ставим на роутер прошивку на ядре 2.6* «от энтузиастов» на базе прошивки Oleg’а.
Адрес проекта с прошивками code.google.com/p/wl500g. Нужна прошивка rtn, подходящая к Вашей модели роутера.
Почему эта, а не dd-wrt, tomato и тд – работает быстро, проект динамично обновляется(спасибо «энтузиастам»).
2. Для пакета asterisk и прочих зависимостей памяти роутера нам будет явно недостаточно, поэтому понадобится внешний USB накопитель (1 gb- вполне устроит). Вместо флешки – мы можем воспользоваться опцией замечательных 3g модемов Huawei e1550 и E173 (кстати – все еще продается по акции мегафона за 750 рублей, в комплекте с симкой на 1 мес бесплатного мобильного интернета) – которые имеют слот для Micro SD Card, совмещая в себе функции флешки. Таким образом, этот чудесный модем воплощает в себе одновременно 3 свойства:
— 3G модем (интернет на роутер можем получать через него)
— Флешка (при вставленной micro sd) для установки доп. пакетов на роутере
— GSM шлюз с поддержкой голоса, SMS, USSD
3. Подключаем модем-флешку или просто флешку, логинимся в роутер по SSH, и производим первоначальную конфигурацию и установку необходимых пакетов.
Процесс неплохо описан здесь wl500g.info/showthread.php?t=3171, я приведу основные этапы:
a) Создаем необходимые конфигурационные файлы
mkdir -p /usr/local/sbin/
echo «#!/bin/sh» >> /usr/local/sbin/post-boot
cp /usr/local/sbin/post-boot /usr/local/sbin/post-firewall
cp /usr/local/sbin/post-boot /usr/local/sbin/post-mount
cp /usr/local/sbin/post-boot /usr/local/sbin/pre-shutdown
chmod +x /usr/local/sbin/p*
flashfs save
flashfs commit
flashfs enable
b) Форматим флешку и подключаем ее в качестве доступного хранилища
umount /tmp/mnt/disca_1
mke2fs -j /dev/discs/disca/part1
mkdir /tmp/mnt/disca_1/opt
mount -obind /tmp/harddisk/opt /opt
echo ‘mount -obind /tmp/harddisk/opt /opt ‘ >> /usr/local/sbin/post-mount
flashfs save
flashfs commit
flashfs enable
c) Подключаемся к репозиторию и устанавливаем нужные пакеты
mkdir -p /opt/tmp/ipkg
ipkg.sh update
ipkg.sh install ipkg-opt
echo «option verbose-wget»>>/opt/etc/ipkg.conf
ipkg update
ipkg upgrade
d) Ставим софт для удобства работы
ipkg install nano mc findutils grep wget
echo «export TERMINFO=/opt/share/terminfo» >> /usr/local/root/.profile
echo «export TERM=xterm» >> /usr/local/root/.profile
flashfs save
flashfs commit
flashfs enable
4. Ставим Asterisk 16
ipkg install asterisk16
5. Запускаем asterisk
и получаем……… «Segmentation Fault» (может быть Вам повезет больше? )
Небольшое лирическое отступление: все бы хорошо, но Asterisk «вылетает». Я потратил немало времени, пробовал компилировать Asterisk на роутере – вполне благополучно (с некоторыми хитростями), но тоже вылетает. Пробовал кросс компиляцию – аналогично.
В общем, чтобы заставить его работать – пришлось сделать небольшую процедуру «обрезания» библиотек-модулей, оказавшихся «крайними». У меня есть несколько вариантов работоспособных конфигураций сочетания модулей, но приведу самый простой пример заставить asterisk запуститься и без неприятного сообщения «Segmentation Fault».
Вот он:
mkdir /opt/lib/asterisk/modules_backup
mv /opt/lib/asterisk/modules/res* /opt/lib/asterisk/modules_backup/
Т.е. все res_* отключаем, надеюсь что Вам это будет некритично.
7. Запускаем опять asterisk, и «ВУАЛЯ»!
Asterisk Ready.
*CLI>
Процесс конфигурирования оставлю в покое, немало мано-факов по той тебе исписано, лишь сделаю ремарку, что для себя в /opt/etc/asterisk использую лишь эти конфигурационные файлы:
asterisk.conf cdr.conf extensions.conf indications.conf logger.conf modules.conf rtp.conf sip.conf
И для GSM модема еще dongle.conf (или datacard.conf)
Часть 2, Установка GSM Шлюза
С установкой Asterisk закончили, перейдем к установке GSM шлюза на базе 3G модемов HUAWEI, моделей E1550 и E173.
1. Нам нужен модем указанной модели с активированной функцией голоса (инструкции и софт по анлоку от оператора и активации голосовых функций доступны в открытом доступе в Интернете, если потребуется – могу описать процесс подробнее).
Как я упоминал, актуальное на данный момент для Москвы предложение – модем модели HUAWEI e173 в комплекте с сим картой и безлимитным интернетом на месяц – 750 руб. dv.device.megafon.ru/specifications/usbModem/e173).
2. Если модем используется в качестве флешки для роутера – то эта функция должна быть инициализирована (можно сделать через терминал):
AT^U2DIAG=0 (девайс переводится в режим «только модем»)
AT^U2DIAG=1 ( . «модем + CD-ROM»)
AT^U2DIAG=255 ( . «модем + CD-ROM + Card reader»)
AT^U2DIAG=256 ( . «модем + Card reader»)
Первый – простой… использовать для шлюза готовый скомпилированный модуль chan_datacard.so
Берем его отсюда iqlab.ru/downloads/chan_datacard.so и кладем в папку modules астериска.
cd /opt/lib/asterisk/modules
wget http: //iqlab.ru/downloads/chan_datacard.so
Дальше добавляем в /opt/etc/asterisk/ конфигурационный файл datacard.conf примерно следующего содержания
>>>>>>>>>>>>>>>>>>>>>>>>>>>
[datacard0]
audio=/dev/ttyUSB1 ; tty for audio connection
data=/dev/ttyUSB2 ; tty for AT commands
context=datacard-incoming ; context for incoming calls
group=1 ; calling group
rxgain=3 ; increase the incoming volume
txgain=3 ; increase the outgoint volume
resetdatacard=yes ; reset datacard during initialization
u2diag=256 ; set U2DIAG parameter (256 = modem+card_reader)
usecallingpres=yes ; use the caller ID presentation or not
callingpres=allowed_passed_screen ; set caller ID presentation
И далее, уже в файле extensions.conf создаем раздел [datacard-incoming] и добавляем туда свои правила диалплана. Для теста, например,
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
[datacard-incoming]
exten => s,1,Playback(demo-echotest) ; Let them know what’s going on.
exten => s,2,Echo ; Do the echo test.
exten => s,1,Playback(demo-echodone)
Запускаем астериск, смотрим, нормально ли подключился модуль
#Asterisk Ready.
#*CLI> — [datacard0] Datacard initialized and ready
Дальше звоним на симку, вставленную в модем, слышим привествие, и свой голос в качестве «эхо».
Дальше – конфигурируем необходимые правила, переадресации и тд.
Вариант второй – посложнее, но и возможностей больше.
Состоит он в том, чтобы скомпилировать на роутере расшиенную версию GSM модуля для Huawei, под названием chan_dongle.so (http://code.google.com/p/asterisk-chan-dongle/downloads/list) – СПАСИБО Bg1.
Для этого ставим на роутер необходимые для компиляции пакеты:
ipkg install buildroot optware-devel make
Скачиваем модуль chan_dongle, распаковываем, компилируем (configure && make), копируем в /opt/lib/asterisk/modules и создаем конфигурационный файл /opt/etc/asterisk/dongle.conf (описание есть здесь code.google.com/p/asterisk-chan-dongle/source/browse/trunk/etc/dongle.conf?spec=svn4&r=4)
Далее настраиваем диалплан, и наслаждаемся работающим сервисом Asterisk с GSM шлюзом на роутере!
Вот, в общем то, все, если кратенько…
Если нужно что-то детализировать или описать подробнее – welcome!
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.
Настройка Linksys spa3102 + asterisk 11 на роутере Asus RT-N18U
Однажды мне в руки попался FXO шлюз Cisco Linksys spa3102. Достался он мне почти на халяву и грех было его не утилизировать в своём домашнем техноцарстве. 🙂
Конечно, по началу я пошёл простейшим путём, просто установив у себя на домашнем компе 3cx server, который, кстати говоря, оказался очень простым в настройке и в то же время, вполне функциональным софтом для моих целей. Но меня очень смущали несколько вещей: Во-первых, мне очень не нравится ставить на свой рабочий комп какое-либо серверное п.о., потому что я на нём работаю и он на Windows, а это уже совсем не сервер. Во-вторых, меня очень сильно огорчило качество звука. Как бы я не игрался с кодеками, звук ужасно жевало, присутствовало эхо и ощутимые задержки. Да и вообще, хотелось бы, чтобы АТС обслуживал какой то небольшой девайс, который быстро грузится и жрёт не очень много электричества. Вот тут то у меня и возникла идея фикс, установить всё, что мне нужно на WiFi маршрутизатор.
На тот момент моим основным «вафлемётом» был Tp-Link TL-WR741ND. В общем, роутер пришлось менять… Покопавшись в обзорах и интернет магазинах, я пришёл к выбору устройства, оптимального по соотношению цена\ выпендрёж качество.
Asus RT-N18U – это беспроводной роутер AC стандарта, на платформе Cortex A9 (ARMv7, 800 MHz) со 128 мегабайтовой флеш памятью и 256 мб оперативы. Железяка сравнительно мощная, что позволяет использовать её не только как роутер, но и как домашний сервер для самых различных целей, начиная от домашней файлопомойки и заканчивая вебсервером с MySQL и PHP. Изврат конечно, но наличие самой возможности не может не радовать. 🙂
На данном девайсе установлена вполне неплохая стоковая прошивка, в которой уже с завода есть определённое количество плюшечек. Но мне нужно было от него ещё больше. По этому, я начал искать что-то поинтереснее. Перебрав несколько вариантов прошивок, я остановился на AdvancedTomato. В принципе, это та же самая Tomato by Shibby, но с переработанным веб-интерфейсом на HTML5.
Ставится эта прошивка следующим образом:
1. Заходим вот сюда и скачиваем последнюю версию прошивки для вашего устройства.
2. Затем сюда и скачиваем утилиту для восстановления прошивки. «ASUS RT-N18U Firmware Restoration»
3. Обнуляем роутер (через панель, либо долгим нажатием на ресет при работающем роутере)
4. Выставляем на сетевой карточке адрес вручную на 192.168.1.10 например.
5. Вырубаем роутер с кнопки, зажимаем ресет и врубаем роутер. Ресет не отпускать до тех пор, пока синяя лампочка на морде не начнём лениво мигать. Эта индикация говорит о том, что роутер вошёл в режим восстановления.
6. Запускаем утилиту восстановления и выбираем в ней новую прошивку (см. пункт 1)
7. Запускаем процесс прошивки. Если всё сделано правильно, то вы увидите прогресс закачки и обновления.
8. Ждём перезапуска роутера. С этой прошивкой он стартует долго. Причём так долго, что может показаться, будто роутер подох. 🙂 Немного терпения, он обязательно загрузится…
Впрочем, для пущей уверенности в своих действиях, желательно запитать роутер от UPS при обновлении. Не знаю, есть ли там какая защита от кривой прошивки, но так всё-же спокойнее.
9. Если хотите получить 100% рабочую систему, обнулите роутер после прошивки ещё раз. В официальном мануале это настоятельно рекомендуют сделать.
10. Заходим в панельно по адресу http://192.168.1.1 с логином root и паролем admin. Наслаждаемся новым интерфейсом и настраиваем устройство. 🙂
Теперь, когда роутер готов к дальнейшей настройке, вам понадобится лишняя USB флешка, которую вы должны засунуть в роутер, и более никогда оттуда не вытаскивать, т.к. там мы будем размещать его программное расширение.
Подобрали флешку? Идём ставить Entware! (не путайте с Optware. На Optware мне попался очень глючный Asterisk с которым я бился 2 дня и из трёх версий, которые были в репазитарии, ни одну так и не смог нормально запустить. Segmentation fault и всё тут!)
1) Заходим в панель томато и сразу же в раздел USB and NAS > USB Support.
Тут мы должны включить поддержку USB. Врубаем поддержку всех версий USB, которые только можно включить.
2) Там же, включаем поддержку USB Storage, ставим галочки на всех файловых системах и Automount. Если принтер и 3g модем использовать не собираетесь — можно выключить. Меньше дров — быстрее грузится. Хотя на практике пока не сравнивал.
В поле «Run after mounting» размещаем следующий скрипт:
#!/bin/sh
/opt/etc/init.d/rc.unslung start
Он будет инициализировать сервисы (демоны) Entware после того, как раздел будет смотрирован.
В поле «Run before unmounting»:
#!/bin/sh
/opt/etc/init.d/rc.unslung stop
sleep 15
for i in `cat /proc/mounts | awk ‘/ext3/
mount -o remount,ro $i
done
Этот скрипт безопасно (скорее всего) остановит сервисы, при извлечении usb носителя или перезагрузке устройства.
3) Далее, идём в раздел Administration→Scripts, выбираем таб «init» и вбиваем туда строку, которая будет монтировать нашу флешку в раздел /opt при загрузке, если на ней будет обнаружен раздел с меткой ENTWARE
echo ”LABEL=ENTWARE /opt ext3 rw,noatime 1 1” >> /etc/fstab
4) Теперь нам нужно отформатировать накопитель. Флешка уже воткнута? Ок. Логинимся на ssh к роутеру любым удобным клиентом и выясняем имя нашего накопителя, набрав команду mount
[email protected]:/tmp/home/root# mountrootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=127780k,nr_inodes=31945,mode=755)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
devfs on /dev type tmpfs (rw,noatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mtdblock5 on /jffs type jffs2 (rw,noatime)
usbfs on /proc/bus/usb type usbfs (rw,relatime)
/dev/sda1 on /tmp/mnt/…
В последней строке листинга мы видим имя устройства /dev/sda1, которое нас и интересует.
Если флешка разбита иным образом, и на ней несколько разделов, рекомендую пройтись fdisk’ом и грохнуть лишнее, иначе далее додумывайте инструкцию сами. 😉
5)Форматируем раздел sda1 в ext3.
Не забудьте забрать с флешки нужную инфу, т.к. она будет уничтожена!
[email protected]:/tmp/home/root# umount /dev/sda1[email protected]:/tmp/home/root# mkfs.ext3 -L ENTWARE /dev/sda1
Оставляем всё предложенное в процессе форматирования по умолчанию, жмём пару раз enter и дожидаемся окончания процесса…
6) Всё готово? Ну тогда выполняем пару строк в консоли, дабы не перезагружать. При следующей загрузке они выполнятся автоматически, т.к. это уже прописано в скрипте инициализации.
echo «LABEL=ENTWARE /opt ext3 rw,noatime 1 1» >> /etc/fstab
mount /opt
7) (на всякий случай)
Проверяем, всё ли смонтировалось как надо:
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro,relatime)
devtmpfs on /dev type devtmpfs (rw,relatime,size=127780k,nr_inodes=31945,mode=755)
proc on /proc type proc (rw,relatime)
tmpfs on /tmp type tmpfs (rw,relatime)
devfs on /dev type tmpfs (rw,noatime)
sysfs on /sys type sysfs (rw,relatime)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mtdblock5 on /jffs type jffs2 (rw,noatime)
usbfs on /proc/bus/usb type usbfs (rw,relatime)
/dev/sda1 on /opt type ext3 (rw,noatime,errors=continue,barrier=0,data=ordered)
Последняя строка говорит о том, что раздел /opt на месте и можно начать установку Entware.
8) Скачиваем и запускаем скрипт установки:
wget http://qnapware.zyxmon.org/binaries-armv7/installer/entware_install_arm.sh
chmod +x ./entware_install_arm.sh
./entware_install_arm.sh
9) Если установка прошла удачно, то перезаходим на ssh и начинаем работать с новым пакетным менеджером opkg. Для начала, обновим список пакетов:
[email protected]:/tmp/home/root# opkg updateDownloading http://qnapware.zyxmon.org/binaries-armv7/Packages.gz.
Updated list of available packages in /opt/var/opkg-lists/packages.
Установка ASTERISK
Теперь у нас есть нормальный пакетный менеджер с репозитарием, в котором есть готовые пакеты Asterisk под процессор ARM.
1) Ставим Asterisk и его детальки:
[email protected]:/tmp/home/root# opkg install asterisk11 asterisk11-app-system asterisk11-pbx-dundi2) Тут у нас возникает один небольшой косяк… Дело в том, что по какой то непонятной причине, пакет с вебмордой asterisk-gui в Entware отсутствует. Он есть в Optware, но к сожалению оба репозитария одновременно использовать, судя по всему, не получится. Да и не нужно.
Качаем пакет с вебмордой к себе на комп вот отсюда и распаковываем его любым архиватором. В пакете мы можем увидеть дерево каталогов, куда всё и должно было поставиться на живой системе. Так вот, воссоздаём точно такое же дерево в разделе /opt, и кладём туда содержимое архива: то есть саму вебморду. Кроме того, в файле control можно найти зависимости пакета, которые мы легко можем поставить вручную:
opkg install procps coreutils grep tar
3) Если всё сделано правильно, то в директории /opt/var/lib/asterisk/
У нас появились папки gui_backups, scripts и static-http. Это и есть веб интерфейс астериска.
переходим к настройке веб доступа к астериску:
1) Заходим в папку с файлами конфигурации
Видим там много всяких разных непонятных файлов. Нам пока нужно отредактировать только два из них.
2) Открываем файл http.conf и подправляем в нём следующие строки:
[general]enabled = yes
enablestatic = yes
bindaddr = 192.168.1.1 ; Адрес роутера. Можно указать 0.0.0.0 и тогда панель будет доступна на всех интерфейсах.
bindport = 8088; Порт.
prefix = asterisk; префикс в URL. Он будет светиться в адресе панели.
Сохраняем и закрываем конфиг.
3) Открываем manager.conf и правим следующие строки:
[general]enabled = yes
webenabled = yes
port = 5038
bindaddr = 0.0.0.0
…… тут куча текста, которую мы пропустим …….
;[mark]
;secret = password
[admin]
secret = mypassword
read = all
write = all,originate
4) Запускаем астериск:
Скрипт запуска может называться как то иначе, но он там всё равно есть.
5) Если всё ок, то можно зайти в веб панель управления asterisk по адресу:
Логин admin, пароль mypassword, если не поменяли в конфиге. А стоило бы поменять. 🙂
6) После первой попытки входа, веб интерфейс сгенерирует конфиг файлы по-умолчанию, фактически подготовив астериск к немедленному использованию.
7) Зайдите в раздел Dial Plans панели и создайте новый план со всеми имеющимися правами. Теперь заходим в раздел Users и создаём как минимум троих. Двое из них — это юзеры, через которых будет работать наш FXO шлюз. Допустим их ID 6000 и 6002.
Создаём юзера с ID 6000, назначаем ему произвольное имя (например LINKSYS) и уже созданный нами DialPlan1. Убираем галочку IAX и устанавливаем ему пароль, например pass1. Этот пользователь будет установлен в Line1 для linksys. Подробности позже…
Теперь очередь юзера 6001. Этого мы создаём для себя. Схема приблизительно та же. Можно сразу же прикрутить его к смартфону на андроиде прямо в стандартной звонилке, или к любому софтофону или к VoIP трубке, если такая имеется.
Ну и наконец юзер 6002. Этот юзер для PSTN линии. То есть, через него будет роутаться аналоговая линия, воткнутая в шлюз. Этому юзеру не нужно назначать DialPlan, т. к. он у нас совсем для других целей. Всё остальное так же: выключаем IAX, ставим пароль.
Настройка шлюза Linksys
Тут начинается самое весёлое! От одного только взгляда на обилие настроек этого устройства становится немного не по себе. 🙂 Но без паники! Большинство этих настроек трогать пока не нужно.
Если у вас чистый не настроенный девайс, пропустите этот шаг.
Если же, по каким-то причинам вы не помните пароль, или давно установленный адрес утройства, или так накрутили настройки, что лучше всё начать с нуля — просто сбросьте его на заводские установки.
Делается это так:
Подключите телефон к FXS порту, отключив всё остальное. Запустите устройство и дождитесь его загрузки. Войдите при помощи телефона, подключенного к FXS-порту, в конфигурационное голосовое меню, набрав ****. Там вы должны услышать стандартное приветствие «Linksys configuration menu. Please enter option followed by the pound key or hang-up to exit» Прослушав сообщение, введите комбинацию 73738, подтвердите сброс настроек, нажав клавишу 1 и повесьте трубку. Аппарат должен перезапуститься и вернуться к заводским настройкам.
1) Подключаем шлюз через порт LAN к компу. По умолчанию роутер висит на адресе 192.168.0.1 и ничего по DHCP не раздаёт, по этому, прописываем 192.168.0.2 на своём сетевом интерфейсе и заходим на http://192.168.0.1/. Пароль по умолчанию отсутствует. В правом верхнем углу нажимаем «Admin Login» и «Advanced». Проверяем версию прошивки в Voice → Info. Обновляем с сайта Cisco, если есть что-то посвежее. У меня на текущий момент стоит 5.2.13(GW002) и она точно работает.
2) Устанавливаем пароль. Voice -> System -> Admin Password и User Password. После нажатия кнопки Submit all Changes, устройство спросит пароль. Логины «admin» или «user».
3) Настраиваем сеть.
Заходим в настройки Router — WAN Setup, указываем:
Connection type: Static IP
Static IP: 192.168.1.91 (выбираете IP адрес устройства)
Netmask: 255.255.255.0 (маска сети)
Gateway: 192.168.1.1 (IP шлюза)
Enable WAN Web Server: Yes (чтоб иметь доступ к веб интерфейсу)
Жмем «Submit all changes»
4) Переключаем кабель из LAN в WAN, перезаходим в панельку с новонастроенным адресом.
5) Далее пойдут скриншоты, т. к. настроек очень много и я уже не помню, что именно я трогал. 🙂 Сверяемся со скриншотами и настраиваем так же. Если на скринах что-то отсутствует, значит там просто ничего не нужно менять.
Вот тут важно знать: настройки Caller ID Method и Caller ID FSK Standard влияют на определение номера. Под мою АТС подошли вот эти настройки.
Тут я вроде даже ничего и не менял, но на всякий случай можно сверить настройки.
Секция Line 1:
Тут должно быть так, как на картинке. Пароль ставите тот же, что для пользователя 6000 в астериске.
Секция PSTN:
вот тут надо быть повнимательнее. Чуть что не правильно — линия будет вести себя неадекватно. Например, снимать трубку при входящем звонке и утаскивать этот вызов куда-то в гипер пространство.
Прописываем юзера 6002 и его пароль.
в Dial Plan 8 можно прописать свой рельный номер городской линии, к примеру. Или что-нибудь от балды. Если определение CallerID не сработает, то передастся именно этот номер.
Обратите особое внимание на секцию International Control. Тут настраиваются физические параметры линии. Об этом лучше на всякий случай почитать более подробно в интернете, но чаще всего подходят вот такие настройки. Кстати, от Ring Validation Time и двух параметров ниже зависит, будет ли нормально определяться CallerID. До последнего момента не мог понять, почему не определяются номера, пока не нашёл эту информацию.
теперь вернёмся к настройке сервера…
Допиливаем конфиги Asterisk
Теперь, когда аппаратная часть готова к запуску, осталось лишь объяснить астериску, как обрабатывать звонки (входящие и исходящие) со шлюза.
1) Открываем из папки /opt/etc/asterisk/ файл extensions.conf и добавляем туда экстеншаны для обработки исходящих звонков с сип абонентов в город через шлюз:
[CallingRule_gorod]exten = _NXXXXXX,1,Dial(SIP/6002/$
exten => _NXXXXXX,n,Hangup
exten = _0XXXXXXXXX,1,Dial(SIP/6002/$
exten => _0XXXXXXXXX,n,Hangup
N = 5 | X=4 | . = любые символы | цифры = цифры. Подробнее можно почитать о паттернах в документации к астериску.
В данном случае у нас шаблон с именем gorod говорит о том, что нужно обрабатывать _NXXXXXX, тобишь, семизначные номера, у которых первая цифра не меньше двойки (дабы не дать абоненту позвонить по межгороду и т. д. Так вот, в данном случае обрабатываются два типа набора номера с двумя разными шаблонами. Единичка после паттерна говорит о приоритете строки правила, буковка n о том, что оно NEXT, то есть следующее за предыдущим. Далее, в правиле указано, что при наборе номера с таким паттерном звонок будет переназначен на SIP номер 6002, который у нас настроен на PSTN линии. Следующая часть «/$
Число 60 указывает на время, в которое ожидается принятие звонка. Если звонок принят не был, то по таймауту сработает следующее правило exten => _NXXXXXX,n,Hangup, которое, как видно из содержимого просто «положит трубку».
2) Теперь находим контекст [public] в том же конфиге. Этот контекст назначен по-умолчанию для обработки всех входящих (incoming) вызовов. В том числе и с линии PSTN. Но если для внутренних входящих правила уже созданы по-умолчанию, то PSTN у нас пока никак не обрабатывается, а значит ходит мимо. 🙂
Добавляем следующие строчки прямо в начало контекста:
exten => _XXXXXX.,1,Dial(SIP/6001,60)
exten => _XXXXXX.,n,Hangup()
Тут паттерн принимает всё, у чего номер длиннее 6 цифр (точка в конце даёт паттерну wildcard, так сказать.)
В моей сети кроме городских номеров других таких быть не может, по этому такой грубый паттерн мне вполне подойдёт. Правило перекидывает звонок прямо на мой мобильник, на котором настроен номер 6001. Тут можно навыдумывать кучу разных вещей, прикрутить IVR или автоответчик, но об этом я тут рассказывать не буду. 🙂
3) сохраняем этот конфиг.
4) заходим опять на ssh роутера и набираем там следующее:
Откроется консоль астериска, в которой нужно выполнить команду
Таким образом мы перезагружаем конфигурацию астериска. И она, обновлённая, попадает в том числе в gui.
5) Заходим опять в панельку астериска и в разделе Dial Plans редактируем созданный нами план. Тут теперь нужно отметить галочку на нашем правиле для исходящих звонком, чтобы их обработка была включена для пользователей, к которым этот план применяется.
Имейте в виду, что если в настройке PSTN выключить опцию PSTN Ring Thru Line 1 (а line – это по сути аналоговая трубка, являющаяся SIP клиентом, благодаря FXS порту) то звонок на line 1 с PSTN можно перебросить через те же самые шаблоны в конфигурации asterisk.
Сегодня я наконец заставил всё это работать вместе. Следующим шагом будет наладка работы кодеков, поскольку от них зависит качество голоса, помехи и задержка звука.
Обязательно проследите, чтобы у юзера для PSTN не было в конфиге собственного CallerID, иначе он будет передавать его, вместо того, что определилось при входящем звонке!
Рекомендую после настройки в панельке уже ничего не менять, поскольку она может навредить существующей конфигурации.
Оставьте первый комментарий
Оставить комментарий Отменить ответ
Для отправки комментария вам необходимо авторизоваться.