magnussolution / magnusbilling7

MagnusBilling is a fast, secure, efficient, high availability, VOIP Billing.
https://www.magnusbilling.org
GNU Lesser General Public License v3.0
181 stars 106 forks source link

magnusbilling não transfere chamada atendida para ramal que está na queue por ramal que está na queue (issue reinserido) #319

Closed trclamar closed 5 years ago

trclamar commented 5 years ago

feita a instalação miníma do centos 7 feita a atualização com yum -y update feita a instalação com os comandos conforme site magnusbilling.org menu INSTALLATION feita a configuração para ip local (com firewall e nat) conforme vídeo "How to Install MagnusBilling on Google Cloud using CentOS 7" do site magnusbilling.org menu DOCUMENTATION feita a configuração do tronco e did de entrada did de entrada atendendo como chamada sip e transfere normalmente did de entrada colocado como agente de fila, destino do did alterado para a fila, ao atender não consegue transferir, no cli do asterisk aparece: -- Caller hung up before dial.

anexando arquivo com a saída do asterisk-cli

mbilling-test-transfer-call.txt

trclamar commented 5 years ago

vou dar mais informações, debugando o código php a chamada vai no mbilling.php que checa se é did, de lá vai para o didagi que verifica o modo e seta o type para queue e o queueagi simplesmente desliga a ligação em seu último comando quando o modo é queue.

    if ($type == 'queue') {
        $MAGNUS->hangup($agi);
        exit;
    } else {
        return;
    }

isso ocorre quando o agente está em uma fila de espera, e o did destination está setado para a fila. um dos agentes da fila atende, e ao fazer o blindtransfer (xfer) para outro sip ele cai nesse fluxo.

se no issue anterior foi informado que não é bug porque aí funciona, então é para ser assim mesmo o funcionamento?

trclamar commented 5 years ago

resolvi aqui fazendo as seguintes alterações no código:

resources/asterisk/QueueAgi.php linha 152 a 157 alterei para:

   $agi->verbose("lamar: type queue then hungup, why?");
    //if ($type == 'queue') {
    if ($type == 'queue' && $siptransfer['data'] != 'yes') {
        $MAGNUS->hangup($agi);
        exit;
    } else {
        return;
    }

resources/asterisk/mbilling.php linha 197 e 198 alterei para:

  SipTransferAgi::billing($MAGNUS, $agi, $CalcAgi);
  $agi->verbose("lamar: why hangup call if agent is trying to transfer?", 15);
  $siptransfer = $agi->get_variable("SIPTRANSFER");
  if ($siptransfer['data'] != 'yes') {
      $MAGNUS->hangup($agi);
  }

a princípio foram apenas estas duas alterações para o meu propósito, fiz apenas para ter certeza de que era o comportamento padrão do magnusbilling e que não era confusão minha. não sei o impacto que isso acarreta nas outras funções do magnusbilling pois não testei todas elas, sou iniciante no uso da ferramenta.

magnussolution commented 5 years ago

No MagnusBilling a trasferencia é desativada por padrao.

Case desejar usar, deve configurar o features.conf para transferir com *2 e somente transferencia assistida.

atxfer => *2

blindxfer nunca foi analisado no desenvolvimento, principalmente por complicaçoes na tarifaçao.

cham2019 commented 3 years ago

Hi, I know this is old but I would like to know is there a chance now that new versions or developments of Magnusbilling will include blindxfer proper billing ? I had made some tests, and CDR does not show properly when blindtransfers are done in the system. Thanks.