Сколько я уже раз говорил, что только сам смогу изучить и понять как работает лишь разобрав весь процесс от и до, ни на кого нельзя надеяться, пусть напыщенные все знайки останутся на своем и говорить, – «Да ладно там все просто, в интернете полно руководств, мне некогда». От таких людей, а еще больше коллег по ремеслу меня если честно бесит. Ну да ладно, уже это слышать если честно не в первой, а потому я просто перестал спрашивать у них. Первоначальное мнение от том какой человек я уже научился составлять инстиктивно. И вот я просто взял множество различных курсов, статей, книг и пошел по пути новичка с практической отработкой всех непонятных мне моментов, как делаю и что делаю я документирую. Проще работать с наработками чем вот так сразу окунуться в задачу, но кому как. Я знаю одного своего хорошего друга так он вообще ничего не ведет — все помнит и знает/может разобраться взять и настроить, каждому свое. Ну да ладно, начну повествование всего того что сам знаю (а мне напоминалка на будущее использование):
Asterisk — я поставил из репозитариев
/etc/asterisk/
- sip.conf — описание настроек как работать по SIP протоколу
[название1](!) – это шаблон
[название2](!,название1) — это шаблон вложенный в другой шаблон
- extensions.conf — правило совершения звонков
- indications.conf — конфигурационный файл содержащий звуки которые слышит абонент при совершении звонков (Занята, Трубка Свободна и т.д)
Создадим подключение для двух SIP устройств задействовав дефолтные шаблоны: natted-phone & basic-options.
ekzorchik@srv-host:~$ sudo nano /etc/asterisk/sip.conf
;дефолтный шаблон который включает в себя параметры из шаблона basic-options
[basic-options](!)
; Можно выбрать: inband, rfc2833, info или auto: Как клиент обрабатывает сигнализацию DMTF.
dtmfmode=rfc2833
;контекст работы совершения звонков в файле extensions.conf
context=from-office
;SIP — запись для совершения звонков: peer — только исходящие, user — только входящие, friend — объединение user & peer
type=friend
[natted-phone](!,basic-options)
; Запрещает перенаправление трафика, все RTP потоки проходят через Asterisk
directmedia=no
;разрешаем логин с разных IP адресов
host=dynamic
; 101 — имя, ассоциируемое с SIP клиентом
; для этого имени используем настройки из шаблона [natted-phone]
[101](natted-phone)
;пароль для SIP имени клиента
secret = pbx101
[102](natted-phone)
secret = pbx102
Далее создаем свой DIAL план опираясь на который будут совершаться звонки через текущую АТС:
ekzorchik@srv-host:~$ sudo nano /etc/asterisk/extensions.conf
;настраиваем правила для контекста from-office
[from-office]
;здесь звонки только с номеров 101 и 102
exten => 101,1,Dial(SIP/101)
exten => 102,1,Dial(SIP/102)
На заметку:
Синтаксис Dial(): Dial(type/identificator,timeout,options,ULR)
Для справки вот этот документ: http://asterisk.ru/knowledgebase/Asterisk+cmd+Dial
type = тип канала
identification — номер телефона который вызывается через этот канал
timeount — необязателен, если задан то определяет максимальное время в секундах, сколько времени команда Dial будет ждать ответа на вызов
options — необязателен.
Затем заходим в консоль Asterisk с некоторым уровнем детализации с целью вывода на консоль информации работы и обновляем внесенные изменения в конфигурационные файлы выше:
ekzorchik@srv-host:~$ sudo asterisk -rvvvv
srv-host*CLI> core reload
Теперь настраиваем либо софтфон (Ubuntu — это ekiga, Windows — X-Lite, Android – Zoiper) либо аппарат поддерживающий SIP протокол (к примеру: Grandstream GP715,ATCOM и т.д)
ekzorchik@navy:~$ sudo apt-get install ekiga -y
Ubuntu 12.04.5 Desktop amd64 (Gnome Classic) — Приложения — Интернет — Програмный телефон Ekiga — Правка — Учетные записи — Учетные записи — Добавить учетную запись SIP:
Имя: 101
Регистратор: IP-адрес сервера с развернутым сервисом Asterisk (у меня 192.168.1.174), по умолчанию используется порт 5060 его можно не указывать, если же Вы специально его изменили то указываем его после IP&DNS:5060
Аутентификация пользователя: SIP-номер, т. е. 101
Пользователь: 101
Пароль: pbx101
Задержка: 3600 — оставляю по умолчанию
Включить учетную запись: отмечаю галочкой
По окончании создания настроек подключения нажимаю кнопку OK
Теперь на другой системе (можно и этой но с использование другого софтфон клиента) из этой же сети по такому же принципу настраиваю SIP номер 102
Итак оба SIP-номера зарегистрированы, проверим так ли это на самом деле:
— Registered SIP ‘101’ at 192.168.1.181:5060
> Saved useragent “Ekiga/3.3.2” for peer 101
srv-host*CLI>
srv-host*CLI> sip show peers
Name/username Host Dyn Forcerport Comedia ACL Port Status Description
101/101 192.168.1.181 D Auto (No) No 5060 Unmonitored
102 (Unspecified) D Auto (No) No 0 Unmonitored
или не заходя в Консоль Asterisk:
ekzorchik@srv-host:~$ sudo asterisk -rx"sip show peers"
,как видно один SIP-номер успешно зарегистрирован (значит Host & Port) на текущем сервере Asterisk, также по авторизованному соединению можно получить более детальную информацию:
srv-host*CLI> sip show peer 101
* Name : 101
Description :
Secret : <Set>
MD5Secret : <Not set>
Remote Secret: <Not set>
Context : from-office
Record On feature : automon
Record Off feature : automon
Subscr.Cont. : <Not set>
Language :
Tonezone : <Not set>
AMA flags : Unknown
Transfer mode: open
CallingPres : Presentation Allowed, Not Screened
Callgroup :
Pickupgroup :
Named Callgr :
Nam. Pickupgr:
MOH Suggest :
Mailbox :
VM Extension : asterisk
LastMsgsSent : 0/0
Call limit : 0
Max forwards : 0
Dynamic : Yes
Callerid : “” <>
MaxCallBR : 384 kbps
Expire : 3553
Insecure : no
Force rport : Auto (No)
Symmetric RTP: No
ACL : No
DirectMedACL : No
T.38 support : No
T.38 EC mode : Unknown
T.38 MaxDtgrm: 4294967295
DirectMedia : No
PromiscRedir : No
User=Phone : No
Video Support: No
Text Support : No
Ign SDP ver : No
Trust RPID : No
Send RPID : No
Path support : No
Path : N/A
TrustIDOutbnd: Legacy
Subscriptions: Yes
Overlap dial : No
DTMFmode : rfc2833
Timer T1 : 500
Timer B : 32000
ToHost :
Addr->IP : 192.168.1.181:5060
Defaddr->IP : (null)
Prim.Transp. : UDP
Allowed.Trsp : UDP
Def. Username: 101
SIP Options : (none)
Codecs : (ulaw|alaw|gsm|h263)
Auto-Framing : No
Status : Unmonitored
Useragent : Ekiga/3.3.2
Reg. Contact : sip:101@192.168.1.181:5060
Qualify Freq : 60000 ms
Keepalive : 0 ms
Sess-Timers : Accept
Sess-Refresh : uas
Sess-Expires : 1800 secs
Min-Sess : 90 secs
RTP Engine : asterisk
Parkinglot :
Use Reason : No
Encryption : No
Сейчас текущие два номера могут звонить друг другу и разговаривать, что по сути является как можно выразится домашняя АТС, только пока нет возможности вызова внешних номеров и звонков из вне на них. Но это дело будущих настроек, обо всем по порядку.
Пример №2: Конфигурация Asterisk для совершения звонков между внутренними номерами. Также когда создаем SIP аккаунты на текущем сервере Asterisk можно не использовать дефолтные настройки описания, а создать свои, чем я сейчас и займусь:
На заметку: советую использовать шаблоны описаний настроек SIP аккаунтов дабы не вводить одно и тоже по сто раз, да и приобщаться к правильному также нужно.
ekzorchik@srv-host:~$ sudo nano /etc/asterisk/sip.conf
;удаляем все содержимое (лучше сделать копию), буду создавать все с нуля самим.
;ekzorchik@srv-host:~$ sudo tar cfP etc_asterisk.tar /etc/asterisk/
;создаю свой шаблон
[sip-profile](!)
;возможность совершать, как входящие так и исходящие звонки
type = friend
;контекст правил вызова в файле /etc/asterisk/extensions.conf
context = office
;любое устройство (динамический IP адрес) может быть зарегистировано на Asterisk
host = dynamic
;запретить все кодеки (а ниже указываются список разрешенных кодеков)
; информация по кодекам: http://asterisk.ru/knowledgebase/Asterisk+codecs
disallow = all
;кодек G.711
allow = alaw
;кодек G711
allow = ulaw
;код языка, которые предопределены в файле indications.conf — где определяется язык приветствия и специфичные для каждой страны настройки сигналов телефонов
language = ru
;определяет группу вызовов (call group) для вызовов через это устройство
callgroup = 1
;Группа для “pickup” вызовов поступающих вашим сослуживцам, используя комбинацию “*8” и приложение Pickup() для работы с екстеншеном *8.
pickupgroup = 1
;Периодическая проверка доступности клиента.
qualify = yes
;Если инициируется вызов по протоколу SIP, тогда в сообщении INVITE содержиться информация, куда должен отправляться медиапоток: http://asterisk.ru/knowledgebase/Asterisk+sip+canreinvite
canreinvite = yes
;Ограничение на кол-во вызовов для пользователя.
call-limit = 4
;переменная изменяет образ действия сервера Asterisk для клиентов находящихся за файрволом с трансляцией адресов (NAT)
nat = no
Теперь создаю SIP–аккаунты:
[101](sip-profile)
;действительный экстеншен для этого пира
regexten = 101
;пароль на аккаунт 101
secret = pbx101
;Получение или установка полей из/в CallerID. (http://asterisk.ru/knowledgebase/Asterisk+func+callerid)
callerid = <101>
[102](sip-profile)
;действительный экстеншен для этого пира
regexten = 102
;пароль на аккаунт 102
secret = pbx102
;Получение или установка полей из/в CallerID. (http://asterisk.ru/knowledgebase/Asterisk+func+callerid)
callerid = <102>
Далее создаю контекст на совершение звонков: (план набора)
ekzorchik@srv-host:~$ sudo nano /etc/asterisk/extensions.conf
[office]
exten => 101,1,Dial(SIP/101)
exten => 102,1,Dial(SIP/102)
Теперь нужно чтобы Asterisk перечитал внесенные изменения в конфигурационный файл:
ekzorchik@srv-host:~$ sudo asterisk -r
srv-host*CLI> core reload
либо так:
ekzorchik@srv-host:~$ sudo asterisk -rx "core reload"
На заметку: при анализе что и как работает советую держать вторую консоль открытую с выводом диагностической информации чтобы наглядно видеть все что происходит с Asterisk
ekzorchik@srv-host:~$ sudo asterisk -r
[sudo] password for ekzorchik:
Asterisk 13.7.2~dfsg-0~ppa1, Copyright (C) 1999 – 2014, Digium, Inc. and others.
Created by Mark Spencer <markster@digium.com>
Asterisk comes with ABSOLUTELY NO WARRANTY; type ‘core show warranty’ for details.
This is free software, with components licensed under the GNU General Public
License version 2 and other licenses; you are welcome to redistribute it under
certain conditions. Type ‘core show license’ for details.
=========================================================================
Connected to Asterisk 13.7.2~dfsg-0~ppa1 currently running on srv-host (pid = 809)
srv-host*CLI>
Теперь также настраиваю либо 2 софтфона, либо же подключаем к текущему Asterisk два аппаратных телефона или VOIP-шлюз, мне же проще подключить VOIP-шлюз D-Link DVG-5008SG (за образец) где на первом порту настройки SIP аккаунта для номера 101, а на втором порта настройки SIP аккаунта для номера 102. После того как аккаунты зарегистируются (об этом будет ясно видно из статуса по подключениям на voip-шлюзе) проверяем информация по подключения из консоли Asterisk.
Так порты с присвоенными им номерами успешно зарегистрировались на АТС Asterisk. В еще одной открытой консоли Asterisk появились строки, что номера 101 & 102 успешно зарегистрированы:
[Mar 24 07:17:00] NOTICE[1002]: chan_sip.c:23945 handle_response_peerpoke: Peer ‘101’ is now Reachable. (57ms / 2000ms)
[Mar 24 07:17:00] NOTICE[1002]: chan_sip.c:23945 handle_response_peerpoke: Peer ‘102’ is now Reachable. (3ms / 2000ms)
ekzorchik@srv-host:~$ sudo asterisk -rx "sip show peers"
Name/username Host Dyn Forcerport Comedia ACL Port Status Description
101/101 10.7.8.127 D No No 5060 OK (4 ms)
102/102 10.7.8.127 D No No 5060 OK (5 ms)
2 sip peers [Monitored: 2 online, 0 offline Unmonitored: 0 online, 0 offline]
Отлично я могу звонить как с номера 101 на 102, так и наоборот.
Теперь двигаюсь дальше в понимании как настраивать и управлять Asterisk. На этом первая часть закончена, с уважением автор блога – ekzorchik.