Сейчас я покажу как настроить asterisk на двух пользователей и подключить sip-trunk от sipnet-а.
Установку и запуск asterisk я показывал в прошлом посте, так что не будем возвращаться к этому.
Для начала перейдем в папку с конфигами asterisk и создадим директорию для своих конфиго, и сами файлы конфигов (не люблю все писать в базовых конфигах):
cd /etc/asterisk/
mkdir conf
touch conf/sip_trunk.conf
touch conf/sip_register.conf
touch conf/sip_users.conf
touch conf/extensions.conf
Теперь сделаем что бы asterisk читал от туда наши данные, для этого используется директива «#include«. В случае с extensions.conf проще не куда, просто в конец файла /etc/asterisk/extensions.conf добавляем строку:
#include conf/extensions.conf
А вот с sip.conf немного больше работы. Нам в файле /etc/asterisk/sip.conf нужно прописать целых три include. Итак приступим. Первым пропишем sip_trunk.conf, для этого перед блоком ganeral вставляем #include conf/sip_trunk.conf
В итоге должно получится так:
…
#include conf/sip_trunk.conf
[general]
…
Далее вставим конфиг для регистрации транков. Ищем в блоке [general] текст «OUTBOUND SIP REGISTRATIONS» и за ней вставим #include conf/sip_register.conf
В итоге должно получится так:
;——————— OUTBOUND SIP REGISTRATIONS —————
#include conf/sip_register.conf
И теперь в конец файла /etc/asterisk/sip.conf добавляем строку:
#include conf/sip_users.conf
Последний штрих и asterisk будет видеть наши файлы:
asterisk -rx ‘sip reload’ && asterisk -rx ‘dialplan reload’
Теперь перейдем непосредственно к конфигурированию.
Задача 1: Создание внутреннего номера.
Открываем файл conf/sip_users.conf и пишем в него следующее:
[100]
type=friend
secret=qwe
host=dynamic
context=out
dtmfmode=RFC2833
disallow=all
allow=ulaw
allow=alaw
nat=comedia
qualify=yes
Теперь разберем все по порядку:
- [100] — указываем внутренний номер;
- type — в данном случае (friend) разрешаются входящие и исходящие звонки;
- secret — пароль от номера;
- host — указывает с какого адреса регистрируется телефон (в данном случае с любого);
- context — собственно указывает по какому контексту будет идти вызов при исходящем вызове;
- dtmfmode — указываем dtmf на RFC2833;
- disallow — отключаем все голосовые кодеки;
- allow — подключаем указанные кодеки;
- nat — указываем является ли телефон за nat. В asterisk 11 убрали значение yes и вмесно него мы можем указать comedia или force_rport;
- qualify — проверка доступности номера (yes = 200 мс);
Теперь у нас есть внутренний номер, но толку от этого мало, необходимо asterisk научить звонить. Но сначала подключим линию от sipnet.
Задача 2. Подключение внешних линий (sipnet.ru).
Открываем файл conf/sip_trunk.conf и пишем следующее:
[sipnet]
secret=you_pass
defaultuser=you_sipnet_id
trunkname=sipnet
host=sipnet.ru
type=friend
context=income
insecure=invite
fromuser=you_sipnet_id
fromdomain=sipnet.ru
disallow=all
allow=alaw
allow=ulaw
allow=g729
nat=no
dtmfmode=rfc2833
Следующий шаг, это прописать регистрацию. Открываем conf/sip_register.conf и пишем:
register => you_sipnet_id:you_pass@sipnet.ru
Готово.
Задача 3. Учим asterisk звонить.
Открываем conf/extensions.conf и пишем:
[income]
exten => s,1,Dial(SIP/100,90,mt) ;Входящий звонок попадает на номер 100
same => n,Hangup ;Кладем трубку, если номер 100 не смог ответить
[out]
exten => _XXX,1,Dial(SIP/${EXTEN},90,mtT) ;Звонки между внутренними номерами
same => n,Hangup
;Звонок через sipnet. Звонок происходит через 7.
exten => _7X.,1,Dial(SIP/${EXTEN:1}@sipnet,90,mT)
same => n,Hangup
Разбор полётов. Структыра комманды Dial: Dial(type/identifier,timeout,options,URL)
Теперь немного об опциях команды Dial в этом примере
- 90 — время ожидания ответа;
- m — проигрывать музыку при ожидании;
- t — разрешает ответевшему пользователю перевести звонок;
- T — разрешает звонящему пользователю перевести звонок;
Теперь последний штрих, перезагрузка sip и dialplan:
asterisk -rx ‘sip reload’ && asterisk -rx ‘dialplan reload’
Все, на asterisk можно звонить и делать исходящие вызовы.
Profit! =)
Источник: http://miho.org.ua/?p=65 |