Introducción
Este documento describe cómo utilizar el script de normalización del protocolo de inicio de sesión (SIP) en Cisco Call Manager (CCM) con algunos ejemplos básicos.
Prerequisites
Requirements
Cisco recomienda que tenga conocimiento sobre estos temas:
- Cisco Unified Communications Manager (CUCM) versión 8.x y posteriores
- Protocolo SIP
- Conocimiento de guiones
Componentes Utilizados
La información de este documento se basa en la versión 11.5 de CCM.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. Si tiene una red en vivo, asegúrese de entender el posible impacto de cualquier comando.
Configurar
Aplicar script en tronco en CUCM
En el caso del troncal SIP, el script debe aplicarse directamente en el troncal SIP. El uso del script en el perfil SIP en lugar de Trunk no funcionará.
Estos son los pasos que debe seguir:
- Navegue hasta Device > Device Setting > SIP Normalization Script Configuration y agregue un script nuevo como se muestra en la imagen.
2. Vaya a Dispositivo > Troncal.
Seleccione el enlace troncal en el que desea aplicar el script y, en la página de configuración, seleccione el script creado anteriormente. Seleccione la opción Habilitar seguimiento e imprimirá los cambios realizados por el script en los registros de Capa de distribución de señales (SDL), como se muestra en la imagen. Guarde la configuración, Aplique la configuración seguida del restablecimiento del tronco para que los cambios surtan efecto.
Aplicar script en teléfono SIP
En el caso de los teléfonos SIP, debe utilizar la secuencia de comandos en el perfil SIP de los teléfonos.
Estos son los pasos que debe seguir.
- Vaya a Device > Device Setting > SIP Normalization Script y agregue el nuevo script.
- Vaya a Device > Device Setting > SIP profile. Seleccione el perfil SIP en el que desea aplicar el script o crear uno nuevo copiando el perfil SIP estándar.
- En la página de configuración del perfil SIP, seleccione el script seguido de Apply Config y Reset el perfil.
- Vaya a Device > Phone. Seleccione el teléfono en el que desea aplicar la secuencia de comandos y cambie el perfil SIP con el que se creó seguido de guardarlo, aplique la configuración y reinicie el teléfono para realizar los cambios.
Desarrollar script para escenarios comunes
La fuente principal de los pasos detallados sobre cómo desarrollar el script de normalización SIP está aquí: Guía del Desarrollador para la Transparencia y Normalización de SIP.
Esta guía contiene diferentes funciones disponibles para la manipulación de mensajes SIP y contenido de protocolo de descripción de sesión (SDP) y otras API avanzadas.
A continuación, se muestran algunos ejemplos básicos de secuencia de comandos:
Modificar encabezado
Aquí reemplaza el anónimo del mensaje From Header de SIP INVITE/REINVITE saliente.
M = {}
function M.outbound_INVITE(msg)
-- Replacing the Anonymous from From Header
local from = msg:getHeader("From")
local newfrom = string.gsub(from, "anonymous" ,"1111")
msg:modifyHeader("From", newfrom)
end
return M
Code |
Explicación |
M={} |
Inicialización del contenido del mensaje. M obtiene todo el contenido del mensaje SIP aquí |
función M.outbound_INVITE(msg) |
Función Lua que se aplica a M(mensaje SIP) en la dirección saliente mensaje INVITE/REINVITE. La dirección siempre se decide en términos de CUCM, ya sea entrante o saliente. El tipo de mensaje puede ser de diferentes tipos, como INVITE, 183, 200. Para obtener más detalles, consulte la sección Descripción General de la Guía de Desarrolladores para la Normalización de SIP. |
local from = msg:getHeader("From") |
Almacena el contenido del mensaje From en formato de variable local |
getHeader |
Una de las funciones disponibles para la normalización en CCM para obtener el contenido de un encabezado en variable |
string.gsub |
Una función Lua para reemplazar un contenido determinado de una cadena |
ModifyHeader |
Una vez más, una función disponible en CCM para modificar el contenido del encabezado |
Eliminar encabezado
Aquí, elimina el encabezado de la guía de Cisco del mensaje SIP INVITE/REINVITE entrante:
M = {}
function M.inbound_INVITE(msg)
msg:removeHeader("Cisco-Guid")
end
return M
Agregar encabezado
Aquí, agrega la INFORMACIÓN en el contenido del encabezado Permitir.
Esto se agrega en el contenido original de Permitir después de una coma.
M = {}
function M.outbound_INVITE(msg)
msg:addHeader("Allow", "INFO")
end
return M
Manipular contenido SDP
Hay API disponibles para modificar el contenido SDP de un mensaje SIP. Para modificar SDP, debe obtener el cuerpo de contenido SDP del objeto Lua SIP Message con la API getSdp() proporcionada por el objeto SIP Message. A continuación, el script puede utilizar la biblioteca de cadenas que incluye las API de Cisco para manipular el SDP. Al realizar la modificación, el SDP se devuelve al objeto SIP Message con la API setSdp(sdp) proporcionada por el objeto SIP Message. Consulte API de mensajes SIP para obtener más información sobre estas API.
local sdp = msg:getSdp()
-- modification of the SDP happens at this point
-- Update the SDP associated with the SIP message
msg: etSdp(sdp)
Nota: El código cambia la línea a= para que el códec G.722 sea G722 sin el punto.
M = {}
function M.inbound_INVITE(msg)
local sdp = msg:getSdp()
if sdp
then
local g722_line = sdp:getLine("a=","G.722")
if g722_line
then
--Replace G.722 with G722. The dot is special and must be escaped using % when using gsub.
g722_line = g722_line:gsub("G%.722", "G722")
sdp = sdp:modifyLine("a=", "G.722", g722_line)
msg:setSdp(sdp)
end
end
end
return M
Verificación
Utilize esta sección para confirmar que su configuración funcione correctamente.
Habilite la opción Trace cuando aplique el script para verificar si el script funciona o no desde los registros SDL.
Troubleshoot
En esta sección se brinda información que puede utilizar para resolver problemas en su configuración.
Estas son algunas comprobaciones si el script no funciona como se esperaba:
- Si la secuencia de comandos no se ejecuta por sí misma (Busque Before Normalization/After Normalization en los registros de SDL), lo más probable es que no se haya aplicado correctamente en el dispositivo o se haya producido algún error de sintaxis.
- Verifique las funciones de normalización de CUCM de la guía de desarrolladores y, para Lua, utilice cualquier Compiler disponible para verificarlo.
- Si la secuencia de comandos se ejecuta pero no realiza ningún cambio, compruebe la dirección, el tipo de mensaje y la lógica utilizada en la secuencia de comandos.
Información Relacionada