Подключение sip телефона к asterisk
В данной статье рассмотрена пошаговая инструкция по организации связи в простом маленьком офисе.
Допустим, для простой схемы связи нам потребуется одна внешняя линия связи и два внутренних клиента.
Для настройки внешнего и внутреннего SIP номера необходимо отрыть текстовом редакторе файл sip.conf :
Добавить или раскомментировать
Добавить в конец файла
Для настройки входящих/исходящих звонков необходимо внести изменения в файл extensions.conf (в конец файла).
Для входящих звонков необходимо указать, куда будет поступать вызов (внутренний номер астериска/группа абонентов/IVR).
На указанном ниже примере, входящий звонок будет направлен на внутренний номер астериска 1001.
Теперь входящие звонки будут приходить в контекст [server-in] на внутренний SIP номер 1001 .
Для исходящих звонков с любого внутреннего номера на внешние номера, настройки в extensions.conf будут следующими:
Для применения настроек, заходим в консоль астерикса asterisk -r и выполняем команду перечитывания конфигурации core reload :
На этом настройка астерикса завершена.
Настройка клиентов
Для подключения к астериксу подойдет любой телефон с поддержкой SIP протокола.
Если нет подходящего телефона и есть компьютер, можно установить программный клиент IP-телефонии (например, кроссплатформенный Linphone).
Рассмотрим настройку клиента с внутренним номером 1001 в программе Linphone.
Запускаем программу, выбираем Account Assistant
Выбираем Use a SIP account
Вводим настройки новой учетной записи
Если пароль введен неверно программа уточнит его
Если регистация прошла успешно, то текущий идентификатор будет подсвечен зеленым
На этом настройка клиента завершена.
Остальных клиентов необходимо настроить аналогичным способом.
В этой статье я расскажу по шагам об организации IP телефонии в офисе на 15 человек с помощью Asterisk в виде сборки Askozia, неттопа Intel NUC и телефонов Linksys и Yealink, заказанных с Ebay, а также прикину примерные затраты на организацию связи со своим сервером телефонии, плюс попробую рассказать о преимуществах и недостатках этого решения.
Железо
Системные требования к железу у Asterisk минимальные. В принципе, под нашу задачу подойдет любая современная платформа. В качестве такой системы я выбрал Intel NUC DCCP847DYE с процессором Celeron и памятью 2 gb. Внутренний SSD диск не брал.
За телефонами я обратился к аукциону Ebay, используя запрос «lot linksys spa» получаем такие предложения:
Используя снайпера для ebay, мейлфорвардера и посылки с одеждой, я в общей сложности привез в офис за несколько месяцев порядка 15 телефонов Lynksys, Cisco, Yealink(Cortelco). В среднем 1 телефон обошелся в 2300 руб. Я старался брать старшие модели с двумя ethernet портами, подсветкой экрана и POE. Ну и для Sales менеджеров и специалистов техподдержки взял на том же Ebay 6 гарнитур Plantronics MX500i
Достаточно удобная штука и приемлемое для наших требований качество связи. Даже вебинары через нее проводим :)
На момент организации IP телефонии я мало чего знал про Asterisk и в Linux практически не шарил, потому выбрал готовый дистрибутив «Asterisk на флешке» — Askozia
Многоканальный номер
В качестве основного поставщика IP траффика выбрали, используемого ранее на протяжении нескольких лет, провайдера Манго Телеком.Для исходящих добавили Мультифон, Zadarma, PCTEL. У каждого из них есть свои плюсы при звонках на определенных направлениях.
Установка и настройка
Телефоны просто поставили между компьютерами и локальной сетью, гарнитуры воткнули в телефоны, хотя к ним шли USB звуковые, которые пригодились для проведения вебинаров через компьютер позже :)
Про настройку IP АТС попробую рассказать подробно, используя установку с нуля, чтобы не пропустить ничего важного. Для этого начну все с самого начала на демо системе и постепенно доведу ее настройки до состояния нашей рабочей станции.
Образ IP АТС за пару минут залил на флешку по инструкции и воткнул в Intel NUC, в биосе которого выбрал загрузку с USB. В сети есть DHCP сервер, потому Askozia сразу получила адрес, который я заменил на статический.
Собственно на этом работа в консоли завершена, и можно переходить в веб интерфейс по ip адресу отображенному в консоли.
При первом входе авторизуемся, используя учетные данные по умолчанию admin/askozia, переходим на вкладку лицензии и вбиваем полученные при покупке ключи.
У меня 2 ключа, т.к. мы используем расширенную версию Askozia с редактором маршрутов. Вводим их последовательно, сохраняя каждый ключ.В общих настройках меняем пароль, устанавливаем русский язык.
Далее в настройках подключаем внешний диск для хранения логов, голосовой почты и истории разговоров.
Диск форматируется в FAT, и его легко можно подключить к любой Windows машине, чтобы скинуть записи разговоров.
Настройка IP телефонов и SIP учеток
Далее переходим к настройке IP телефонов. В Askozia есть механизм автоматического поиска и настройки IP телефонов, есть TFTP сервер для прошивок и конфигурационных файлов. Телефоны перед автонастройкой необходимо сбросить до заводских настроек, после чего они будут доступны в интерфейсе Askozia. Можно конечно все настроить вручную, для этого придется в каждом телефоне через веб-интерфейс прописывать хост, логин и пароль.
И тоже самое на телефоне
Добавляем для каждого сотрудника учетку
Настройка провайдера
Запись разговоров
В Askozia по умолчанию есть только запись разговоров по требованию, во время звонка нажимаем *1 и запись начинается, а по окончании разговора она отправляется на email. Но не зря же мы достали из шкафа большой внешний винт и подключили его к Askozia.Решим задачу по тотальной записи всех внешних разговоров. Добавим в настройки провайдера команды диалплана.Открываем настройки провайдера Манго Офис, и прописываем параметры в соответствующие поля на закладке Дополнительно:
В итоге мы получим структурированную по папочкам запись всех внешних разговоров, где в имени файла будет дата время, направление и вызываемый(щий) номер абонента.
Настройка мобильных
Для построения маршрутов вызовов, голосовых меню и отделов необходимо внутри АТС иметь номера мобильных телефонов сотрудников. Для этого создаем их в секции внешние учетки, прописываем номер и выбираем провайдера, через которого пойдет звонок.
Также можно сделать внешний номер используя SIP URI, например, для объединения нескольких офисов и присвоить коллегам из других офисов короткие номера.
Факсы
Перед началом настройки нужно создать SIP аккаунт в личном кабинете Ringostat.
Как создать SIP аккаунт?
SIP аккаунт состоит из логина, пароля и домена Ringostat PBX .
Приступим к созданию сотрудника и его SIP-аккаунта
1. Первым делом добавляем нужного нам сотрудника, заполнив следующие поля: -
2. Теперь создадим сам SIP-аккаунт, задав основное направление. Для этого необходимо добавить контакт . При создании SIP-аккаунта необходимо заполнить следующие поля:
После созданного сип-аккаунта для нового сотрудника можете смело сохранять профиль сотрудника со всеми введенными ранее данными.
После создания SIP аккаунта, можно перейти к его регистрации в Asterisk.
Пример стандартной настройки Asterisk в роли SIP клиента
1. Внешняя регистрация sip номера для входящих и исходящих звонков
Нужно зарегистрировать SIP аккаунт в Ringostat, как номер на стороне вашего Asterisk.
В файле конфигурации sip.conf , в секции [general] нужно добавить определение register :
2. Определение транка, для совершения исходящих вызовов
В файле конфигурации sip.conf нужно добавить секцию [логин SIP аккаунта] и добавить определение транка, для совершения исходящих вызовов.
3. Настройка входящей и исходящей маршрутизации
В файле extensions.conf , в секции [default] нужно добавить правило набора:
Стандартная настройка завершена.
Для переадресации звонков на созданный SIP аккаунт, нужно добавить его в схему переадресации.
Подробная информация о настройке схем есть в отдельной инструкции.
Asterisk SIP trunk
Соединение обозначенное как user, это определение любой системы или оконечной точки (endpoint), которой мы разрешаем входящие вызовы на наш сервер Asterisk. Соединение type=user не обозначает никакого пользователя, а только создает канал и указывает контекст, для входа в диалплан аутентифицированных входящих вызовов.
Через соединение обозначенное как peer совершаются исходящие вызовы.
Asterisk Register String
register ⇒ sipuser[:secret[:authuser]]@host[:port][/extension]
sipuser - идентификатор пользователя на SIP сервере провайдера. authuser - не обязательное имя пользователя для авторизации на SIP сервере port - на какой порт посылать запросы регистрации серверу host. Если не задано, то по умолчанию - 5060 /extension - расширение для обработки вызовов в диалплане Asterisk. Extension - подставляется в SIP заголовок <contact>. Это значение используется удаленным SIP сервером, когда ему необходимо совершить вызов в сторону Asterisk. Задайте в контексте транка соответствующее расширение, для обработки входящих вызовов, например: exten ⇒ _1234567,1,Queue(queuename), где 1234567 - extension. Если данный параметр не указан в строке регистрации, удаленный SIP сервер, вероятнее всего, использует параметр sipuser в качестве идентификатора вызова.Вышеприведенный пример, упрощенный вариант строки регистрации. Полный вариант содержит больше информации:
register => [peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][
Обратите внимание на параметр transport, например tls:
register => tls://user:password@host
Строка регистрации имеет напрямую связанные с ней параметры [general]:
registertimeout=20 - повторять попытки регистрации каждые 20 секунд (по умолчанию) registerattempts=10 - кол-во неудачных попыток регистрации. По умолчанию - 0 (т.е. продолжать бесконечно) sip show peers - Отобразить все пиры и их статус. sip show peer <имя пира> - Показать конфигурацию определенного пира. sip show registry - Отобразить статус регистраций на удаленном UAS. sip reload - Перечитать конфигурационный файл. sip show settings - Показать текущую конфигурацию chan_sip.Для получения подробной информации о командах смотрите Asterisk CLI - интерфейс командной строки.
Пример вывода команды sip show registry в консоли Asterisk:
Возможные состояния (state):
Request Sent - запрос отправлен, ожидает ответа. No Authentication - ответ отрицательный, регистрация отвергнута.Asterisk SIP peer
Для совершения исходящих вызовов должен быть создан объект type=peer.
Нажмите, чтобы отобразить
Нажмите, чтобы скрыть
Asterisk не делает различий между внутренними и внешними линиями, любой вызов совершается через какой-либо канал. Когда SIP сервер провайдера, вызывает Asterisk, то он совершает вызов через peer, проходя аутентификацию у user.
friend: Запись, которая одновременно и user и peer. Этот тип, как правило, задается телефонам и другим оконечным устройствам. Для SIP пользователей этого типа Asterisk создаёт два объекта, один type=peer и один type=user, с одинаковыми именами.Приведенный пример, являет собой типовой, самый распространенный вариант конфигурации sip транка с регистрацией через публичную сеть:
В диалплане (extensions.conf ) можно использовать разнообразный синтаксис для вызова (dial ) SIP устройств.
В файле extensions.conf, для совершения исходящих вызовов, у Вас должно присутствовать правило набора, примерно такого вида:
Где from-siptrunk контекст заданный user или friend объекту.
Настройка SIP пира для регистрации внутренних абонентов
Как уже отмечалось Asterisk не делает особых различий между транками и абонентами, поэтому конфиг телефона будет похож на SIP транк, но все же немного другой.
Рассмотрим некоторые опции:
host - dynamic или ip адрес с которого подключается абонент. type - для абонентского пира это обычно friend secret - пароль, использование сложных паролей убережет вас от многих неприятностей, даже если вы считаете сеть безопасной, в дальнейшем все может измениться и ваша предусмотрительность окажется очень кстати. nat = force_rport - использовать rport, даже если его нет directmedia - направлять медиа поток (RTP трафик) через сервер или напрямую между каналами (пирами). port - порт SIP сигнализации устройства (не путайте c bindport asterisk, который для данного драйвера SIP в Asterisk может быть только один, 5060 по умолчанию, но для нового драйвера Asterisk pjsip.conf, может, или даже должен, быть назначен уникальный порт для каждого транспорта) deny - сети из которых запрещено подключение permit - сети из которых разрешено подключение (если абонент находится в локальной сети, назначьте ему параметр permit=192.168.1.0/255.255.255.0 и регистрация на этом пире будет разрешена только из этой подсети. ACL очень действенная мера безопасноcти. См. также Asterisk:acl.conf call-limit -сколько одновременных вызовов (concurrent calls) может производится через данный канал. Хорошая идея, как для локальных так и для удаленных абонентов. Если пир взломан, злоумышленники не смогут пропустить через канал больше указанного кол-ва вызовов зараз(ы). pickupgroup - Группа перехвата. Назначьте одинаковый номер группы для телефонов, которые должны перехватывать вызовы друг у друга при помощи featurecode - pickupexten, назначенного в features.confНастройка нескольких SIP пиров по шаблону
А затем определить уникальные свойства пиров, добавив рядом с именем каждого пира, имя общего шаблона в круглых скобках:
Полный список параметров general sip.conf
Следующие параметры используются в общей [general] секции sip.conf:
allowexternalinvites
allowguest
allowoverlap
Вкл. или Выкл набор по одной цифре (т.е. каждая набранная цифра будет сразу отправляться в канал)
allowsubscribe
allowtransfers
alwaysauthreject
autodomain
bindaddr and bindport
Вы можете задать независимые для UDP, TCP и TLS транспорта значения udpbindadd, tcpbindaddr и tlsbindaddr
buggymwi
callevents
checkmwi
Время в секундах, между проверками голосовой почты :
compactheaders
Использовать или нет компактные SIP заголовки.
defaultexpiry
Срок действия регистрации в секундах для входящих и исходящих регистраций. При входящей регистрации, этот параметр задается клиентской стороной, и заданное здесь значение используется, только если клиент не сообщил свое занчение. Для исходящих регистраций этот параметр сообщается удаленной стороне UAS (user agent server)
directrtpsetup
domain
dumphistory
externhost
externip
externrefresh
g726nonstandard
Значения: yes/no, по умолчанию: no. Если клиент собирается для сеанса связи «договориться» использовать звуковой кодек G726-32, с использованием компрессии AAL2, вместо RFC3551 (что требуется для аппаратов фирмы Sipura и шлюзов от Grandstream, и может другим). То это противоречит спецификации RFC3551, клиент должен вместо этого «договориться» использовать AAL2-G726-32
ignoreregexpire (global)
2)Realtime peers Когда peer сконфигурирован в режиме реального времени, информация о регистрации используется независимо от defaultexpiry
jbenable
jbforce
Принудительное использование jitter buffer принимающей стороной SIP канала.
jbimpl
jblog
jbmaxsize
Установите максимальную длину буфера в миллисекундах:
jbresyncthreshold
Джиттер буфер порог синхронизации. По умолчанию 1000:
icesupport
limitonpeers
Применять call-limit только для type=peer Это улучшит использование call-limit для устройств настроенных, как type=friend, отделив ограничение call-limit от входящих вызовов.
localnet
укажет серверу Asterisk какие подсети являются локальными, прозрачными для использования IP адресов сервера, SIP запросы к которым не требуют модификации поля Contact: c использованием externip или externhost
matchexterniplocally
maxexpiry
Максимальная продолжительность регистрации в секундах.
minexpiry
Минимальная продолжительность регистрации в секундах.
notifymimetype
notifyringing
Сообщать подписчикам о состоянии вызов (RINGING):
notifyhold
Сообщать подписчикам (subscribers) о состоянии удержание (HOLD):
pedantic
realm
recordhistory
Вкл. или Выкл историю sip для всех каналов.
registerattempts
registertimeout
Таймаут между попытками регистрации на другом устройстве.
relaxdtmf
rtautoclear
rtcachefriends
Если rtcachefriends включен, Asterisk будет кэшировать friends(реалтайм пиры), которые приходят из realtime engine, так же, как если бы они сконфигурированы в «sip.conf».
rtsavesysname
(global) Определяет, должен ли Asterisk сохранить SystemName в базе данных в режиме реального времени во время регистрации:
rtupdate
sipdebug
sendrpid
ОТправлять или нет Remote-Party-ID header:
srvlookup
transport
tcpenable
Включить поддержку TCP транспорта chan_sip Asterisk.
tcpbindaddr
Адрес на котором Asterisk «слушает» TCP подключения.
tcpauthtimeout
tcpauthtimeout указывает максимальное время в секундах данное клиенту на аутентификацию. Если за заданное время клиент не прошел проверку он отключается. (По умолчаннию 30 секунд)
tcpauthlimit
Максимальное кол-во неаутентифицированных сессий в момент любой времени.
t1min
subscribecontext
Ограничить запросы SUBSCRIBE только указанным контекстом, если не переопределено в настройках пира.
t38pt_udptl
tos_sip, tos_audio, andtos_video
trustrpid
Доверять или нет Remote-Party-ID header: Asterisk SIP trustrpid
useragent
Если вы не желаете сообщать, что используете Asterisk, напишите Cisco или Avaya, или abyrvalg v2.0.
usereqphone
usereqphone опция говорит Asterisk добавить «user=phone» в SIP URIs которые содержат действующий номер телефона:
Читайте также: