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

запись accountcode в cdr

0

Asterisk 13.17.0 во Freepbx Хочу писать в cdr имя агента, который ответил на вызов. Модифицировал контекст вызова очереди след образом:

exten => 500,n(qcall),Queue(500,${QOPTIONS},,${QAANNOUNCE},${QMAXWAIT},${QAGI},,set-accountcode,s,1,${QRULE},${QPOSITION})

Т.е. добавил опцию вызова Gosub когда оператор отвечает на звонок. Вот сам контекст, который вызывается очередью:

[set-accountcode]
exten => s,1,Set(CHANNEL(accountcode)=${MEMBERNAME})
exten => s,n,Verbose(<<<<<<<<<<<<<<set as ${MEMBERNAME}>>>>>>>>>>>>>>>)
exten => s,n,Return

В консоли видно как отрабатывает Verbose, показывая значение переменной MEMBERNAME (она не пустая), значит при ответе оператора контекст set-accountcode выполняется и переменная accountcode устанавливается. Но в базе cdr поле accountcode записи этого звонка пустое. Не записывается оно никак. Если же установить accountcode ПЕРЕД вызовом Queue, то в базу оно попадает корректно.

Как обновлять accountcode во время выполнения Queue?

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

спросил 2019-03-13 21:35:14 +0400

Merk Gravatar Merk
11 4 4

3 Ответа

0

Скорее всего после ForkCDR появится, тк каналы-то разные. Но account будет плодить файлы логов. Для подобных же записей существует userfield Еще можно можно после hangup в deadagi собрать все переменные в одну строку и засунуть в userfield.

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

ответил 2019-03-14 16:25:29 +0400

olegusp Gravatar olegusp
11 2

обновил 2019-03-14 16:26:59 +0400

0

У вас проблема не в диалплане. Диалплан нормальный.

Место плохое. В этом месте много чего не работает, скорее всего и CHANNEL

Ставьте в материнском канале.

А вообще правильно парсить queue_log

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

ответил 2019-03-14 09:35:56 +0400

meral Gravatar meral flag of Ukraine
23347 24 20 177
http://pro-sip.net/

Comments

Я же не знаю имя агента, который ответит на вызов, ДО вызова самой очереди. А когда очередь уже вызвал, в материнский канал как попасть?

Merk ( 2019-03-14 14:19:17 +0400 )редактировать

Ну варианты есть. Например, можно использовать SHARED и h-exten. Но проще queue_log

meral ( 2019-03-14 23:33:42 +0400 )редактировать
0
exten => s,1,Set(CDR(accountcode)=${MEMBERNAME})
ссылка удалить спам редактировать

ответил 2019-03-14 03:20:44 +0400

zzuz Gravatar zzuz flag of Russian Federation
7174 2 6 75
http://line24.ru/

Comments

Изначально так и делал, астериск ругается, что команда SET(CDR) устарела и предлагает использовать CHANNEL. В базу при этом ничего не пишется.

Merk ( 2019-03-14 06:20:35 +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 ленту новостей

Статистика

Задан: 2019-03-13 21:35:14 +0400

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

Обновлен: Mar 14 '19

Похожие вопросы:

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