Вы здесь

Получение состояний АТС Астериск в режиме реального времени

sip show inuse

core show channels concise

в cdr добавляю поле start.

контекст пишу вот так

exten => _X.,1,Set(CDR(start)=0)
exten => _X.,2,Wait(0.2);это надо от тупых звонков который дисконектяться сразу после конекта.
exten => _X.,n,Set(CDR(start)=1)
exten => _X.,n,ResetCDR(vw)
exten => _X.,n,Set(CDR(start)=0)

получается две записи. одна на старт одна на конец разговора. соответвенно собрать надо те где старт есть а стопа нет. или собрать все, и удалять скриптом старты по появлению стопа(если по первому варианту вы не можете sql составить).

также можно через AMI/core show channels, или слушать евенты. но это менее надежно

 

0

вообще в новых версиях астериска есть такая штука

https://wiki.asterisk.org/wiki/display/AST/Channel+Event+Logging+(CEL)

в место нее можете использовать AMI и внешнюю программу - более сложный, но более гибкий способ. Либо в диалплане в нужных местах вставить сохранение в базу нужной информации.