Discador simples para Asterisk


Aprenda a automatizar o processo de discagem de chamadas no Asterisk


Fala galera do site, na paz.

O Asterisk tem uma forma simples para começarmos um poderoso discador para originar ligações, enviar a um atendente ou simplesmente enviar um audio do tipo informativo somente.

O arquivo mágico tem sua extensão “.call“, criando ele com dados da ligação q será executada + o atendedor dela vc a move para o diretório “/var/spool/asterisk/outgoing” e ele é imediatamente executado!

Os formatos do .call podem ser vários, segue ex:

Channel: SIP/9100

Callerid: Boris <123456789>

MaxRetries: 5

RetryTime: 5

WaitTime: 10

Context: default

Extension: 1234

Priority: 1

Vamos explorar os parâmetros possíveis:

Channel: DAHDI/1122334455

Canal utilizado para a chamada.  Pensando que esta é uma chamada originada pelo Asterisk, este parametro contem o endereço completo do canal que será considerado o originador da chamada.

 

CallerID:equivale a ${CALLERID(name)} < equivale a ${CALLERID(num)}>

CallerId do originador. Este parametro pode não funcionar corretamente se o formato não for respeitado.

 

MaxRetries: 10

Numero maximo de vezes que o asterisk irá  tentar chamar o originador antes de considerar que a chamada falhou.

Este parametro não considera a primeira tentativa, portanto se definido como 0, o asterisk tentará chamar apenas uma vez.

 

RetryTime: 60

Seguntos entre as tentativas de chamar o originador. O padrão é 300 segundos.

 

WaitTime: 30

Numero de segundos que o asterisk irá chamar o originador a cada tentativa. O padrão é 45.

 

Account: 22

Pra quem usa ferramentas de billing, este parametro equivale ao accountcode do ramal.

===========================================

Se a chamada for atendida, os próximos parametros definem com quem será conectado o originador

===========================================

Context: default

Do lado do destino, a chamada será processada como uma chamada normal, desta forma é necessário informar por qual contexto a chamada será executada.

 

Extension: 1099

Define o numero de destino da chamada.

——————————————–

Caso vc não vá entregar a ligação a um atendente, vc pode simplesmente executar alguma aplicação para tratar o canal já atendido (como enviá-lo a alguma fila), no caso passaremos somente uma mensagem como segue:

Application: Playback

Data: tt-monkeys

——————————————–

Priority: 1

Define a prioridade que o extension será processado dentro do contexto.

 

Set: CDR(userfield)=CALLBACK

Pode ser utilizado para definir uma variável de canal no processamento da chamada

Boa sorte!

60 comentários em “Discador simples para Asterisk”

  1. Prezado Jefferson, eu também gostaria de ter informações sobre esse sistema, saber se posso contratá-lo também para você desenvolver pra mim um discador automático para disparo com voip, com perguntas gravadas, menu de respostas por tecla, importação de mainlist e conexão com banco de dados?

    Att. Renato
    91 8733-2958
    91 3223-8575

  2. Boa tarde,

    Instalei o elastix versão 2.5 e gostaria de configurar uma discadora automática. Seria possível obter sua ajuda, ou esclarecimento mais detalhado de como realizar esta façanha? Não tenho $$ para isso, apenas estou desenvolvendo um trabalho para a faculdade e me vi apertado quando cheguei aqui. Desde já agradeço.

  3. Cara temos um receptivo redondo e que roda em alguns clientes queriamos fechar um lance contigo para definir um discador preditivo sem alguns vicios e erros que julgamos e derrepente fazer disso uma parceria de continuidade e não de apenas um desenvolvimento e pular fora.

  4. Caro Jefferson, estou utilizando o discador do Elastix. Eu quero lhe perguntar se você sabe o caminho para que o discador ligue para um segundo numero do cliente, caso o primeiro nao atenda ou esteja incorreto (falha).

    Obrigado, Edison

  5. Boa tarde Jefferson,

    Estou buscando uma solução de discagem automática utilizando Asterisk e encontrei seu post.

    Gostaria de saber se há possibilidade de você realizar um desenvolvimento deste tipo para nós e qual o custo e prazo.

    Hoje temos uma plataforma Asterisk com Debian que roda uma aplicação de telefonia para roteamento de chamadas.

    Este roteamento é baseado em duas tabelas que estão no MySQL. As chamadas são exclusivamente de saída.

    A questão é que por se tratar de chamadas para celular, para que o cliente não tenha problemas com as operadoras celulares, ele precisa gerar trafego de entrada nos chips. A solução seria fazer com que em determinados momentos do dia, chamadas fossem geradas automaticamente para os números dos chips e que os mesmos atendessem as chamadas em executassem uma mensagem curta, apenas para gerar o necessário trafego de entrada. Em outras palavras, fazer com que um canal celular ligue para o outro, e vice versa.

    Os canais celulares são externos, ou seja, não são placas no Asterisk e sim equipamentos externos conectados via SIP ou ISDN.

    O processo teria que ser automático, ou seja, em determinada hora do dia o processo se inicia sem intervenção humana.

    A tabela deve gerenciar algo como 200 números.

  6. Ola jefferson, tenho um discador em Delphi(AMI) + AGI, e gostaria de saber se com o arquivo .call ele me da o retorno de cada ligacao. exemplo OCUPADO(BUSY), SO CHAMA (NOASWER) etc?

    1. Boa tarde Ivan.

      Vc não terá esse tipo de retorno se tratando da 1ª perna da ligação (campo Channel) pq ainda não teve sequer um primeiro contato entende.

      Os status q vc mencionou se trata da 1ª perna tentando conexão com a 2ª, ou seja, 1 telefone tentando ligação com outro. No caso o arquivo.call está tentando contato com a 1ª perna ainda.

      Oq vc consegue neste estagio seria o seguinte:
      adicione a linha “Archive: yes” no arquivo.call

      a partir daí todos os bilhetes processados serão colocados em outgoing_done e terão uma info “Status: Completed” caso tenha conseguido contato com a 1ª perna ou “Status: Expired” quando alguma falha no canal ou não atendimento.

      Flws

  7. Ola Jefferson

    Otimo, vou incluir a linha Archive:yes

    Por favor me mande seu contato no meu email, preciso saber se pode me dar aulas particular (remoto).

    Obrigado

  8. Boa noite, Jeferson.

    Temos um projeto de integração e melhoria de processos em um cliente, dentre as integrações está uma com o Asterix. Gostaríamos de conversar contigo para avaliar o desenvolvimento de um discador web.
    Aguardo seu retorno.
    Obrigado.

  9. Você conseguiria criar um discador para o Elastix? Onde eu colocasse um arquivo .csv contendo os números telefônicos e o discador iniciaria as ligações em um horário pré programado, e nessas ligações reproduziria um áudio.

    Baixei o Ozeki Auto Dialer Studio, me serviu bastante, mas é pago e não é barato.

    Valeu

  10. Boa noite, Jeferson

    Gostaria de um contato para uma conversa sobre a possibilidade de configurar um servidor para serviços de telefonia. Grato.
    Marcelo

  11. Boa tarde Jeferson,

    Estou utilizando o modulo de callcenter do elastix porem estou com algumas dificuldades para retirar o mailing passado para uma campanha tendo que esperar que o mesmo acabe. Sabe me informar se tem como retirar um mailing colocado para uma campanha.
    Outro ponto que não encontrei solução é para a utilização de um 2° numero para contato com os clientes, por exemplo se o cliente tem 2 ou mais numeros como faço para importar fazendo com que ele ligue para um numero e caso nao ache ligue para o 2°?

    Obrigado

  12. Boa noite Jeferson.
    Estou fazendo um discador em Delphi e consigo discar via socket através do comando Originate e colocar na fila de atendimento e o asterisk devolve as ligações atendidas para os agentes conectados, ai eu preciso pegar a ligação atendida, ou seja, o telefone que foi discado e que o softphone recebeu e passar para o Delphi pesquisar no banco de dados para trazer o cliente na tela, e gostaria de saber se tem como via socket eu pegar o número do telefone transferido do asterisk para o agente, estou com essa dúvida, se puder me ajudar agradeço muito. Se puder me passar o seu contato para possíveis parcerias. Obrigado.

    1. Bom dia Daniel.

      Se sua aplicação mantém uma conexão aberta o tempo todo vc pode configurar um listener pra ação de answer, assim qnd receber essa ação (conterá o nº de A) seu app processará e fará oq for necessário.
      Particularmente acho mais trabalhoso, mas não vai requerer alterações no *.

      Mais simples (na minha opinião)
      Nos parâmetros do app Queue vc pode mandar executar uma macro qnd a ligação for atendida, essa macro fica responsável te enviar esses dados, vc só precisa definir qual meio.
      Até msm a macro pode (em vez de te retornar algo) executar direto o app q aparece na tela do atendente.

      Meus contatos estão no site abaixo, fique a vontade pra perguntar, ajudarei no q for possível.
      http://jpbx.com.br

      Flw

  13. Bom dia Jefferson,

    Estamos com um projeto de desenvolver um discador com Asterisk rodando em nuvem.

    Podemos conversar a respeito?

    Abraços.

  14. Bom dia,

    Possuo sistema Axterix com ligações saidas voip para 8 PAS.
    Preciso realizar chamadas ativas com discadora e importação de mailing para otimizar, tem como fazer ? Se sim podríamos conevrsar por tel p esclarecimentos…etc

    obrigado

  15. Boa tarde Jefferson, estou me aprofundando nos estudos em asterisk, e gostaria de saber como faço para que nesse script que você deixou neste post eu possa definir mais de um número de destino (ex. 3232-3232, 3131-0001 etc) e que o mesmo saia por um provedor VoIP.
    Obrigado.

    1. Bom dia Fabio td na paz.
      É simples, eu descrevi 1 único arq.call no post, ou seja, servirá pra 1 única ligação, significa q vc criará 1 arq.call pra cada numero de destino.
      Para a ligação sair pelo seu tronco de preferência é só descreve-lo na linha Channel do arq.call, ex:
      Seu tronco SIP está descrito em sip.conf desta forma [VOIP10]
      Sua linha Channel no arq.call será SIP/VOIP10/32323232
      A disposição.

      Flw

  16. Oi Jefferson, preciso de um click to call para ouvir a conversa de uma ligação que entra para um operador clicando apenas no telefone que aparece na linha da tela de monitoração das ligações sem precisar discar 555+ramal no softfone. Tem alguma coisa pra isso ?

    1. Olá Jorge, obrigado pelo contato. É facil de fazer isto q vc precisa (na minha plataforma JPBX é desta forma). Mas vc disse “tela de monitoração”, significa q vc usa alguma plataforma como Trixbox ou Elastix, caso positivo, lamento mas não trabalho com estes.
      Caso seja um Asterisk puro e vc criou alguma tela de monitoração acredito q posso ajudar ok.
      Att.

  17. Boa noite, tudo bem! Já venho desenvolvendo em cima do asterisk a muito tempo porém o que me falta é entender e saber lidar com os retornos das operadoras ao criar um discador, eu uso em meu projetos python/AMI, ao realizar a action originate é possivel pegar o status que a operadora me retorna ? como faria o controle de caixa postal ? essas duvidas me pegam de conforça ao criar uma discadora, doido para começar e implantar no meu projeto. Obrigado.

    1. Bom dia Felipe, na boa.
      Parceiro, no caso do retorno da operadora não acho q vc conseguirá obter no originate, mas sim “ouvindo” os eventos, em especial o retorno do Dial (nesta aplicação em especial vc tem 2 momentos, o Begin e o End/After). Muito bom q vc já use alguma biblioteca AMI, pq vai precisar, rs.
      Quanto ao controle da caixa postal vc tem q implementar a aplicação AMD (Answer Machine Detection).
      Espero ter ajudado.

      Flw

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios são marcados com *