Serviços Suplementares
📖 Voltar à Documentação Principal
Configuração e implementação de serviços de desvio de chamadas, bloqueio de CLI e chamadas de emergência.
Documentação Relacionada
Documentação Principal
- 📋 README Principal - Visão geral e início rápido
- 🔧 Guia de Configuração - Parâmetros de configuração do serviço (códigos de emergência, bloqueio de CLI, desvio de chamada padrão)
- 🔧 Guia de Operações - Testando serviços suplementares
Processamento de Chamadas & Fontes de Dados
- 🔀 Configuração do Dialplan - Implementando serviços na lógica do dialplan
- 👥 Interface Sh - MMTel-Config para configurações de desvio de chamadas
- 📡 SS7 MAP - Desvio de chamadas baseado em HLR (alternativa ao Sh)
- 🔢 Tradução de Números - Manipulação de prefixos de bloqueio de CLI
Interações de Serviço
- 💳 Cobrança Online - Chamadas de emergência ignoram OCS
- 📞 Correio de Voz - Desvio de chamadas em rotas de ocupado/sem resposta para correio de voz
Monitoramento
- 📊 Referência de Métricas - Métricas de desvio de chamadas e serviços
- 📈 Métricas do Dialplan - Métricas de uso do serviço
Serviços Suplementares (Desvio de Chamadas / CLI Bloqueado / Códigos de Emergência)
Configuração para prefixos de CLI bloqueados, códigos de chamadas de emergência e dados de Desvio de Chamadas padrão (os dados de Desvio de Chamadas / Sem Resposta são usados apenas quando nenhum dado MMTel-Config é retornado do Repositório no Sh).
config :tas,
...
blocked_cli_prefix: ["*67"],
call_forward_not_reachable_destination: "2222",
default_no_reply_timer: 30,
emergency_call_codes: ["911", "912", "913", "sos"],
...
Parâmetros de Configuração:
-
blocked_cli_prefix(lista de strings): Prefixos que acionam a retenção de CLI (Identificação da Linha Chamadora)- Exemplo:
["*67"]- discar *67 antes de um número oculta a ID do chamador - Usado no dialplan para definir a variável
cli_withheld
- Exemplo:
-
call_forward_not_reachable_destination(string): Destino padrão para Desvio de Chamadas Não Atingido (CFNRc)- Usado apenas quando nenhum MMTel-Config é retornado da interface Sh
- Exemplo:
"2222"- desvia para o correio de voz
-
default_no_reply_timer(inteiro): Tempo limite padrão em segundos antes que o CFNRc ative- Usado apenas quando nenhum MMTel-Config é retornado da interface Sh
- Exemplo:
30- toca por 30 segundos antes de desviar
-
emergency_call_codes(lista de strings): Números de serviços de emergência para sua jurisdição- Verificado durante a autorização da chamada para detectar chamadas de emergência
- URNs de emergência SIP (por exemplo,
<urn:service:sos>) são sempre verificados além desses códigos - Exemplos comuns:
["911", "112", "000", "999", "sos"] - Consulte a seção Chamadas de Emergência para uso detalhado
Como Funciona o Bloqueio de ID do Chamador
O TAS suporta dois métodos para bloquear a ID do chamador (retenção de CLI), ambos os quais definem a variável de dialplan cli_withheld como "true":
Método 1: Bloqueio Baseado em Prefixo
Quando um assinante disca um número de destino prefixado com um código de blocked_cli_prefix:
- O módulo de tradução de números detecta o prefixo (por exemplo, o chamador disca
*67555123456) - O prefixo é removido do número de destino (torna-se
555123456) - A variável
cli_withheldé definida como"true" - O dialplan pode então usar essa variável para ocultar a identidade do chamador
Exemplo de configuração:
blocked_cli_prefix: ["*67"] # Bloqueio estilo EUA
blocked_cli_prefix: ["#31#"] # Bloqueio estilo GSM europeu
blocked_cli_prefix: ["*67", "#31#"] # Suporte a ambos
Método 2: Detecção do Cabeçalho SIP From
Quando o UE/aparelho solicita privacidade através de cabeçalhos SIP:
- O TAS verifica se o nome de exibição do cabeçalho SIP From contém "anônimo" (sem distinção entre maiúsculas e minúsculas)
- Se encontrado, a variável
cli_withheldé definida como"true" - Isso respeita o pedido de privacidade do assinante definido no nível do dispositivo
Implementando o Bloqueio de CLI no Dialplan
O TAS define a variável cli_withheld, mas seu dialplan XML deve implementar o comportamento real de bloqueio:
<extension name="CLI-Privacy" continue="true">
<condition field="${cli_withheld}" expression="true">
<!-- Ocultar identidade do chamador -->
<action application="set" data="effective_caller_id_name=anonymous"/>
<action application="set" data="effective_caller_id_number=anonymous"/>
<action application="set" data="origination_privacy=hide_number"/>
<!-- Opcionalmente definir privacidade do P-Asserted-Identity -->
<action application="set" data="sip_h_Privacy=id"/>
</condition>
</extension>
Variáveis Definidas pelo TAS para Bloqueio de CLI:
O TAS define essas variáveis antes da execução do dialplan:
| Variável | Tipo | Valores | Descrição |
|---|---|---|---|
cli_withheld | string | "true" ou "false" | Indica se o bloqueio de CLI foi solicitado via prefixo OU cabeçalho From |
tas_destination_number | string | número normalizado | Destino com prefixo de bloqueio removido (por exemplo, 555123456) |
destination_number | string | número normalizado | Igual a tas_destination_number (ambos são definidos) |
Variáveis que Seu Dialplan Deve Definir (quando cli_withheld="true"):
Essas variáveis controlam como a identidade do chamador é apresentada:
| Variável | Valor Recomendado | Propósito |
|---|---|---|
effective_caller_id_number | "anonymous" | Oculta o número de telefone do chamador |
effective_caller_id_name | "anonymous" | Oculta o nome de exibição do chamador |
origination_privacy | "hide_number" | Sinalizador de privacidade SIP para a perna de saída |
sip_h_Privacy | "id" | Cabeçalho de Privacidade SIP (RFC 3323) |
sip_h_P-Asserted-Identity | (não definido ou removido) | Opcional: Remover cabeçalho P-Asserted-Identity |
Exemplo Completo de Dialplan:
<extension name="CLI-Privacy-Handler" continue="true">
<condition field="${cli_withheld}" expression="true">
<!-- Log para solução de problemas -->
<action application="log" data="INFO Bloqueio de CLI solicitado para chamada para ${tas_destination_number}"/>
<!-- Ocultar identidade do chamador na chamada de saída -->
<action application="set" data="effective_caller_id_name=anonymous"/>
<action application="set" data="effective_caller_id_number=anonymous"/>
<action application="set" data="origination_privacy=hide_number"/>
<!-- Definir cabeçalhos de privacidade SIP -->
<action application="set" data="sip_h_Privacy=id"/>
<!-- Opcional: Remover P-Asserted-Identity se presente -->
<action application="unset" data="sip_h_P-Asserted-Identity"/>
<!-- A ação anti é executada se cli_withheld for falso -->
<anti-action application="log" data="DEBUG Usando ID do chamador normal: ${msisdn}"/>
<anti-action application="set" data="effective_caller_id_number=${msisdn}"/>
</condition>
</extension>
<!-- Esta extensão continua para o roteamento real da chamada -->
<extension name="Route-Outbound-Call">
<condition field="${tas_destination_number}" expression="^(.+)$">
<action application="bridge" data="sofia/gateway/trunk/${tas_destination_number}"/>
</condition>
</extension>
Notas Importantes:
- Ambos os métodos podem funcionar simultaneamente (prefixo OU cabeçalho SIP aciona o bloqueio)
- O prefixo é sempre removido do número de destino, mesmo que o dialplan não implemente a privacidade
- A variável
cli_withheldé uma string ("true"ou"false"), não um booleano - O comportamento de Desvio de Chamadas / CLI Bloqueado é implementado no seu dialplan XML
- A configuração de exemplo inclui esses recursos, mas se você não os definir em seu dialplan, eles não funcionarão
- Variáveis são definidas durante o fluxo de chamada MO (Origem Móvel) apenas
Como Funciona o Desvio de Chamadas
O desvio de chamadas (também conhecido como Desvio de Comunicação ou CDIV) permite que assinantes redirecionem chamadas recebidas para outro destino. O TAS suporta vários tipos de desvio de chamadas com comportamento configurável.
Tipos de Desvio de Chamadas
1. Desvio de Chamadas Todas (CFA) - Desvio Incondicional
- Variável:
call_forward_all_destination - Quando Ativo: Todas as chamadas recebidas são imediatamente desviadas
- Prioridade: Verificado primeiro (após o desvio HLR)
- Uso Comum: Assinante deseja que todas as chamadas sejam enviadas para outro número
- Exemplo: Chamadas de negócios desviadas para o telefone pessoal
2. Desvio de Chamadas Ocupado (CFB)
- Quando Ativo: Chamada desviada quando o assinante já está em uma chamada
- Resposta SIP: 486 Ocupado aciona o desvio
- Uso Comum: Desviar para correio de voz quando em outra chamada
3. Desvio de Chamadas Sem Resposta (CFNRy)
- Variável:
no_reply_timer - Quando Ativo: Chamada desviada após tocar por um número especificado de segundos sem resposta
- Tempo Limite: Tipicamente 15-30 segundos
- Uso Comum: Desviar para correio de voz se não atendido
4. Desvio de Chamadas Não Atingível (CFNRc)
- Variável:
call_forward_not_reachable_destination - Quando Ativo: Assinante está offline, não registrado ou não atingível
- Resposta SIP: 480 Temporariamente Indisponível
- Uso Comum: Desviar para correio de voz quando o telefone está desligado
- Padrão: Parâmetro de configuração usado se nenhum MMTel-Config
Prioridade das Fontes de Dados
Os dados de desvio de chamadas são recuperados de várias fontes com esta prioridade:
1. Dados HLR (SS7 MAP) [Maior Prioridade - substitui todos]
↓ (se nenhum desvio HLR ativo)
2. MMTel-Config (Interface Sh) [Configurações específicas do assinante do HSS]
↓ (se nenhum MMTel-Config retornado)
3. Padrões de Configuração [Menor Prioridade - valores de fallback]
Por que essa Prioridade?
- Dados HLR: Status de desvio em tempo real para cen��rios de roaming/rede
- MMTel-Config: Preferências configuradas pelo assinante no IMS
- Padrões de Configuração: Fallback em toda a rede (tipicamente correio de voz)
Variáveis do Dialplan para Desvio de Chamadas
| Variável | Tipo | Fonte | Valor de Exemplo | Descrição |
|---|---|---|---|---|
call_forward_all_destination | string | Sh/MMTel ou "none" | "61403555123" | Destino CFA se ativo |
call_forward_not_reachable_destination | string | Sh/MMTel ou configuração | "2222" | Destino CFNRc (correio de voz) |
no_reply_timer | inteiro | Sh/MMTel ou configuração | 30 | Segundos para tocar antes do CFNRy |
msrn | string | HLR (apenas MT) | "61400123456" | MSRN ou número desviado do HLR |
tas_destination_number | string | Calculado | "2222" | Destino real de roteamento (pode ser número desviado) |
Implementando o Desvio de Chamadas no Dialplan
Exemplo de Dialplan MT com Desvio de Chamadas:
<!-- Verificar Desvio de Chamadas Todas (maior prioridade após HLR) -->
<extension name="Check-CFA" continue="true">
<condition field="${call_forward_all_destination}" expression="^(?!none$).+$">
<action application="log" data="INFO Desvio de Chamadas Todas ativo para ${call_forward_all_destination}"/>
<action application="set" data="tas_destination_number=${call_forward_all_destination}"/>
</condition>
</extension>
<!-- Tentar conectar ao assinante -->
<extension name="Bridge-To-Subscriber">
<condition field="${msrn}" expression="^none$">
<!-- Sem MSRN, roteamento para assinante local -->
<action application="set" data="call_timeout=${no_reply_timer}"/>
<action application="bridge" data="sofia/internal/${tas_destination_number}@${scscf_address}"/>
<!-- Se a conexão falhar, verificar o desvio -->
<action application="log" data="INFO Conexão falhou, verificando desvio de chamadas"/>
<!-- Desvio de Chamadas Não Atingível -->
<action application="set" data="forward_destination=${call_forward_not_reachable_destination}"/>
<action application="log" data="INFO Desviando para ${forward_destination}"/>
<action application="answer"/>
<action application="voicemail" data="default default ${msisdn}"/>
</condition>
</extension>
Configurando Desvio de Chamadas Padrão
Defina padrões em toda a rede em config/runtime.exs:
config :tas,
# Destino padrão CFNRc (usado quando nenhum MMTel-Config)
call_forward_not_reachable_destination: "2222", # Número de acesso ao correio de voz
# Tempo limite padrão antes que CFNRy ative (usado quando nenhum MMTel-Config)
default_no_reply_timer: 30 # Tocar por 30 segundos
Quando os Padrões São Usados:
- O assinante existe no HSS, mas não tem MMTel-Config provisionado
- A consulta Sh é bem-sucedida, mas não retorna configurações de desvio de chamadas
- Novos assinantes antes que o desvio de chamadas seja configurado
Solução de Problemas de Desvio de Chamadas
Problema: Chamadas não desviando como esperado
-
Verifique os Dados Sh:
- Use a interface Web
/sh_testpara consultar o assinante - Verifique se o MMTel-Config contém regras de CDIV
- Confira o valor de
call_forward_all_destination
- Use a interface Web
-
Verifique as Variáveis do Dialplan:
- Revise os logs de chamadas para os valores das variáveis
- Confirme que
call_forward_all_destination!="none" - Verifique se
tas_destination_numberestá definido para o destino de desvio
-
Verifique os Dados HLR (se SS7 MAP habilitado):
- Use a interface Web
/hlrpara consultar o assinante - O desvio HLR substitui os dados Sh
- Verifique se a variável
msrnnão contém um número de desvio inesperado
- Use a interface Web
-
Verifique os Padrões de Configuração:
- Verifique
call_forward_not_reachable_destinationna configuração - Confirme se
default_no_reply_timeré apropriado - Esses só se aplicam quando nenhum MMTel-Config existe
- Verifique
Problema: Laços de desvio
Sintomas: Chamada desvia para um número que desvia de volta, criando um laço
Prevenção no Dialplan:
<!-- Rastrear contagem de saltos de desvio -->
<extension name="Prevent-Forward-Loop" continue="true">
<condition field="${sip_h_X-Forward-Hop-Count}" expression="^$">
<action application="set" data="sip_h_X-Forward-Hop-Count=1"/>
<anti-action application="set" data="sip_h_X-Forward-Hop-Count=${expr(${sip_h_X-Forward-Hop-Count}+1)}"/>
</condition>
</extension>
<extension name="Check-Forward-Hop-Limit">
<condition field="${sip_h_X-Forward-Hop-Count}" expression="^([3-9]|[1-9][0-9]+)$">
<action application="log" data="ERROR Laço de desvio detectado, contagem de saltos: ${sip_h_X-Forward-Hop-Count}"/>
<action application="hangup" data="LOOP_DETECTED"/>
</condition>
</extension>
Monitorando o Desvio de Chamadas
Indicadores Chave:
- Alta taxa de chamadas para números de correio de voz
- Padrão de chamadas expirando no valor de
no_reply_timer - Chamadas consistentemente roteadas para os mesmos destinos de desvio
Logs Úteis:
INFO Desvio de Chamadas Todas ativo para 61403555123
INFO Desviando para 2222
INFO Conexão falhou, verificando desvio de chamadas
Inteligência de Negócios:
- Rastrear taxas de ativação de desvio por assinante
- Monitorar padrões de uso do correio de voz
- Identificar assinantes com desvio incondicional