domingo, 31 de outubro de 2010

Asterisk 1.4 + MySQL - Como armazenar o uniqueid na tabela CDR

Essa semana me deparei com um "problema", que do meu ponto de vista é algo totalmente improdutivo (e, no mínimo, desnecessário).

Encontrei uma instalação do Asterisk que não gravava dados no campo uniqueid da tabela CDR do DB MySQL, e, resolver tal situação me tomou um tempo precioso.

Depois de muita pesquisa consegui encontrar a solução, que é bastante simples, mas que, do meu ponto vista, é injustificável.

Para quem não sabe, o suporte ao uso do CDR em um banco de dados MySQL é disponibilizado pelo pacote asterisk-addons. Não sei se por um erro, ou por uma decisão consciente dos desenvolvedores (que me parece ser uma das mais equivocadas que já vi), é preciso alterar o código fonte desse pacote para habilitar o suporte ao armazenamento do uniqueid na tabela.

Então, se você também está passando por situação semelhante, mãos à obra:
  • Vá no diretório dos fonte do asterisk-addons e edite o arquivo cdr_addon_mysql.c;
  • Adicione a linha #define MYSQL_LOGUNIQUEID no início do arquivo;
  • Compile o asterisk-addons e voilá;
Pesquisei nos fontes e percebi várias linhas se referindo a tal constante, mas a mesma não era declarada em lugar algum, o que fazia com que o suporte ao recurso não fosse habilitado.

Não achei uma explicação para tal comportamento, que, pelo que pude observar já existe há mais de 3 anos. Se alguém souber o motivo disso, por favor deixe seus comentários.

4 comentários:

  1. Bah tche!
    Tava me quebrando pra descobrir qual era o problema. Não é que funcionou mesmo!? huehue

    Isso não tem explicação, só pode ser um erro de programação mesmo.

    Valeu pela dica!

    Att.
    Ronaldo Sacco
    contato@ronaldosacco.com.br

    ResponderExcluir
  2. Blz tchê.

    Bom saber que ajudou.

    []s

    ResponderExcluir
  3. Caro Marcelo, esta instalação seria com a distro Meucci da Digivoice?

    Estou com o mesmo problema. Ainda não testei sua solução, vou fazer, mas queria perguntar outra coisa.

    Como eu poderia fazer para armazenar também no campo userfield o nome do arquivo de audio produzido pelo mixmonitor na gravação?

    ResponderExcluir
    Respostas
    1. Não, era um Asterisk puro, mas pode ser que ocorra no Meucci se este utilizar o Asterisk versão 1.4.

      Com relação ao nome do arquivo, normalmente uso o uniqueid mais extensão, o que é bastante eficiente, pois este dado já é armazenado no DB.

      []s

      Excluir