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

Остаются данные в astdb

0

При следующем диалплане не всегда данные после завершения звонка удаляются из astdb

[incoming]
exten => 100,1,Goto(queue,${EXTEN},1)

[queue]
exten => 100,1,Macro(queue,${CALLERID(num)},test)
exten => h,1,DBdeltree(${CHANNEL})

[macro-queue]
exten => s,1,Set(DB(${CHANNEL}/file)=${RECORD-DIR}/${ARG2}/${STRFTIME(${EPOCH},,%Y)}/${STRFTIME(${EPOCH},,%h)}/${STRFTIME(${EPOCH},,%d)}/${STRFTIME(${EPOCH},,%H.%M.%S)}_${ARG1})
exten => s,n,Set(MONITOR_FILENAME=${DB(${CHANNEL}/file)})
exten => s,n,Queue(${ARG2},t,90)
exten => e,1,Hangup
exten => h,1,StopMixMonitor
exten => h,n,Set(MONITOR_FILENAME=${DB_DELETE(${CHANNEL}/file)})
exten => h,n,System(mv ${MONITOR_FILENAME}.alaw ${MONITOR_FILENAME}_${MEMBERINTERFACE:4}.alaw)
exten => h,n,DBdeltree(${CHANNEL})
exten => h,n,Hangup

Когда я тестировал увидел следующее:

  1. При звонке, если звонящему ответили в очереди, то в macro-queue exten => h,n,DBdeltree(${CHANNEL}) отрабатывает нормально.
  2. При звонке, если звонящий не дождался ответа, то в контексте queue DBdeltree(${CHANNEL}) отрабатывает

Но в реальности некоторые данные(не все) почему-то остаются. Подскажите, пожалуйста, варианты почему так может происходить.

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

спросил 2012-03-04 09:27:23 +0400

rino Gravatar rino
1 1 1 1

Comments

А покажите лог, где чудодейственный h,1,... отрабатывает в макросе.

zzuz ( 2012-03-04 13:51:49 +0400 )редактировать

-- Executing [h@macro-queue:1] StopMixMonitor("IAX2/halo-5094", "") in new stack == MixMonitor close filestream -- Executing [h@macro-queue:2] Set("IAX2/halo-5094", "MONITORFILENAME=/opt/asterisk/record/local/test/2012/Mar/04/13.55.16200") in new stack -- Executing [h@macro-queue:3] System("IAX2/halo-5094", "mv /opt/asterisk/record/local/test/2012/Mar/04/13.55.16200.alaw /opt/asterisk/record/local/test/2012/Mar/04/13.55.16200_100.alaw") in new stack == End MixMonitor Recording IAX2/halo-5094 -- Executing [h@macro-queue:4] DBdeltree("IAX2/halo-5094", "IAX2/halo-5094") in new stack -- DBdeltree: family=IAX2, keytree=halo-5094 -- Executing [h@macro-queue:5] Hangup("IAX2/halo-5094", "") in new stack

rino ( 2012-03-04 14:16:35 +0400 )редактировать

хм. Звонить в очередь из макроса - странный ход конечно.

zzuz ( 2012-03-04 14:36:23 +0400 )редактировать

А какие можете предложить варианты, чтобы в имени файла указать номер ответившего агента+занести в таблицу cdr url файла записи(здесь второе опущено)?

rino ( 2012-03-04 15:07:13 +0400 )редактировать

Смотря . как заведены агенты в очереди.

zzuz ( 2012-03-04 17:31:18 +0400 )редактировать

очереди и ее члены находят в базе

rino ( 2012-03-04 19:39:10 +0400 )редактировать

Ну, meral уже сказал , что делать.

zzuz ( 2012-03-04 19:52:11 +0400 )редактировать

Если не сложно объясните, пожалуйста, в двух словах чем вам макросы не нравятся? Как я понимаю, прочитав документацию, они именно для подобных целей и служат.

rino ( 2012-03-04 19:54:56 +0400 )редактировать

Почитайте про Gosub + Return() .

zzuz ( 2012-03-05 00:54:23 +0400 )редактировать

1 Ответ

1

вариант номер 1 - систем отрабатывает не всегда.дальше не идет если ошибка.

+попробуйте попадать в очередь через Dial(local/${ARG1}@go_queue/n) и соответсвенно сделайте контекст с очередью.

вообщето обычно это делается немножко не так.

есть ведь табличка cdr. там путем нехитрых маркировок и манипуляций можно выяснить какое было имя файла и какой агент ответил.

дальше делаете скриптик который висит в фоне и переименовывает файлики раз в 15 минут например.я в такой скриптик еще и компрессию в mp3 долбавляю.

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

ответил 2012-03-04 18:46:44 +0400

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

Comments

Спасибо за подсказку о создании отдельного контекста. насчет искать в cdr это конечно сделать можно, но зачем делать отдельным скриптом, то что можно сделать на лету в астериске. А компрессия в mp3 происходит по cron'у на другом сервере, на который записи перещаются по cron'у каждый час с сервера с астериком

rino ( 2012-03-04 19:47:45 +0400 )редактировать

затем что так сделать будет ПРОЩЕ. и меньше глюков. а вот на лету с макросом и двумя контекстами может вообще фигня получится. ну или попробуйте DBdeltree(${CHANNEL}) вынести ВВЕРХ в первы приоритет.

meral ( 2012-03-04 23:39:53 +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 ленту новостей

Статистика

Задан: 2012-03-04 09:27:23 +0400

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

Обновлен: Mar 04 '12

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