AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 717098
Accepted
Lenne
Lenne
Asked: 2015-08-27 14:50:57 +0800 CST2015-08-27 14:50:57 +0800 CST 2015-08-27 14:50:57 +0800 CST

Asterisk gravar cdr agora

  • 772

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.

asterisk
  • 2 2 respostas
  • 991 Views

2 respostas

  • Voted
  1. Best Answer
    Lenne
    2015-08-28T02:08:05+08:002015-08-28T02:08:05+08:00

    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.

    SELECT TOP 10 a.cid_num, 
              a.eventtime 'begin', 
              b.eventtime 'answer', 
              c.eventtime 'end', 
              mk.maxid, 
              navn, 
              cdr.duration, 
              cdr.billsec, 
              cdr.disposition 
    FROM   asteriskcel a 
       LEFT JOIN asteriskcel b 
              ON b.eventtype = 4 -- ANSWER
                 AND b.linkedid = b.uniqueid 
                 AND b.linkedid = a.linkedid 
       LEFT JOIN asteriskcel c 
              ON c.eventtype = 2 -- CHANNEL_END
                 AND c.linkedid = c.uniqueid 
                 AND c.linkedid = a.linkedid 
       LEFT JOIN (SELECT RIGHT(telefon, 8) tlf, 
                         Max(id)           maxid 
                  FROM   t_kunder 
                  GROUP  BY RIGHT(telefon, 8)) mk 
              ON RIGHT(a.cid_num, 8) = mk.tlf 
       LEFT JOIN t_kunder k 
              ON mk.maxid = k.id 
       LEFT JOIN bit_cdr cdr 
              ON cdr.linkedid = a.linkedid 
    WHERE  a.eventtype = 1 -- CHANNEL_START
       AND a.linkedid = a.uniqueid 
       AND a.context = 'default' 
    ORDER  BY a.eventtime DESC  
    
    • 0
  2. arheops
    2015-09-07T15:03:41+08:002015-09-07T15:03:41+08:00

    Você pode usar o aplicativo forkCDR para soltar outro cdr no início

    • -2

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve