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
- 📋 README Principal - Visión general y inicio rápido
- 🔧 Guía de Configuración - Parámetros de configuración del servicio (códigos de emergencia, bloqueo de CLI, desvío de llamadas por defecto)
- 🔧 Guía de Operaciones - Pruebas de servicios suplementarios
Procesamiento de Llamadas y Fuentes de Datos
- 🔀 Configuración del Dialplan - Implementación de servicios en la lógica del dialplan
- 👥 Interfaz Sh - MMTel-Config para la configuración de desvío de llamadas
- 📡 SS7 MAP - Desvío de llamadas basado en HLR (alternativa a Sh)
- 🔢 Traducción de Números - Manejo de prefijos de bloqueo de CLI
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
- 📊 Referencia de Métricas - Métricas de desvío de llamadas y servicio
- 📈 Métricas del Dialplan - Métricas de uso del servicio
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
- Ejemplo:
-
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:
- El módulo de traducción de números detecta el prefijo (por ejemplo, el llamante marca
*67555123456) - El prefijo es eliminado del número de destino (se convierte en
555123456) - La variable
cli_withheldse establece en"true" - 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:
- El TAS verifica si el nombre de visualización del encabezado SIP From contiene "anonymous" (sin distinción de mayúsculas)
- Si se encuentra, la variable
cli_withheldse establece en"true" - 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:
| Variable | Tipo | Valores | Descripción |
|---|---|---|---|
cli_withheld | cadena | "true" o "false" | Indica si se solicitó el bloqueo de CLI a través de prefijo O encabezado From |
tas_destination_number | cadena | número normalizado | Destino con el prefijo de bloqueo eliminado (por ejemplo, 555123456) |
destination_number | cadena | número normalizado | Igual 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:
| Variable | Valor Recomendado | Propó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_withheldes 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
| Variable | Tipo | Fuente | Valor de Ejemplo | Descripción |
|---|---|---|---|---|
call_forward_all_destination | cadena | Sh/MMTel o "none" | "61403555123" | Destino CFA si está activo |
call_forward_not_reachable_destination | cadena | Sh/MMTel o configuración | "2222" | Destino CFNRc (buzón de voz) |
no_reply_timer | entero | Sh/MMTel o configuración | 30 | Segundos para sonar antes de CFNRy |
msrn | cadena | HLR (solo MT) | "61400123456" | MSRN o número desviado desde HLR |
tas_destination_number | cadena | Calculado | "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
-
Verificar Datos Sh:
- Usar la interfaz web
/sh_testpara consultar al suscriptor - Verificar que MMTel-Config contenga reglas de CDIV
- Comprobar el valor de
call_forward_all_destination
- Usar la interfaz web
-
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_numberesté configurado al destino de desvío
-
Verificar Datos HLR (si SS7 MAP está habilitado):
- Usar la interfaz web
/hlrpara consultar al suscriptor - El desvío HLR anula los datos de Sh
- Verificar que la variable
msrnno contenga un número de desvío inesperado
- Usar la interfaz web
-
Verificar Valores Predeterminados de Configuración:
- Verificar
call_forward_not_reachable_destinationen la configuración - Confirmar que
default_no_reply_timersea apropiado - Estos solo se aplican cuando no existe MMTel-Config
- Verificar
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