Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Configurazione

Applica script su trunk in CUCM

Applica script al telefono SIP

Sviluppo di script per scenari comuni

Modifica intestazione

Rimuovi intestazione

Aggiungi intestazione

Manipolazione del contenuto SDP

Verifica

Risoluzione dei problemi

Informazioni correlate

Introduzione

In questo documento viene descritto come utilizzare lo script di normalizzazione SIP (Session Initiation Protocol) in Cisco Call Manager (CCM) con alcuni esempi di base.

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza dei seguenti argomenti:

- Cisco Unified Communications Manager (CUCM) versione 8.x e successive

- protocollo SIP

- Knowledge Base

Componenti usati

Il riferimento delle informazioni contenute in questo documento è la CCM versione 11.5.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Configurazione

Applica script su trunk in CUCM

Nel caso del trunk SIP, lo script deve essere applicato direttamente sul trunk SIP. L'utilizzo dello script nel profilo SIP anziché nel Trunk non funzionerà.

Di seguito sono riportati i passaggi da seguire:

1. Selezionare Periferica > Impostazione dispositivo > Configurazione script di normalizzazione SIP e aggiungere un nuovo script come mostrato nell'immagine.

2. Passare a Dispositivo > Trunk.

Selezionare il Trunk al quale si desidera applicare lo script e nella pagina di configurazione dello script selezionare lo script creato in precedenza. Selezionare l'opzione Enable Trace per stampare le modifiche apportate dallo script nei log SDL (Signal Distribution Layer) come mostrato nell'immagine. Per rendere effettive le modifiche, salvare la configurazione, applicare la configurazione e quindi reimpostare il trunk.

Applica script al telefono SIP

In caso di telefoni SIP, è necessario utilizzare lo script sul profilo SIP dei telefoni.

Di seguito sono elencati i passaggi da seguire.

1. Selezionare Periferica > Impostazioni dispositivo > Script di normalizzazione SIP e aggiungere il nuovo script.

2. Selezionare Periferica > Impostazione periferica > Profilo SIP. Selezionare il profilo SIP al quale si desidera applicare lo script oppure crearne uno nuovo copiando il profilo SIP standard.

3. Nella pagina Configurazione del profilo SIP, selezionare lo script, quindi Applica configurazione e Reimposta il profilo.

4. Selezionare Dispositivo > Telefono. Selezionare il telefono al quale applicare lo script e modificare il profilo SIP di esso con quello creato seguito da salvarlo, applicare la configurazione e reimpostare il telefono per apportare le modifiche.

Sviluppo di script per scenari comuni

La fonte principale per i passaggi dettagliati su come sviluppare lo script di normalizzazione SIP è la seguente: Guida per gli sviluppatori per la trasparenza e la normalizzazione del SIP.

Questa guida contiene diverse funzioni disponibili per la modifica nei messaggi SIP e nel contenuto SDP (Session Description Protocol) e altre API avanzate.

Di seguito sono riportati alcuni script di esempio di base:

Modifica intestazione

Sostituire l'anonimo dall'intestazione From del messaggio SIP INVITE/REINVITE in uscita.

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

Codice

Spiegazione

M={0}

Inizializzazione del contenuto del messaggio. M ottiene qui tutto il contenuto del messaggio SIP

funzione M.outbound_INVITE(msg)

Funzione Lua applicata al messaggio M (SIP Message) nella direzione in uscita INVITE/REINVITE. La direzione viene sempre decisa in termini di CUCM, sia in entrata che in uscita verso di esso. Il tipo di messaggio può essere di tipo diverso, ad esempio INVITE, 183, 200.

Per ulteriori informazioni, consultare la sezione Overview del manuale Developers Guide for SIP Normalization.

local from = msg:getHeader("Da")

Archivia il contenuto del messaggio From in una variabile locale

getHeader

Una delle funzioni disponibili per la normalizzazione in CCM per ottenere il contenuto di un'intestazione nella variabile

stringa.gsub

Una funzione Lua per sostituire un particolare contenuto da una stringa

modificaIntestazione

Anche in questo caso, una funzione disponibile in CCM per modificare il contenuto dell'intestazione

Rimuovi intestazione

L'intestazione della Guida Cisco viene rimossa dal messaggio SIP INVITE/REINVITE in arrivo:

M = {}

function M.inbound_INVITE(msg)

msg:removeHeader("Cisco-Guid")

end

return M

Aggiungi intestazione

In questa pagina è possibile aggiungere INFO nel contenuto dell'intestazione Consenti.

Viene aggiunto nel contenuto originale di Consenti dopo una virgola.

M = {}

function M.outbound_INVITE(msg)

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

end

return M

Manipolazione del contenuto SDP

Sono disponibili delle API per modificare il contenuto SDP di un messaggio SIP. Per modificare SDP, è necessario ottenere il corpo del contenuto SDP dall'oggetto messaggio SIP Lua con l'API getSdp() fornita dall'oggetto messaggio SIP. Lo script può quindi utilizzare la libreria di stringhe che include le API Cisco per modificare l'SDP. Quando viene modificato, il SDP viene scritto nuovamente nell'oggetto messaggio SIP con l'API setSdp(sdp) fornita dall'oggetto messaggio SIP. Per ulteriori informazioni sulle API, consultare il documento sui messaggi SIP.

local sdp = msg:getSdp()

-- modification of the SDP happens at this point

-- Update the SDP associated with the SIP message

msg: etSdp(sdp)

Nota: Il codice cambia a= riga per il codec G.722 in G722 senza il 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

Verifica

Fare riferimento a questa sezione per verificare che la configurazione funzioni correttamente.

Attivate l'opzione Trace quando applicate lo script per verificare se funziona o meno dai log SDL.

Risoluzione dei problemi

Le informazioni contenute in questa sezione permettono di risolvere i problemi relativi alla configurazione.

Di seguito sono riportati alcuni controlli per verificare se lo script non funziona come previsto:

- Se lo script non viene eseguito da solo (cercare Prima della normalizzazione/Dopo la normalizzazione nei log SDL), molto probabilmente non è stato applicato correttamente sul dispositivo o è stato rilevato un errore di sintassi.

- Verificare le funzioni di normalizzazione CUCM dalla guida per gli sviluppatori e, per Lua, utilizzare un compilatore disponibile per verificarlo.

- Se lo script viene eseguito ma non apporta modifiche, verificare la direzione, il tipo di messaggio e la logica utilizzata nello script.

Informazioni correlate

- 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

- Documentazione e supporto tecnico – Cisco Systems