Apesar de não existir limite de número de chamadas simultâneas num ramal SIP (o que é eventualmente controlado pelo cliente em uso), se você precisa desse tipo de restrição é possível implementá-la diretamente no Asterisk.

Para isso podemos fazer uso de duas funções disponíveis no plano de discagem (que substituem o antigo parâmetro call-limit da configuração sip): GROUP e GROUP_COUNT. A função GROUP adiciona um canal em um grupo, enquanto a função GROUP_COUNT conta o número de canais de um grupo.

Abaixo um pequeno exemplo de como fazer com que os ramais SIP recebam somente uma chamada por vez (sem limites de chamadas originadas).

/etc/asterisk/extensions.conf

[ramais]
; contexto de recebimento de chamadas no ramais

exten => _XXXX,1,NoOp

; adiciona o ramal no grupo ramalXXXX
exten => _XXXX,n,Set(GROUP()=ramal${EXTEN})

; verifica o número de chamadas simultâneas no grupo ramalXXXX
exten => _XXXX,n,Set(SIMULTCALL=${GROUP_COUNT(ramal${EXTEN})})

exten => _XXXX,n,NoOp(Ligacoes em curso ramal ${EXTEN}: ${SIMULTCALL})

; verifica se o número de chamadas é 1 (a própria chamada)
; se for igual a 1 efetua a discagem, caso contrário nega o recebimento
exten => _XXXX,n,GotoIf($[“${SIMULTCALL}” = “1”]?call:nocall)

; seção usada quando a chamada não pode ser realizada (ramal em uso)
exten => _XXXX,n(nocall),NoOp(Limite Excedido – ramal ${EXTEN})

exten => _XXXX,n(nocall),HungUp

; seção usada para realização da chamada
exten => _XXXX,n(call),NoOp(Ligacao OK – ramal ${EXTEN})
exten => _XXXX,n(call),Dial(SIP/${EXTEN},30,twxr)

[outgoing]
; contexto das ligações para a pstn

exten => _X.,1,NoOp
exten => _X.,n,Noop(CALLERID: ${CALLERID(all)})

; adiciona o ramal no grupo ramalXXXX
; apesar de não haver limite de chamadas originadas é preciso computar
; essa ligação, pois caso o ramal esteja em uso por ter originado uma ligação
; é preciso bloquear o recebimento de uma nova chamada neste
exten => _X.,n,Set(GROUP()=ramal${CALLERID(number)})

exten => _X.,n,Set(SIMULTCALL=${GROUP_COUNT(ramal${CALLERID(number)})})
exten => _X.,n,NoOp(Ligacoes em curso ramal: ${SIMULTCALL})

; Disca para a pstn
exten => _X.,n,Dial(DAHDI/g1/${EXTEN},60,TWXr)
exten => _X.,n,HungUp

Como pode-se perceber, o recurso pode ser facilmente implementado. O código acima é um modelo que pode ser facilmente aprimorado com o uso de voicemail ou de uma mensagem previamente gravada em caso de rejeição da chamada. Tudo de acordo com a necessidade específica de seu ambiente.

ATENÇÃO (17/02/2011): o recurso acima apresenta um problema: chamadas transferidas continuam sendo consideradas chamadas em andamento e só são removidas do grupo após a ligação original (já transferida) ser finalizada. Estou estudando como contornar a situação.
Asterisk – controlando o número máximo de chamadas recebidas por ramal
  • Anonymous

    Pergunta basica, porque voce não informa o call-limit do peer ?

  • Um dos problemas do call-limit é que se eu setar ele para 1 (uma chamada somente), por exemplo, não consigo realizar mais a transferência atendida, pois está seria uma segunda chamada.<br /><br />[]s

  • Ola amigos gotaria de saber como faço para adicionar o numero do ramal nas ligaçoes recebidas.

    • Como assim?<br /><br />Explique melhor a situação, por favor.<br /><br />[]s

  • Jorge Santos

    Marcelo, como faço para que um agente que está realizando uma discagem manual no softfone não receba chamadas da campanha de mailing ativo ?

    • Vou supor que estejamos falando de filas do Asterisk, ok? Qualquer outro método que não use a app queue precisa ser antes avaliado para entender sua lógica.

      Neste caso, se o ramal está em uso, ele não deveria receber uma segunda chamada. Mas se o atendente está discando, consequentemente o ramal não está em uso, então a chamada será entregue.

      Não existe uma maneira simples de resolver isso, pois o Asterisk não tem como saber que o agente está discando.

      Um alternativa ser que o antes, antes de começar a discagem manual, discasse para um código (uma feature que teria que ser criada) que o pausaria na fila, evitando receber assim chamadas.

      E, quando ele pudesse voltar a receber chamadas entrantes, ele discaria outro código que desativaria a pausa anterior.

      []s

Animated Social Media Icons by Acurax Responsive Web Designing Company
Optimization WordPress Plugins & Solutions by W3 EDGE
%d blogueiros gostam disto: