Пожалуйста, войдите здесь. Часто задаваемые вопросы О нас
Задайте Ваш вопрос

Проблемы с Record()

0

Есть такой диалплан приведу кусок

exten => s,n,Record(/var/lib/asterisk/sounds/records/${unique}.wav,,,k)
exten => s,n,System(/etc/asterisk/s/timeend.py ${unique})
exten => s,n,Hangup()

exten => h,1,System(/etc/asterisk/s/hangup.py ${unique})
exten => h,n,System(/etc/asterisk/s/timeend.py ${unique})
exten => h,n,System(/etc/asterisk/s/convert.py ${unique})
exten => h,n,Hangup()

Но почему то после того как кладу трубку, record продолжает висеть в логе и больше ничего не происходит, то есть h экстеншн не выполняется.

Подскажите как решить проблему, совсем нет идей что случилось.

удалить закрыть спам изменить тег редактировать

спросил 2013-09-08 22:27:12 +0400

godlike Gravatar godlike flag of Ukraine
814 91 20 54

Comments

'k' : keep recorded file upon hangup

zzuz ( 2013-09-09 10:43:14 +0400 )редактировать

но мне нужно что бы файл сохранялся не по нажатию решетки а когда кладут трубку

godlike ( 2013-09-09 13:02:24 +0400 )редактировать

2 Ответа

0

диалплан - венец дебилизма.

по теме - смотрите что происходит с каналом с другой стороны.

ссылка удалить спам редактировать

ответил 2013-09-09 01:49:30 +0400

meral Gravatar meral flag of Ukraine
21228 23 18 169
http://pro-sip.net/

Comments

А в чем дибилизм подскажите, может научусь как надо. С другой стороны это как? На "другую" сторону я все равно никак повлиять не смогу?

godlike ( 2013-09-09 01:53:12 +0400 )редактировать

ну как минимумне три раза запускать процесс.. что нельзя все в одном файлике сделать? нормально использовать диалплан или на крайняк fastagi. про другую сторону - мне откуда знать. я даже не знаю что там с другой стороны.

meral ( 2013-09-09 02:03:49 +0400 )редактировать

ну три скрипта там потому что они в других местах по отдельности используются, как дойду до оптимизации соберу в один, пока нужно что бы просто заработало. Про другую сторону выглядит как зарегистрированный транк c прямым номером на который я звоню с телефона, со скайпа или любой другой связи, результат один и тот же, начинается запись record, я говорю что нибудь, кладу трубку но диалплан никуда не двигается, продолжает висеть record

godlike ( 2013-09-09 02:10:02 +0400 )редактировать

нашел закономерность, перед Record() я запускаю Playback() с проигрыванием приветствия, так вот если он не находит файл == не может приветствие проиграть то все отрабатывает отлично, после записи кладется трубка и скрипты отрабатывают. Если же Playback отыгрывает то происходит так проблема о которой я пишу. Как такое может быть?

godlike ( 2013-09-09 02:24:30 +0400 )редактировать

даже если в момент пока играется Playback кладу трубку диалплан все равно висит, кстати в дебаге во время проигрывания Playback заметил строку Really destroying SIP dialog '6e375f792ce6a5b05fe2324677a2f1f9@192.168.168.210' Method: REGISTER Может это быть причиной?

godlike ( 2013-09-09 02:31:04 +0400 )редактировать

sip канал ложится?

meral ( 2013-09-09 09:57:50 +0400 )редактировать

может быть, но почему? Может это происходить из-за Playback?

godlike ( 2013-09-09 13:10:17 +0400 )редактировать

попробуйте /usr/sbin/asterisk -vvvvvv -g -dddddd -c

octopas ( 2013-09-09 16:57:04 +0400 )редактировать

попробовал, ничего нового не показало, а вот сип дебаг показывает Really destroying SIP dialog как раз перед тем как срабатывает эта проблема, может быть в этом дело? Как можно этого избежать?

godlike ( 2013-09-09 17:08:33 +0400 )редактировать

если у вас транк НЕ ложит сип канал, то так и будет. в сип дебаге должен приходить BYE.

meral ( 2013-09-09 17:46:03 +0400 )редактировать

мне кажется проблема в том как сервер работает с транком, подключил другой транк от другого провайдера, во первых возникла та же проблема что и с первым (думал проблема в транке) не всегда на него проходит входящий звонок, иногда нужно сделать reload после чего звонок начинает проходить, через время опять повторяется хотя sip show registry показывает что все ок. Сейчас подключил другой транк и там тоже самое, плюс проблема с хэнгапом. На транк звоню с мобильного.

godlike ( 2013-09-09 17:50:11 +0400 )редактировать

то есть транк не делает hangup? Есть причины почему так может происходить на двух разных транках?

godlike ( 2013-09-09 18:06:26 +0400 )редактировать

вы у меня спрашиваете почему? я не знаю что вы там накрутили. смотрите sip debug

meral ( 2013-09-09 23:03:32 +0400 )редактировать
0

Добавьте Answer перед Record()

ссылка удалить спам редактировать

ответил 2013-09-09 06:35:12 +0400

switch Gravatar switch
8334 11 7 91
http://lynks.ru/

Comments

ансвер идет в самом начале логики диалплана, имеет ли смысл ставить еще один? Ну и сообщение то пишется в рекорд, проблема в том что после хэнгапа диалплан не проваливается в экстеншн h. Как я написал в коментах ниже обнаружил такую фигню, перед Record() я запускаю Playback() с проигрыванием приветствия, так вот если он не находит файл == не может приветствие проиграть то все отрабатывает отлично, после записи кладется трубка и скрипты отрабатывают. Если же Playback отыгрывает то происходит так проблема о которой я пишу

godlike ( 2013-09-09 13:09:15 +0400 )редактировать

ну мы же не в курсе что у вас ансвер уже есть. Вообще в хангап он не проваливается по одной простой причине: хангап экстен в контексте выполнится только если в контексте есть Dial. У вас хангап отрабатывает тот, где был Dial, если он был конечно. Я так думаю следует сделать Dial(LOCAL/....), где воспроизвести или записать файл. Но лучшим вариантом будет накарябать нормальный AGI, а учитывая что у вас там много скриптов - сделать полноценное AGI приложение. Тем более что вы используете перл и для перла есть хорошая AMI библиотека. В AGI без проблем отрабатываются такие моменты. По крайней мере я не заметил проблем.

switch ( 2013-09-09 14:10:55 +0400 )редактировать

я использую питон, вы имеете ввиду писать файл с помощью AGI?

godlike ( 2013-09-09 15:10:25 +0400 )редактировать

Я предлагаю вам переписать ваш диалплан целиком на питоне с использованием AGI. Это не так сложно как кажется, я писал на PHP и мне показалось это даже удобнее во многом чем стандартный диалплан, хоть и порог входа заметно выше.

switch ( 2013-09-09 16:06:15 +0400 )редактировать

я сейчас думаю с помощью этого https://wiki.asterisk.org/wiki/display/AST/Asterisk+11+AGICommand_record+file писать файл, там же и сделаю все запросы которые должны были делаться по h

godlike ( 2013-09-09 16:07:48 +0400 )редактировать

правильно думаете. Попробуйте в любом случае. В AGI астериск немного не так работает как мы привыкли в диалплане. Он тупо исполняет то, что ему говорят.

switch ( 2013-09-09 16:09:23 +0400 )редактировать

проблема абсолютно та же, пробую писать через AGI файл пишется но когда кладу трубку запись продолжает висеть, прекращается только по значению таймаута

godlike ( 2013-09-09 16:55:59 +0400 )редактировать

Разве никаких изменений в CLI нет когда трубку кладешь? как подключен к городу?

switch ( 2013-09-09 17:07:28 +0400 )редактировать

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

godlike ( 2013-09-09 17:17:26 +0400 )редактировать

а если с внутреннего номера в этот контекст позвонить?

switch ( 2013-09-09 17:18:25 +0400 )редактировать

попробовал два раза, оба раза все прекрасно отработало. В чем же тогда проблема? В транке?

godlike ( 2013-09-09 17:27:35 +0400 )редактировать

видимо да.

switch ( 2013-09-09 17:30:21 +0400 )редактировать

попробовал подключить другой транк, от другого провайдера, такая же фигня :(

godlike ( 2013-09-09 17:38:18 +0400 )редактировать

Нужно смотреть в CLI, что там происходит. А Dial(LOCAL/...) пробовал?

switch ( 2013-09-09 17:42:58 +0400 )редактировать

Не совсем понял как через Dial(LOCAL/) писать файл, можно подробнее?

godlike ( 2013-09-09 17:45:34 +0400 )редактировать

Ваш ответ

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!
[скрыть предварительный просмотр]

Закладки и информация

Добавить закладку

подписаться на rss ленту новостей

Статистика

Задан: 2013-09-08 22:27:12 +0400

Просмотрен: 927 раз

Обновлен: Sep 09 '13

Проект компании "АТС Дизайн"
Asterisk® и Digium® являются зарегистрированными торговыми марками компании Digium, Inc., США.
IP АТС Asterisk распространяется под лицензией GNU GPL.