Рубрики
Asterisk

asterisk tools \ sip.conf \ extensions.conf

Tools

командная строка asterisk -rvv
rasterisk вот так мы попадаем в консоль asterisk
sip show peers - показать сипы
sip show settings - показать настройки
sip set debug on - показывать дебаг
sip show registry
sip reload - перезагрузить настройки сип
dialplan reload - перечитать конфиг диалплана extensions.conf
dialplan show - показать диалплан

sip.conf

/etc/asterisk/sip.conf
Дальше нас интересует файл sip.conf, где определяются серверы и клиенты SIP, 
с которыми будет дружить наш Asterisk. Каждый из них представлен в файле 
отдельным блоком, который начинается с оглавления, заключенного в 
квадратные скобки. Параметров в sip.conf довольно много, 
ограничимся лишь добавлением SIP-аккаунта:
[grinder]
type=friend
host=dynamic
; defaultip=192.168.1.200
username=grinder
secret=password
language=ru
nat=no
canreinvite=no
context=office
callerid=grinder <1234>
mailbox=1234@office
; перед использованием параметра allow следует отключить все кодеки
disallow=all
; порядок следования кодеков не имеет значения
allow=ulaw
allow=alaw

extensions.conf

/etc/asterisk/extensions.conf
После определения SIP-аккаунтов наши клиенты могут регистрироваться на сервере
Asterisk и совершать исходящие вызовы. Чтобы у них была возможность 
принимать звонки, следует обратиться к файлу extensions.conf, в котором 
описывается план набора (Dialplan), распределяющий звонки в системе. 
Здесь же указываются все разрешенные расширения.

[office]
include => default
exten => 1234,1,Dial(SIP/grinder,20)
exten => 1234,2,Voicemail(grinder)

Сопоставление имени пользователя, а не IP-адреса
Некоторые поставщики услуг для отправки своих вызовов могут использовать 
вместо протокола Session Initiation Protocol множество IP-адресов, 
требуя от вас создания отдельной учетной записи типа peer для каждого IP-адреса. 
Если известны не все IP-адреса, вероятно, придется сравнивать имена пользователей.
В этом случае потребуется лишь немного изменить формат описания поставщика сервисов.
Самое большое изменение, на которое следует обратить внимание, – то, 
что вам понадобится задать [заголовок_поставщика_услуг] как имя пользователя, 
которому ваш поставщик сервисов собирается направлять вызовы. 

Также мы изменили тип peer (равноправный) на friend (дружественный),
что с точки зрения Asterisk создает типы и user (пользователь), 
и peer, где тип user будет сравниваться раньше peer:

   [мой_уникальный_id]
   type=friend
   host=10.251.55.100
   fromuser=мой_уникальный_id
   secret=мой_секретный пароль
   context=incoming_calls
   dtmfmode=rfc2833
   disallow=all
   allow=gsm
   allow=ulaw
   insecure=invite

nano sip.conf

Начинается самое интересное: процесс конфигурации.
[general] 
context=default	 ;контекст по умолчанию 

allowguest=no	 ;никаких гостей, мы никого не ждём 

allowoverlap=no	 ;Этот параметр определяет разрешаем мы или нет передачу вызова с дополнительными цифрами. Мы – не разрешаем. 

alwaysauthreject=yes	 ;Этот параметр означает, что все ошибки для внешнего клиента выглядят одинаково – ошибка авторизации. Призван осложнять взлом АТС. 

useragent=Orgue de Barbaris	 ;Это – как мы представляемся у других. Я назвался по имени первого патефона, чтобы облегчить техподдержке провайдеров 
                                  поиск диалогов с моей АТС, т.к. периодически приходится с ними общаться. 

defaultexpiry=360	 ;Интервал обязательной перерегистрации клиентов. 

callevents=yes	 ;Это на будущее, чтобы клиент мог поиграть в управление music on hold 

limitonpeer=yes	 ;Считаем исходящие и входящие вызовы пиров вместе. 

tcpenable=yes	 ;Разрешаем TCP протокол для SIP. rtptimeout=60	 ;Сколько времени клиент может не откликаться, прежде чем будет кикнут из системы. 

language=ru	 ;Язык системы. Используется для голосового меню. 

bindport=5060	 ;Порт по умолчанию. Можно изменить для усложнения вычисления и взлома АТС, но решение спорное. 

bindaddr=0.0.0.0	 ;у меня стоят нули, т.к. АТС имеет два интерфейса и на обоих висят клиенты. 

srvlookup=yes

tos_sip=cs3	 ; http://www.voipinfo.org/wiki/view/Asterisk+sip+tos tos_audio=ef 

disallow=all	 ;сначала запрещаем все кодеки 

allow=alaw	 ;затем, разрешаем только те, что хотим использовать. Порядок значения не имеет. 

allow=g729

allow=g723

allow=ulaw 

dtmfmode=rfc2833	 ;На Asterisk-ах рекомендуется ставить info, но мой итальянский провайдер настоял на rfc. 

rtpholdtimeout=300

rtpkeepalive=5 

canreinvite=no	 ;Этот параметр запрещает клиентам общаться напрямую. 
Общение происходит только через сервер. У меня это сделано так потому что 
мобильные клиенты используют платные клиенты с протоколом g.729а, а стационарные 
сидят на бесплатных клиентах без оного. Поэтому, я предпочёл напрячь сервер 
транскодингом alaw<->g.729a на лету в пользу качества связи для мобильных клиентов. 
Тем более что Core i7-930 вообще не замечает этой нагрузки. 

externip=xxx.xxx.xxx.xxx	 ;Указываем наш внешний IP. Параметр нужен вообще-то, если только Asterisk прячется за NAT, но у меня он есть. Нехай будет. 

allowexternaldomains=yes	 ;Читаем тут и решаем, надо-ли вам это. 

domain=mydomain.com,default	 fromdomain=mydomain.com ;Здесь должны 
быть прописаны пиры до провайдеров. Все встречавшиеся мне SIP-провайдеры имеют
стандартный шаблон секции конфига для Asterisk и предлагают именно его для 
прописывания в конфиги. Я так и сделал и у меня всё работает. Поэтому, я не 
буду приводить здесь их все, дабы не смущать никого. Покажу только 
мегафоновский шаблон для мультифона просто в качестве примера. 

register => tcp://номер@multifon.ru:пароль:номер@sbc.megafon.ru/номер~60 ;

Это пример стандартного SIP-пира до провайдера сип-телефонии для входящей связи

[multifon]	;это тот же пир, только уже для исходящей связи
type=peer
secret=пароль
username=номер
host=sbc.megafon.ru
port=5060 
insecure=port,invite 
call-limit=1
context=incoming 
canreinvite=no 
qualify=yes 
transport=tcp

dtmfmode=inband ;А теперь – самое интересное. Клиентов у нас довольно много, 
поэтому, чтобы не прописывать каждому одно и то же, мы используем шаблоны. 

Выглядит это так: 
[defaults](!) canreinvite=no	 ;голосовой трафик только через сервер
disallow=all
allow=alaw
allow=g729
allow=g723 [peer](!,defaults)
type=peer
host=dynamic	 ;разрешаем цепляться откуда угодно 
qualify=yes	 ;постоянно держим связь с клиентом 
nat=yes	         ;предполагаем, что клиент может быть за NAT 
call-limit=1	 ;ограничиваем кол-во одновременных звонков 
busylevel=1	 ;сообщаем, когда отбивать с сигналом “занято” 
rtpkeepalive=5	 ;интервал в секундах для пинга клиента.

[ext1000](peer) 
secret=secretsecretsecret 
[ext1001](peer) 
secret=secretsecretsecret 
[ext1002](peer) secret=secretsecretsecret ;Если нам надо что-то изменить 
или добавить, то выглядеть это будет так: 
[ext1101](peer) 
secret=secretsecretsecret 
transport=tcp	 ;разрешаем отдельному пиру SIP по TCP.
Voicemail.conf - остаеться практически по дефолту

queues.conf

[general] 
persistentmembers = yes	 ;очередь постоянная, никто никуда не выходит
autofill = yes ;просто так надо
autopause = no	 ;если мембер не отвечает, то ему всё-равно звонить 
monitor-type = MixMonitor ;Пример одной очереди
[1100] ;екстеншн очереди 
strategy = ringall	 ;стратегия обзвона группы – звонят все сразу 
eventwhencalled = yes	 ;прилада для внешних мониторов типа Fop2 
ringinuse = no	 ;занятых не дёргаем 
timeout = 20	 ;таймаут 
retry = 1	 ;повторный вызов всей группы через 1 секунду 
wrapuptime = 0	 ;какая передышка у агента очереди после звонка (сек) 
maxlen = 0	 ;сколько людей в очереди на ответ. 0=бесконечно 
;ниже – просто список мемберов очереди 
member => SIP/2222 
member => SIP/1101
member => SIP/1102
member => SIP/1103
member => SIP/1104
member => SIP/1105
member => SIP/1106
member => SIP/1107 
member => SIP/1108
member => SIP/1109
member => SIP/1110

Запись звуков

При создании голосовых меню часто возникает необходимость использования 
собственных файлов озвучки. Звуковые файлы, используемые в Asterisk, 
хранятся в формате gsm. Наиболее просто и быстро записать такие файлы можно 
с помощью самого Asterisk. Для этого в номерном плане можно создать 
специальный контекст со следующим содержанием:
[gsm-record]
exten => 150,1,Wait(2)
exten => 150,2,Record(testrecord:gsm)
exten => 150,3,Wait(2)
exten => 150,4,Hangup
exten => 151,1,Playback(testrecord2)
exten => 151,2,Wait(2)
exten => 151,3,Hangup
Позвонив на номер 150, мы сможем наговорить необходимый текст, который 
будет сохранен в стандартной папке звуков Asterisk (/var/lib/asterisk/sound) 
в файле ivrrecording.gsm. Прослушать содержимое этого файла можно, 
позвонив по номеру 151.