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 guía rápida
- 🔧 Guía de Configuración - Parámetros de configuración del servicio (códigos de emergencia, bloqueo de CLI, desvío de llamadas predeterminado)
- 🔧 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 configuraciones 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
- 💳 Carga 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 predeterminados (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 - Utilizado en el dialplan para establecer la variable
cli_withheld
- Ejemplo:
-
call_forward_not_reachable_destination(cadena): Destino predeterminado para Desvío de Llamadas No Alcanzable (CFNRc)- Solo se utiliza cuando no se devuelve MMTel-Config de la interfaz Sh
- Ejemplo:
"2222"- reenvía al buzón de voz
-
default_no_reply_timer(entero): Tiempo de espera predeterminado 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- Comprobado durante la autorización de llamadas para detectar llamadas de emergencia
- Los URNs de emergencia SIP (por ejemplo,
<urn:service:sos>) siempre se comprueban 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 de Llamantes
El TAS admite dos métodos para bloquear la identificación de llamantes (retención de CLI), ambos de los cuales 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 entre mayúsculas y minúsculas)
- Si se encuentra, la variable
cli_withheldse establece en"true" - Esto respeta la solicitud de privacidad del suscriptor establecida a nivel de dispositivo
Implementación del Bloqueo de CLI en el Dialplan
El TAS establece la variable cli_withheld, pero su dialplan XML debe implementar el comportamiento de bloqueo real:
<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 saliente |
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 falso -->
<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 hacia el enrutamiento real de la llamada -->
<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) solamente
Cómo Funciona el Desvío de Llamadas
El desvío de llamadas (también conocido como Diversió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 comprueba primero (después del desvío HLR)
- Uso Común: El suscriptor quiere que todas las llamadas se envíen a otro número
- Ejemplo: Llamadas comerciales desviadas a 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 especificado de segundos sin respuesta
- Tiempo de Espera: Típicamente 15-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
- Predeterminado: 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 real de enrutamiento (puede ser número desviado) |
Implementación del Desvío de Llamadas en el Dialplan
Ejemplo de Dialplan MT con Desvío de Llamadas:
<!-- Comprobar 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 unir al 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 la unión falla, comprobar el desvío -->
<action application="log" data="INFO La unión falló, comprobando 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>
Configuración del Desvío de Llamadas Predeterminado
Establecer valores predeterminados a nivel de red en config/runtime.exs:
config :tas,
# Destino CFNRc predeterminado (utilizado cuando no hay MMTel-Config)
call_forward_not_reachable_destination: "2222", # Número de acceso al buzón de voz
# Tiempo de espera predeterminado antes de que se active CFNRy (utilizado cuando no hay MMTel-Config)
default_no_reply_timer: 30 # Sonar durante 30 segundos
Cuándo Se Utilizan los Valores Predeterminados:
- El suscriptor existe en HSS pero no tiene MMTel-Config provisionado
- La búsqueda en Sh tiene éxito pero no devuelve configuraciones de desvío de llamadas
- Nuevos suscriptores antes de que se configure el desvío de llamadas
Solución de Problemas de Desvío de Llamadas
Problema: Las llamadas no se desvían como se esperaba
-
Verificar Datos de Sh:
- Utilizar la interfaz web
/sh_testpara consultar al suscriptor - Verificar que MMTel-Config contenga reglas de CDIV
- Comprobar el valor de
call_forward_all_destination
- Utilizar 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é establecido en el destino de desvío
-
Verificar Datos de HLR (si SS7 MAP está habilitado):
- Utilizar 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
- Utilizar 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 se desvía de vuelta, 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 enrutadas consistentemente a los mismos destinos de desvío
Registros Útiles:
INFO Desvío de Llamadas Todas activo a 61403555123
INFO Desviando a 2222
INFO La unión falló, comprobando el desvío de llamadas
Inteligencia Empresarial:
- Rastrear tasas de activación de desvío por suscriptor
- Monitorear patrones de uso de buzón de voz
- Identificar suscriptores con desvío incondicional