Saltar al contenido principal

Servicios Suplementarios

📖 Volver a la Documentación Principal

Configuración e implementación de desvío de llamadas, bloqueo de CLI y servicios de llamadas de emergencia.

Documentación Relacionada

Documentación Principal

Procesamiento de Llamadas y Fuentes de Datos

Interacciones de Servicio

  • 💳 Cobro en Línea - Las llamadas de emergencia evitan OCS
  • 📞 Buzón de Voz - Desvío de llamadas en rutas ocupadas/sin respuesta al buzón de voz

Monitoreo


Servicios Suplementarios (Desvío de Llamadas / CLI Bloqueado / Códigos de Emergencia)

Configuración para prefijos de CLI bloqueados, códigos de llamadas de emergencia y datos de Desvío de Llamadas por defecto (los datos de Desvío de Llamadas / Sin Respuesta solo se utilizan cuando no se devuelven datos de MMTel-Config del Repositorio en 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 Configuración:

  • blocked_cli_prefix (lista de cadenas): Prefijos que activan la retención de CLI (Identificación de Línea Llamante)

    • Ejemplo: ["*67"] - marcar *67 antes de un número oculta la identificación del llamante
    • Usado en el dialplan para establecer la variable cli_withheld
  • call_forward_not_reachable_destination (cadena): Destino por defecto para Desvío de Llamadas No Alcanzable (CFNRc)

    • Solo se utiliza cuando no se devuelve MMTel-Config de la interfaz Sh
    • Ejemplo: "2222" - desvía al buzón de voz
  • default_no_reply_timer (entero): Tiempo de espera por defecto en segundos antes de que se active CFNRc

    • Solo se utiliza cuando no se devuelve MMTel-Config de la interfaz Sh
    • Ejemplo: 30 - suena durante 30 segundos antes de desviar
  • emergency_call_codes (lista de cadenas): Números de servicio de emergencia para su jurisdicción

    • Verificado durante la autorización de llamadas para detectar llamadas de emergencia
    • URNs de emergencia SIP (por ejemplo, <urn:service:sos>) siempre se verifican además de estos códigos
    • Ejemplos comunes: ["911", "112", "000", "999", "sos"]
    • Consulte la sección Llamadas de Emergencia para un uso detallado

Cómo Funciona el Bloqueo de Identificación del Llamante

El TAS admite dos métodos para bloquear la identificación del llamante (retención de CLI), ambos establecen la variable del dialplan cli_withheld en "true":

Método 1: Bloqueo Basado en Prefijos

Cuando un suscriptor marca un número de destino precedido por un código de blocked_cli_prefix:

  1. El módulo de traducción de números detecta el prefijo (por ejemplo, el llamante marca *67555123456)
  2. El prefijo es eliminado del número de destino (se convierte en 555123456)
  3. La variable cli_withheld se establece en "true"
  4. El dialplan puede usar esta variable para ocultar la identidad del llamante

Ejemplo de configuración:

blocked_cli_prefix: ["*67"]        # Bloqueo estilo EE. UU.
blocked_cli_prefix: ["#31#"] # Bloqueo estilo GSM europeo
blocked_cli_prefix: ["*67", "#31#"] # Soporte para ambos

Método 2: Detección del Encabezado SIP From

Cuando el UE/dispositivo solicita privacidad a través de encabezados SIP:

  1. El TAS verifica si el nombre de visualización del encabezado SIP From contiene "anonymous" (sin distinción de mayúsculas)
  2. Si se encuentra, la variable cli_withheld se establece en "true"
  3. Esto respeta la solicitud de privacidad del suscriptor establecida a nivel del dispositivo

Implementando el Bloqueo de CLI en el Dialplan

El TAS establece la variable cli_withheld, pero su dialplan XML debe implementar el comportamiento real de bloqueo:

<extension name="CLI-Privacy" continue="true">
<condition field="${cli_withheld}" expression="true">
<!-- Ocultar la identidad del llamante -->
<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 establecer privacidad de P-Asserted-Identity -->
<action application="set" data="sip_h_Privacy=id"/>
</condition>
</extension>

Variables Establecidas por TAS para el Bloqueo de CLI:

El TAS establece estas variables antes de la ejecución del dialplan:

VariableTipoValoresDescripción
cli_withheldcadena"true" o "false"Indica si se solicitó el bloqueo de CLI a través de prefijo O encabezado From
tas_destination_numbercadenanúmero normalizadoDestino con el prefijo de bloqueo eliminado (por ejemplo, 555123456)
destination_numbercadenanúmero normalizadoIgual que tas_destination_number (ambos se establecen)

Variables Que Su Dialplan Debe Establecer (cuando cli_withheld="true"):

Estas variables controlan cómo se presenta la identidad del llamante:

VariableValor RecomendadoPropósito
effective_caller_id_number"anonymous"Oculta el número de teléfono del llamante
effective_caller_id_name"anonymous"Oculta el nombre de visualización del llamante
origination_privacy"hide_number"Bandera de privacidad SIP para la pierna de salida
sip_h_Privacy"id"Encabezado de Privacidad SIP (RFC 3323)
sip_h_P-Asserted-Identity(no establecido o eliminar)Opcional: Eliminar encabezado P-Asserted-Identity

Ejemplo Completo de Dialplan:

<extension name="CLI-Privacy-Handler" continue="true">
<condition field="${cli_withheld}" expression="true">
<!-- Registro para solución de problemas -->
<action application="log" data="INFO Se solicitó bloqueo de CLI para la llamada a ${tas_destination_number}"/>

<!-- Ocultar la identidad del llamante en la llamada saliente -->
<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"/>

<!-- Establecer encabezados de privacidad SIP -->
<action application="set" data="sip_h_Privacy=id"/>

<!-- Opcional: Eliminar P-Asserted-Identity si está presente -->
<action application="unset" data="sip_h_P-Asserted-Identity"/>

<!-- La acción anti se ejecuta si cli_withheld es false -->
<anti-action application="log" data="DEBUG Usando identificación normal del llamante: ${msisdn}"/>
<anti-action application="set" data="effective_caller_id_number=${msisdn}"/>
</condition>
</extension>

<!-- Esta extensión continúa con el enrutamiento de la llamada real -->
<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 métodos pueden funcionar simultáneamente (el prefijo O el encabezado SIP activan el bloqueo)
  • El prefijo es siempre eliminado del número de destino, incluso si el dialplan no implementa privacidad
  • La variable cli_withheld es una cadena ("true" o "false"), no un booleano
  • El comportamiento de Desvío de Llamadas / CLI Bloqueado se implementa en su dialplan XML
  • La configuración de ejemplo incluye estas características, pero si no las define en su dialplan, no funcionarán
  • Las variables se establecen durante el flujo de llamada MO (Origen Móvil) únicamente

Cómo Funciona el Desvío de Llamadas

El desvío de llamadas (también conocido como Desviación de Comunicación o CDIV) permite a los suscriptores redirigir llamadas entrantes a otro destino. El TAS admite múltiples tipos de desvío de llamadas con comportamiento configurable.

Tipos de Desvío de Llamadas

1. Desvío de Llamadas Todas (CFA) - Desvío Incondicional

  • Variable: call_forward_all_destination
  • Cuando Está Activo: Todas las llamadas entrantes se desvían inmediatamente
  • Prioridad: Se verifica primero (después del desvío HLR)
  • Uso Común: El suscriptor desea que todas las llamadas se envíen a otro número
  • Ejemplo: Llamadas de negocios desviadas a un teléfono personal

2. Desvío de Llamadas Ocupado (CFB)

  • Cuando Está Activo: La llamada se desvía cuando el suscriptor ya está en una llamada
  • Respuesta SIP: 486 Ocupado activa el desvío
  • Uso Común: Desviar al buzón de voz cuando está en otra llamada

3. Desvío de Llamadas Sin Respuesta (CFNRy)

  • Variable: no_reply_timer
  • Cuando Está Activo: La llamada se desvía después de sonar durante un número específico de segundos sin respuesta
  • Tiempo de Espera: Típicamente de 15 a 30 segundos
  • Uso Común: Desviar al buzón de voz si no se responde

4. Desvío de Llamadas No Alcanzable (CFNRc)

  • Variable: call_forward_not_reachable_destination
  • Cuando Está Activo: El suscriptor está fuera de línea, no registrado o no alcanzable
  • Respuesta SIP: 480 Temporalmente No Disponible
  • Uso Común: Desviar al buzón de voz cuando el teléfono está apagado
  • Por Defecto: Parámetro de configuración utilizado si no hay MMTel-Config

Prioridad de Fuentes de Datos

Los datos de desvío de llamadas se recuperan de múltiples fuentes con esta prioridad:

1. Datos HLR (SS7 MAP)           [Máxima Prioridad - anula todo]
↓ (si no hay desvío HLR activo)
2. MMTel-Config (Interfaz Sh) [Configuraciones específicas del suscriptor desde HSS]
↓ (si no se devuelve MMTel-Config)
3. Valores Predeterminados de Configuración [Mínima Prioridad - valores de respaldo]

¿Por Qué Esta Prioridad?

  • Datos HLR: Estado de desvío en tiempo real para escenarios de roaming/red
  • MMTel-Config: Preferencias configuradas por el suscriptor en IMS
  • Valores Predeterminados de Configuración: Respaldo a nivel de red (típicamente buzón de voz)

Variables del Dialplan para Desvío de Llamadas

VariableTipoFuenteValor de EjemploDescripción
call_forward_all_destinationcadenaSh/MMTel o "none""61403555123"Destino CFA si está activo
call_forward_not_reachable_destinationcadenaSh/MMTel o configuración"2222"Destino CFNRc (buzón de voz)
no_reply_timerenteroSh/MMTel o configuración30Segundos para sonar antes de CFNRy
msrncadenaHLR (solo MT)"61400123456"MSRN o número desviado desde HLR
tas_destination_numbercadenaCalculado"2222"Destino de enrutamiento real (puede ser número desviado)

Implementando el Desvío de Llamadas en el Dialplan

Ejemplo de Dialplan MT con Desvío de Llamadas:

<!-- Verificar Desvío de Llamadas Todas (máxima prioridad después de HLR) -->
<extension name="Check-CFA" continue="true">
<condition field="${call_forward_all_destination}" expression="^(?!none$).+$">
<action application="log" data="INFO Desvío de Llamadas Todas activo a ${call_forward_all_destination}"/>
<action application="set" data="tas_destination_number=${call_forward_all_destination}"/>
</condition>
</extension>

<!-- Intentar conectar con el suscriptor -->
<extension name="Bridge-To-Subscriber">
<condition field="${msrn}" expression="^none$">
<!-- Sin MSRN, ruta al suscriptor local -->
<action application="set" data="call_timeout=${no_reply_timer}"/>
<action application="bridge" data="sofia/internal/${tas_destination_number}@${scscf_address}"/>

<!-- Si el puente falla, verificar el desvío -->
<action application="log" data="INFO El puente falló, verificando el desvío de llamadas"/>

<!-- Desvío de Llamadas No Alcanzable -->
<action application="set" data="forward_destination=${call_forward_not_reachable_destination}"/>
<action application="log" data="INFO Desviando a ${forward_destination}"/>
<action application="answer"/>
<action application="voicemail" data="default default ${msisdn}"/>
</condition>
</extension>

Configurando el Desvío de Llamadas por Defecto

Establecer valores predeterminados a nivel de red en config/runtime.exs:

config :tas,
# Destino CFNRc por defecto (utilizado cuando no hay MMTel-Config)
call_forward_not_reachable_destination: "2222", # Número de acceso al buzón de voz

# Tiempo de espera por defecto antes de que se active CFNRy (utilizado cuando no hay MMTel-Config)
default_no_reply_timer: 30 # Sonar durante 30 segundos

Cuándo Se Usan los Valores Predeterminados:

  • El suscriptor existe en HSS pero no tiene MMTel-Config provisionado
  • La búsqueda Sh tiene éxito pero no devuelve configuraciones de desvío de llamadas
  • Nuevos suscriptores antes de que se configure el desvío de llamadas

Solucionando Problemas de Desvío de Llamadas

Problema: Las llamadas no se desvían como se esperaba

  1. Verificar Datos Sh:

    • Usar la interfaz web /sh_test para consultar al suscriptor
    • Verificar que MMTel-Config contenga reglas de CDIV
    • Comprobar el valor de call_forward_all_destination
  2. Verificar Variables del Dialplan:

    • Revisar los registros de llamadas para los valores de las variables
    • Confirmar que call_forward_all_destination != "none"
    • Verificar que tas_destination_number esté configurado al destino de desvío
  3. Verificar Datos HLR (si SS7 MAP está habilitado):

    • Usar la interfaz web /hlr para consultar al suscriptor
    • El desvío HLR anula los datos de Sh
    • Verificar que la variable msrn no contenga un número de desvío inesperado
  4. Verificar Valores Predeterminados de Configuración:

    • Verificar call_forward_not_reachable_destination en la configuración
    • Confirmar que default_no_reply_timer sea apropiado
    • Estos solo se aplican cuando no existe MMTel-Config

Problema: Bucles de desvío

Síntomas: La llamada se desvía a un número que vuelve a desviar, creando un bucle

Prevención en el Dialplan:

<!-- Rastrear el conteo de saltos de desvío -->
<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 Se detectó un bucle de desvío, conteo de saltos: ${sip_h_X-Forward-Hop-Count}"/>
<action application="hangup" data="LOOP_DETECTED"/>
</condition>
</extension>

Monitoreo del Desvío de Llamadas

Indicadores Clave:

  • Alta tasa de llamadas a números de buzón de voz
  • Patrón de llamadas que expiran en el valor de no_reply_timer
  • Llamadas consistentemente enrutadas a los mismos destinos de desvío

Registros Útiles:

INFO Desvío de Llamadas Todas activo a 61403555123
INFO Desviando a 2222
INFO El puente falló, verificando el desvío de llamadas

Inteligencia Empresarial:

  • Rastrear tasas de activación de desvío por suscriptor
  • Monitorear patrones de uso del buzón de voz
  • Identificar suscriptores con desvío incondicional