Estou escrevendo CDR para tabela mssql com cdr_adaptive_odbc. Isso funciona bem no sentido de que o registro é gravado após a chamada.
Mas eu gostaria de escrever um cdr_record quando a chamada chegar, antes de ser atendida/abortada.
Motivo: gostaria de adicionar uma função em nosso sistema de CRM: clique neste botão e veja o número de telefone da chamada recebida, onde o registro CDR está "tocando" ou algo assim. Em seguida, combine o número de telefone com os registros do cliente e mostre as informações do chamador na tela.
(não quero empurrar o número para o CRM, tem que ser um pull)
Eu tentei isso:
exten => 13,1,noop()
same => n,forkcdr()
same => n,Wait(2)
same => n,dial(SIP/L13)
same => n,hangup()
mas isso não cria um novo registro no banco de dados.
Em vez de usar o CDR, registro o CEL em uma tabela. Então posso ver a chamada iniciada (tipo de evento 1, CHANNEL_START) e ver se o linkedid tem eventos correspondentes com tipo de evento 4 ANSWER e eventos com tipo de evento 2 CHANNEL_END
Em seguida, encontro o último ID de cliente com esse número de telefone (um cliente pode se registrar várias vezes com o mesmo número) e mostro o nome correspondente.
Eu finalmente (só por diversão) mostro o tempo de conversação e a disposição do registro CDR.
Você pode usar o aplicativo forkCDR para soltar outro cdr no início