Назад | Перейти на главную страницу

Сервер Asterisk - невозможно совершать последовательные исходящие вызовы

Одна из проблем, с которыми я сейчас сталкиваюсь, заключается в том, что если я последовательно обращаюсь к серверу asterisk с того же телефона, он может отключиться. Asterisk регистрирует следующее сообщение:

[Aug 14 10:24:56] NOTICE[20537]: chan_sip.c:19477 handle_request_invite: Failed to authenticate device <sip:4165559999@222.222.222.222:5070>;tag=781ab8fb-co19342-INS016

Как будто любой телефон в мире может только один раз позвонить на сервер asterisk. Тогда мне нужно сделать

> sip reload

с терминала Asterisk, чтобы они снова позвонили.

Я также могу выполнить команду оболочки, чтобы перезагрузить sip

звездочка -rx 'sip reload'

Но когда я добавляю эту команду в crontab для запуска каждую минуту, она не работает. Команда оболочки работает, только если я запускаю ее вручную.

Может ли кто-нибудь сказать мне, как я могу разрешить вызывающим абонентам звонить на мой сервер asterisk более одного раза? Вот мои sip.conf и extensions.conf (все остальные файлы не затронуты).

sip.conf

[general]
register => mysipuser:mysippass@localhost:5071
context=default

[mysipuser]
type=friend
secret=mysippass
username=mysipuser
host=111.111.111.111
port=5071
fromuser=mysipuser
canreinvite=no
insecure=very
qualify=2000
dtmfmode=inband
nat=no
context=default

extension.conf

[default]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(vm-extension)
exten => s,n,WaitExten()

exten => 0011,1,Goto(outbound,s,1)

exten => 11,1,Dial(SIP/mysipuser/5555555555) ;calls 555-555-5555
exten => 11,n,Hangup ; this line never gets executed

exten => 77,1,Dial(SIP/mysipuser/1111111111) ;calls 111-111-1111
exten => 77,n,Hangup ; this line never gets executed


[outbound]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(vm-extension)
exten => s,n,WaitExten()

exten => _NXXNXXNXXX,1,Dial(SIP/mysipuser/${EXTEN})
exten => _NXXNXXNXXX,n,Hangup

дополнительные детали Я заметил, что каждый раз, когда я выполняю команду Dial () в файле extensions.conf, ни одна из строк после нее не запускается, даже если обе стороны вешают трубку. Так например:

exten => 11,1,Dial(SIP/mysipuser/5555555555)
exten => 11,n,System(echo 'hello world'>test.txt) ; this line and any line below do not fire
exten => 11,n,Hangup

Код перестает выполняться после команды Dial () ... это может объяснить, почему я не могу звонить последовательно ... это потому, что линия все еще активна?

Это мой новый файл extensions.conf, который, похоже, решил проблему.

[default]
exten => s,1,System(asterisk -rx 'sip reload') ; hack to force sip reload
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(vm-extension)
exten => s,n,WaitExten()

exten => 0011,1,Goto(outbound,s,1)

exten => 11,1,Dial(SIP/mysipuser/5555555555,30,g) ;calls 555-555-5555
exten => 11,n,Goto(closechannel,s,1)

exten => 77,1,Dial(SIP/mysipuser/1111111111,30,g) ;calls 111-111-1111
exten => 77,n,Goto(closechannel,s,1)


[outbound]
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(vm-extension)
exten => s,n,WaitExten()

exten => _NXXNXXNXXX,1,Dial(SIP/mysipuser/${EXTEN})
exten => _NXXNXXNXXX,n,Hangup

[closechannel]
exten => s,1,System(asterisk -rx 'sip reload')
exten => s,n,Hangup()

Итак, три внесенных мной изменения - это добавление exten => s,1,System(asterisk -rx 'sip reload') заявление, [closechannel] контекст, и ,30,g к команде Dial (). Команда System вызывает перезагрузку sip каждый раз, когда кто-то пытается дозвониться. ,g флаг сообщает asterisk продолжить выполнение кода после отключения вызывающих сторон.

Кажется, что это работает "в большинстве" случаев.