Данный материал описывает процесс подключения User Device к Asterisk.
Чаще всего это VoIP telephone, и подключение User Device включает в себя два основных шага:
Asterisk и VoIP telephone взаимодействуют с использованием протокола SIP.
Session Initiation Protocol (SIP) является протоколом peer-to-peer, который воспринимает и Asterisk и телефон как равнозначные участники сессии.
В принципе два телефона могут звонить и непосредственно друг другу, без участия Asterisk.
Но, поскольку диалплан "живет" на Asterisk, то он чаще используется in the middle и проксирует все запросы клиентов.
Большинство телефонов имеют Web-интерфейс через который можно выполнить все настройки, с другой стороны, при большом количестве телефонов рекомендуется настроить Server-based configuration process. Его настройка отличается в зависимости от производителя.
Вообще в Asterisk для всех систем значение имеет только channel name.
Строго говоря User или extension являются не более чем триггерами, которые запускают последовательность инструкций.
Например можно написать диалплан, при котором при наборе номера 100 происходит соединение с конкретным телефонным аппаратом; но совершенно аналогично можно настроить на соединение с voicemail box, play back a prompt, подключение к conference room и множество других действий.
Таким образом в Asterisk extension это есть лишь имя группы инструкций в диалплане.
Такая концепция безусловно максимально расширяет функционал, и важна для таких важных сервисов как например hot-desking.
Hot-desking - это feature, которая позволяет пользователя залогиниться на девайсе и принимать входящие вызовы с этого девайса. Для Asterisk понятия User и Extension совершенно независимы от физического телефона.
Несмотря на то, что технически физ телефон можно именовать как угодно, рекомендуется, чтобы его имя совпадало с его MAC-адресом (например 0000FFFF0001).
User Device бывает трёх типов.
Asterisk позволяет подключать между собой устройства, использующие различные протоколы, например SIP, IAX2, Skinny/SCCP, Unistim, H.323, MGCP.
Настройка означает настройку channel configuration files этих протоколов.
Мы рассмотрим настройку на примере наиболее популярных протоколов, а именно SIP и IAX2.
Сhannel configuration files: sip.conf и iax.conf.
Сhannel driver: chan_iax2.so, chan_sip.so.
В системе Asterisk параметры "одеваются" в следующей по иерархии:
1. The specific section for the relevant channel
2. The template for the section
3. The [general] section
4. The hardcoded defaults
Это означает, что если мы не выставили какой-то специфический параметр, он получит дефолтное значение, которое чаще всего будет оптимальным.
Channel Configuration File описывает устройство, тогда как Dialplan описывает взаимодействие между устройствами.
Входящий звонок в систему Asterisk идентифицируется через устройство, через которое звонок пришёл. В нашем случае это sip.conf.
Сhannel configuration file определяет в какое место диалплана прибегает звонок, т.е. определяет context.
В рамках этого context производится поиск набранного номера.
Extension в Dialplan также имеет связь с именем физического устройства.
Причём, как видно channel configuration file контролирует не только вход звонка, но и его выход, определяя конечное физическое устройство ассоциированное с этим именем.
Поскольку SIP наиболее популярный протокол, sip.conf изобилует различными функциями и примочками, в этом можно убедиться посмотрев файл ip.conf.sample
К счастью дефолтные опции подходят для большинства случаев и мы можем сделать очень простую рабочую конфигурацию.
[general] context=unauthenticated allowguest=no srvlookup=no udpbindaddr=0.0.0.0 tcpenable=no [office-phone](!) type=friend context=LocalSets host=dynamic nat=force_rport,comedia dtmfmode=auto disallow=all allow=g722 allow=ulaw allow=alaw [64A769FE76F8](office-phone) secret=123456 [6C626D04E1EB](office-phone) secret=123456
Мы создали 4 секции:
allowguest=no - также очень важная для безопасности опция, запрещающая все unauthenticated calls. Включать её рекомендуется только когда вы точно понимаете что делаете.
srvlookup - опция нужна при подключении к ITSP для outbound connections, использовать ли DNS при подключении.
udpbindaddr=0.0.0.0 - слушаем запросы UDP/TCP на всех интерфейсах
tcpenable - SIP в качестве транспорта может использовать TCP и UDP, UDP наиболее распространён.
type=friend - type определяет как Asterisk будет воспринимать incoming SIP requests. При настройке friend channel driver will match on username first, IP second.
context=LocalSets - определяет context, т.е. раздел диалплана, в который будут прибегать все звонки инициированные данным channel.
host=dynamic - host определяет IP адрес для данного channel. dynamic означает что принадлежность девайса данному channel будет определяться на основе регистрации. Мы также можем поставить static и указать IP.
nat=force_rport,comedia - SIP и NAT уживаются не так просто, поскольку SIP включает IP адреса в его внутренних сообщениях. Это тема отдельного материала.
dtmfmode - DTMF это тоны которыми можно управлять голосовым меню. Чаще всего используют тип DTMF rfc2833. Здесь мы поставили автоматику.
После модификации файла sip.conf, для apply нам нужно выполнить команды:
sudo asterisk -r *CLI> module reload chan_sip.so
Для проверки, что новые channels были загружены:
*CLI> sip show peers *CLI> sip show users
Для тестирования мы создадим файл диалплана:
/etc/asterisk/extensions.conf
[LocalSets] exten => 101,1,Dial(SIP/64A769FE76F8) ; Replace 0000FFFF0001 with your device name exten => 102,1,Dial(SIP/6C626D04E1EB) ; Replace 0000FFFF0002 with your device name ; exten => 200,1,Answer() same => n,Playback(hello-world) same => n,Hangup()
Мы пока не будем комментировать это содержимое, поскольку этому посвящён отдельный материал.
CSipSimple мы настроим на работу с channel 64A769FE76F8
[64A769FE76F8](office-phone) secret=12345 ; a unique password for this device -- ; DON'T USE THE PASSWORD WE'VE USED IN THIS EXAMPLE!
Также правим в файле /etc/asterisk/extensions.conf строку:
exten => 101,1,Dial(SIP/64A769FE76F8) ; Replace 0000FFFF0001 with your device name
Применяем и проверяем изменения:
sudo asterisk -r *CLI> module reload chan_sip.so *CLI> dialplan reload *CLI> sip show users *CLI> dialplan show
X-Lite мы настроим на работу с channel 6C626D04E1EB
Его настройки будут следующими:
Теперь наши телефоны должны успешно зарегистрироваться и звонить друг другу.
А при наборе 200 мы услышим "Hello, World".
Добавить комментарий