Страница 1 из 1

AsteriskNow (aster 11) DID в CDR как чтобы он был везде

СообщениеДобавлено: 03 дек 2018, 21:26
svd
Дня доброго всем.

Для решения задачи учёта, разбираю CDR с Asterisk.
Во всех маршрутах звонок в конечном итоге попадает в очередь (одну или другую, это не принципиально), но вот что мешает.
Запись CDR в которой звонок "попадает в очередь" DID указан, далее идут 1-Н записей о вызове очередью агентов, в которых DID-пуст.

попробовал так в extension_custom.conf
[from-pstn-custom]
exten => _X.,1,Set(__ORIGINAL_DID33=${EXTEN})
exten => _X.,2,Set(CDR(DID)=${EXTEN})
exten => _X.,3,Set(CDR(accountcode)=${EXTEN})
exten => _X.,n,goto(ext-did,${EXTEN},1)

переменная канала ORIGINAL_DID33 при звонке очереди агентам сохраняется, я её читаю в другом месте потом.
пробовал добавить
[ext-queues-custom]
exten => _.,1,Set(CDR(DID)=${__ORIGINAL_DID33})
exten => _.,n,goto(ext-queues,${EXTEN},1)

но что-то пошло не так.
не понимаю как правильно сделать.
https://yadi.sk/i/y3qSm37bSDOM6Q
Изображение

может есть путь проще?
может есть какой то макрос который осуществляет запись в адаптив_одибиси и можно в него дописать это?
как правильно описать контекст [ext-queues-custom]?

Re: AsteriskNow (aster 11) DID в CDR как чтобы он был везде

СообщениеДобавлено: 03 дек 2018, 22:47
ded
Журнал CDR обычно пригоден для анализа работы офисной УАТС, и не годится для анализа работы Call center ввиду тех самых недостатков, о которых вы пишете. Поэтому в современных Астериск системах два журнала о статистике вызовов: CDR и CEL (Call event logger). Последний более точно отражает суть рабты агентов (операторов) в очередях, для его визуализации используются другие инструменты, например - AsterNIC.

Re: AsteriskNow (aster 11) DID в CDR как чтобы он был везде

СообщениеДобавлено: 04 дек 2018, 06:26
svd
по CEL я учту, я видел что использует решение helloasterisk, про asternic спасибо. посмотрю его.

но есть ли мысли как подправить этот изъян?
может есть какой то макрос который осуществляет запись в адаптив_одибиси и можно в него дописать это?
как правильно описать контекст [ext-queues-custom]?

отдельно взятый заказ у меня выполнен на 99% за исключением информации о DID в принятых звонках.

я не до конца разобрался в какой момент и какой функцией вызывается сама запись в CDR. Я бы поправил этот кусок диалплана и записал бы значение примерно так
exten => _.,1,Set(CDR(DID)=${__ORIGINAL_DID33})

Или это в принципе не возможно подправить?

Re: AsteriskNow (aster 11) DID в CDR как чтобы он был везде

СообщениеДобавлено: 04 дек 2018, 11:53
ded
А у вас есть такая переменная - ${ORIGINAL_DID33} ?
Посмотрите прохождение вызова в CLI, он ныряет в разные макросы и subroutine, выпрыгивает и опять в другие макросы. Запись в CDR делается по окончании разговора, это как-бы завершённая транзакция, в ней уже изменять ничего нельзя, поля там readonly.
Поэтому модифицировать можно, в macro-hangup. Который дополняется, изменяется, и помещается в extensions_override_freepbx.conf
PROFIT!

Re: AsteriskNow (aster 11) DID в CDR как чтобы он был везде

СообщениеДобавлено: 20 дек 2018, 09:19
svd
Знак "неравно" как пишется?
так?
<>

Код: выделить все
exten => s,1,GotoIf($["${CDR(recordingfile)}" = ""]?endmixmoncheck)
;ORIGINAL_DID33 write
exten => s,2,GotoIf($[CDR(DID)<>$__ORIGINAL_DID33]?4)
exten => s,3,Set(CDR(DID)=$__ORIGINAL_DID33)
exten => s,4,NooP($__ORIGINAL_DID33)
exten => s,5,Noop(============================================================)

Re: AsteriskNow (aster 11) DID в CDR как чтобы он был везде

СообщениеДобавлено: 20 дек 2018, 11:21
ded
$[CDR(DID) != $__ORIGINAL_DID33]?