Страница 1 из 1

Asterisk контекст приема звонка.

Добавлено: 18 май 2015, 15:13
fil23
Доброго дня.
Завожу оператора связи в SIP файле.

Код: Выделить всё

[general]
register=4631267:password@sip01.avantel.ru ;регистрируемся на стороне провайдера. IDuser:password@SIPserverProvaider
alwaysauthreject=yes    ;не выдаем детального сообщения причины почему нет подключения.

[Operator_SIP]
type=peer               ;указываем что при получении INVITE(вызов) будем сравнивать не имя поставщика сервисов а его IP адрес
host=sip01.avantel.ru   ;указываем от кого мы должны получать/отправлять INVITE
fromuser=4631267        ;имя пользователя для аутентификации
defaultuser=4631267
secret=password
context=incoming_calls  ;задаем контекс, на него же будем принимать звонки
dtmfmode=rfc2833        ;метод генерации тонального DTFM-кода
disallow=all            ;запрещаем все кодеки
allow=ulaw
allow=gsm               ;разрешаем кодек GSM
insecure=invite         ;
И в данной реализации приходящий вызов попадает в нужный мне контекст в диалплане.

Код: Выделить всё

[globals]
NUMBERGARS=4631267

[default]

[incoming_calls]
exten => ${NUMBERGARS},1,Set(TIMEOUT(digit)=2)
exten => ${NUMBERGARS},n,Verbose(1,Получен звонок с внешней линии)
exten => ${NUMBERGARS},n,Answer()                                                               ;отвечаем
exten => ${NUMBERGARS},n(met1),Background(/var/lib/asterisk/sounds/ru/soundgars/hellogars)      ;воспроизводим приветствие
exten => ${NUMBERGARS},n,WaitExten(3)                                                           ;ждем реакции
exten => ${NUMBERGARS},n,Goto(managers,s,1)                                                     ;если абанюга ни чего не нажал то переводим его на мэенеджеров
exten => ${NUMBERGARS},n,Hangup()


Во втором случае

Другой оператор связи.

Код: Выделить всё


[general]
register=2016823:password@95.172.154.104:5061 ;регистрируемся на стороне провайдера. IDuser:password@SIPserverProvaider
alwaysauthreject=yes    ;не выдаем детального сообщения причины почему нет подключения.
directmedia=nonat;

[Operator_SIP]
type=peer               ;указываем что при получении INVITE(вызов) будем сравнивать не имя поставщика сервисов а его IP адрес
host=95.172.154.104     ;указываем от кого мы должны получать/отправлять INVITE
port=5061
fromuser=2016823                ;имя пользователя для аутентификации
defaultuser=2016823
secret=password
context=incoming_calls  ;задаем контекс, на него же будем принимать звонки
dtmfmode=rfc2833        ;метод генерации тонального DTFM-кода
disallow=all            ;запрещаем все кодеки
allow=ulaw
allow=gsm               ;разрешаем кодек GSM
insecure=invite         ;
при таком же расскладе диалплана , только переменная NUMBERGARS=2016823. Астериск выдает что мол, все хорошо только я в контексте не вижу 's'.

Т.е. я понимаю что s - это start . Но почему в первом случае он норм работал как я и задумывал, а во втором он диктует мне свои условия? :)

Спасибо.

Re: Asterisk контекст приема звонка.

Добавлено: 18 май 2015, 16:09
ded
Потому что SIP слишком гибкий, и не существует для всех провайдеров Единого Закона Подключения клиентов по SIP. Каждый своё рисует.
Делаете так например:
register=2016823:password@95.172.154.104:5061/4952016823 ; регистрируете московский номер от Гарс Телеком 4952016823
register=4631267:password@sip01.avantel.ru/4954631267 ; регистрируете московский номер от Авантел 4954631267

и разруливаете пусть и в одном контексте, но по полю То:
то есть
[incoming_calls]
exten => 4952016823,1,Goto(DID1)
exten => 4954631267,1,Goto(DID2)