By Marcelo Terres

O cenário: você liga para um ramal pois precisa falar com o usuário para resolver um problema urgente mas o ramal está ocupado. Você desliga a chamada e de tempos em tempos tenta ligar novamente mas sempre recebe o sinal de ocupado.
O que fazer? Você pode procurar o usuário para falar pessoalmente com ele. Você também pode desistir de falar com o usuário e tentar resolver o problema por conta própria. Ou então você pode ativar o recurso de Call Completion em seu ramal e esperar que o Asterisk ligue para você quando o ramal do usuário estiver livre.
O CCSS, que está disponível a partir da versão 1.8 do Asterisk, permite que um ramal seja monitorado sob demanda, alertando o usuário e efetuando automaticamente a chamada quando o mesmo ficar disponível. O recurso pode ser utilizado tanto para chamadas não atendidas (CCNR) quando para chamadas ocupadas (CCBS), de forma similar para o usuário.
E como eu implemento o CCSS no Asterisk?
 
O CCSS é uma feature padrão do Asterisk e para torná-la ativa basta adicionar os seguintes parâmetros a configuração SIP de seus ramais:

cc_agent_policy=generic
cc_monitor_policy=generic

Caso você use SIP realtime, basta adicionar os devidos campos na tabela SIP do banco.

O cc_agent_policy é utilizado pelo usuário que está discando, enquanto o cc_monitor_policy é utilizado pelo usuário a qual está sendo destinada a chamada. Eu prefiro ativar o recurso para todos os ramais, então todos possuem a mesma configuração.
O tipo de agente e de monitor utilizado por mim foi o generic, que atende bem a demanda, mas possui algumas limitações. A principal delas é que o usuário só consegue realizar uma monitoração por vez, ou seja, ele precisa ativar e desativar o recurso para que possa utilizá-lo novamente.
Outros tipos estão disponíveis e você pode saber mais sobre os mesmos no arquivo /etc/asterisk/ccss.conf, onde você também pode ajustar outras configurações do serviço. A versão 10.X do Asterisk implementa um controle de Device State com o agente genérico que melhora muito a sua funcionalidade.
Uma recomendação para melhorar o funcionamento do sistema é setar a opção callcounter=yes na configuração de seu peer sip e também a opção limitonpeers=yes na seção general do arquivo sip.conf. Apesar de recomendado, efetuei testes sem estas opções (com telefones Polycom) e não encontrei problemas, mas pode ser que outros clientes SIP não se comportem tão bem.
E na prática como funciona?
Na prática funciona da seguinte maneira:
Imaginemos que você queria ligar para o ramal 1200. Você liga para o ramal e ele está ocupado ou não atende a ligação.
Você desliga a chamada (ou ela é desligada) e você tem até 20 segundos (tempo padrão que pode ser alterado) para solicitar a ativação do serviço de CC. No meu caso basta discar para o *22 que o serviço estará ativo.
Se o ramal estava ocupado, assim que ele desligar o Asterisk irá efetuar uma ligação para o seu ramal. Assim que você atender ele discará automaticamente para o ramal 1200.
Se a ligação não havia sido atendida, o Asterisk entenderá que o usuário não está em sua mesa. Assim, depois que ele fizer uma nova chamada, o Asterisk perceberá que ele está no local e, assim que ele desligar, realizará uma ligação para o seu ramal e assim que você atender ele discará para o ramal 1200.
Após você falar com o ramal 1200, no entanto, é preciso que você desative o serviço (no meu caso discando para *220), para que possa utilizá-lo novamente (devido ao uso do generic).
Por fim, sugiro que a página de dicas sobre o serviço seja lida, pois ali constam informações e recomendações muito relevantes que devem ser seguidas.
Exemplo do plano de discagem
 
Segue abaixo um plano de discagem bem simples para ativar e desativar o recurso:

[internal_services]
exten => *22,1,CallCompletionRequest
exten => *22,n,Hangup
exten => *220,1,CallCompletionCancel
exten => *220,n,Hangup

Source: http://www.mundoopensource.com.br/ccss-call-completion-supplementary-services-no-asterisk/?utm_source=rss&utm_medium=rss&utm_campaign=ccss-call-completion-supplementary-services-no-asterisk

Share This