#real-time #asterisk
#в режиме реального времени #asterisk
Вопрос:
Поскольку я использую Realtime, кажется, что callfiles не работают должным образом. При выполнении файла вызова телефон звонит, как и ожидалось. Но asterisk (версия 1.6) вешает трубку сразу после ответа на вызов.
Мой файл вызовов:
Channel: SIP/1
Callerid: <123>
Context: test
Extension: 100
Мои расширения в реальном времени:
cont|ext|pr|App
---- --- - ---------
test|100|1|Answer
---- --- - ---------
test|100|2|SayNumber(123)
Сообщение об ошибке в командной строке:
Channel 'SIP/1-0000001' sent into invalid extension 's' in context 'default', but no invalid handler
Запрограммировано, что, когда я меняю расширение в таблице выше со «100» на «s», все работает нормально.
У кого-нибудь есть подсказка?
Обновить:
К сожалению, также mv
команда не решает проблему. (Я также добавил дополнительную строку в свой файл вызовов Priority: 1
.)
Вот файлы:
extconfig.conf
sipusers => mysql,general,sip_users
sippeers => mysql,general,sip_users
extensions => mysql,general,extensions
sip.conf
[general]
language=en
bindport=5060
context=default
canreinvite=no
tos=throughput
nat=yes
Ответ №1:
Ну, я не знаком с Realtime, но публикация сгенерированных файлов sip.conf и extensions.conf была бы полезной (по крайней мере, соответствующих разделов).
Однако мое первое предположение заключается в том, что вы используете cp для копирования файлов вызовов для asterisk, что не является атомарной операцией (файлы копируются построчно), что может привести к тому, что asterisk выполнит не совсем полный файл вызовов.
Используйте команду mv, которая является атомарной операцией и гарантирует, что asterisk работает со 100% полным файлом вызовов.
Причина, по которой я подозреваю, что это проблема, заключается в том, что ваш файл вызова корректен, но если он начинает выполняться только с двух строк, по умолчанию любой входящий вызов будет отправлен с расширением ‘s’ контекста по умолчанию, а если он считывается с третьей строки, он перейдет к расширению ‘s’ вашего тестового контекста.
Странная ошибка, чтобы быть уверенным.