Tools
1 2 3 4 5 6 7 8 9 |
командная строка 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
/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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
/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-адреса <pre class="lang:default decode:true " > Некоторые поставщики услуг для отправки своих вызовов могут использовать вместо протокола 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
Начинается самое интересное: процесс конфигурации. [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 ; <a href="http://www.voip-info.org/wiki/view/Asterisk+sip+tos">http://www.voipinfo.org/wiki/view/Asterisk+sip+tos</a> 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 ;Читаем <a href="http://www.voip-info.org/wiki/view/Asterisk+config+sip.conf">тут</a> и решаем, надо-ли вам это. domain=mydomain.com,default fromdomain=mydomain.com ;Здесь должны быть прописаны пиры до провайдеров. Все встречавшиеся мне SIP-провайдеры имеют стандартный шаблон секции конфига для Asterisk и предлагают именно его для прописывания в конфиги. Я так и сделал и у меня всё работает. Поэтому, я не буду приводить здесь их все, дабы не смущать никого. Покажу только мегафоновский шаблон для мультифона просто в качестве примера. register => tcp://номер@multifon.ru:пароль:номер@sbc.megafon.ru/номер~60 ; |
Это пример стандартного SIP-пира до провайдера сип-телефонии для входящей связи
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
[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. |
1 |
Voicemail.conf - остаеться практически по дефолту |
queues.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
[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 |
Запись звуков
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
При создании голосовых меню часто возникает необходимость использования собственных файлов озвучки. Звуковые файлы, используемые в 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. |