Contenido

Introducción

Prerequisites

Requirements

Componentes Utilizados

Configurar

Aplicar script en tronco en CUCM

Aplicar script en teléfono SIP

Desarrollar script para escenarios comunes

Modificar encabezado

Eliminar encabezado

Agregar encabezado

Manipular contenido SDP

Verificación

Troubleshoot

Información Relacionada

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:

1. 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.

1. Vaya a Device > Device Setting > SIP Normalization Script y agregue el nuevo script.

2. 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.

3. En la página de configuración del perfil SIP, seleccione el script seguido de Apply Config y Reset el perfil.

4. 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

- https://www.cisco.com/c/en/us/td/docs/voice_ip_comm/cucm/sip_tn/8_5_1/sip_t_n/8-trace.html

- https://supportforums.cisco.com/t5/collaboration-voice-and-video/a-guide-to-sip-normalization-on-cucm-and-lua-scripting/ba-p/3099409

- Soporte Técnico y Documentación - Cisco Systems