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:
- 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.
- Navegue até Device > Device Setting > SIP Normalization Script e adicione o New Script.
- 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.
- Na página de configuração do perfil SIP, selecione o script seguido por Apply Config e Reset o perfil.
- 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