Contents

Introduction

Prerequisites

Requirements

Componentes Utilizados

Configurar

Aplicar script no tronco no CUCM

Aplicar script no telefone SIP

Desenvolver script para cenários comuns

Modificar cabeçalho

Remover cabeçalho

Adicionar cabeçalho

Manipular conteúdo de SDP

Verificar

Troubleshoot

Informações Relacionadas

Introduction

Este documento descreve como usar o Script de normalização do Session Initiation Protocol (SIP) no Cisco Call Manager (CCM) com alguns exemplos básicos.

Prerequisites

Requirements

A Cisco recomenda que você tenha conhecimento destes tópicos:

- Cisco Unified Communications Manager (CUCM) versão 8.x e posterior

- Protocolo SIP

- Scripting Knowledge

Componentes Utilizados

As informações neste documento são baseadas na versão 11.5 do 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. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.

Configurar

Aplicar script no tronco no CUCM

No caso de Tronco SIP, o script precisa ser aplicado diretamente no tronco SIP. O uso do script no perfil SIP em vez de Tronco não funcionará.

Estas são as etapas que você precisa seguir:

1. Navegue até Device > Device Setting > SIP Normalization Script Configuration e adicione um novo Script como mostrado na imagem.

2. Navegue até Dispositivo > Tronco.

Selecione o Tronco no qual deseja aplicar o script e, na página de configuração dele, selecione o script criado anteriormente. Selecione a opção Enable Trace e imprimirá as alterações feitas pelo script nos registros SDL (Signal Distribution Layer — Camada de Distribuição de Sinais) como mostrado na imagem. Salve a configuração, aplique a configuração seguido de redefinição do tronco para que as alterações entrem em vigor.

Aplicar script no telefone SIP

No caso de telefones SIP, você deve usar o Script no perfil SIP dos telefones.

Aqui estão as etapas que você precisa seguir.

1. Navegue até Device > Device Setting > SIP Normalization Script e adicione o New Script.

2. Navegue até Device > Device Setting > SIP profile. Selecione o perfil SIP no qual deseja aplicar o script ou criar um novo ao copiar o perfil SIP padrão.

3. Na página de configuração do perfil SIP, selecione o script seguido por Apply Config e Reset o perfil.

4. Navegue até Dispositivo > Telefone. Selecione o Telefone no qual deseja aplicar o script e altere o Perfil SIP com o criado, seguido de salvá-lo, aplique a configuração e redefina o Telefone para fazer alterações.

Desenvolver script para cenários comuns

A principal fonte para etapas detalhadas sobre como desenvolver o script de normalização SIP está aqui: Guia do desenvolvedor para transparência e normalização do SIP.

Este guia contém diferentes funções disponíveis para manipulação em mensagens SIP, conteúdo do Session Description Protocol (SDP) e outras APIs avançadas.

Aqui estão alguns exemplos básicos de script:

Modificar cabeçalho

Aqui você substitui o anônimo do cabeçalho De da mensagem CONVITE/RECONVITE SIP de saída.

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

Explicação

M={}

Inicialização do conteúdo da mensagem. M obtém todo o conteúdo da mensagem SIP aqui

função M.outbound_INVITE(msg)

Função Lua aplicada a M(Mensagem SIP) na direção de saída Mensagem CONVITE/RECONVITE. A direção é sempre decidida em termos de CUCM, seja de entrada ou de saída. O tipo de mensagem pode ser de tipos diferentes como CONVITE, 183, 200.

Para obter mais detalhes, consulte a seção Visão geral do Guia de desenvolvedores para a normalização SIP.

local de = msg:getHeader("De")

Armazena o conteúdo da mensagem From no formato de variável local

getHeader

Uma das funções disponíveis para normalização no CCM para obter o conteúdo de um cabeçalho em variáveis

string.gsub

Uma função Lua para substituir um conteúdo específico de string

modificarCabeçalho

Novamente, uma função disponível no CCM para modificar o conteúdo do cabeçalho

Remover cabeçalho

Aqui, você remove o cabeçalho do Cisco-Guide da mensagem de CONVITE/RECONVITE SIP recebida:

M = {}

function M.inbound_INVITE(msg)

msg:removeHeader("Cisco-Guid")

end

return M

Adicionar cabeçalho

Aqui, você adiciona as INFORMAÇÕES no conteúdo do cabeçalho Permitir.

Isso é adicionado no conteúdo original de Permitir após uma vírgula.

M = {}

function M.outbound_INVITE(msg)

msg:addHeader("Allow", "INFO")

end

return M

Manipular conteúdo de SDP

Há APIs disponíveis para modificar o conteúdo SDP de uma mensagem SIP. Para modificar o SDP, ele deve obter o corpo do conteúdo do SDP do objeto Lua SIP Message com a API getSdp() fornecida pelo objeto SIP Message. O script pode então usar a biblioteca de cadeias de caracteres que inclui as APIs da Cisco para manipular o SDP. Ao modificar, o SDP é gravado de volta no objeto de Mensagem SIP com a API setSdp(sdp) fornecida pelo objeto de Mensagem SIP. Consulte APIs de mensagens SIP para obter mais informações sobre essas APIs.

local sdp = msg:getSdp()

-- modification of the SDP happens at this point

-- Update the SDP associated with the SIP message

msg: etSdp(sdp)

Note: O código altera uma linha= para que o codec G.722 seja G722 sem o ponto.

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

Verificar

Use esta seção para confirmar se a sua configuração funciona corretamente.

Habilitar Opção de Rastreamento quando você aplica o script para verificar se o Script funciona ou não dos logs SDL.

Troubleshoot

Esta seção disponibiliza informações para a solução de problemas de configuração.

Aqui estão algumas verificações se o script não funcionar como esperado:

- Se o script não for executado sozinho (Procure Antes da Normalização/Depois da Normalização nos registros SDL) provavelmente, ele não foi aplicado corretamente no dispositivo ou algum erro de sintaxe.

- Verifique as funções de normalização do CUCM no guia dos desenvolvedores e, para a Lua, use qualquer Compilador disponível para verificá-lo.

- Se o script for executado, mas não fizer nenhuma alteração, verifique a direção, o tipo de mensagem e a lógica usada no script.

Informações Relacionadas

- 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

- Suporte Técnico e Documentação - Cisco Systems