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:
- 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.
- Selezionare Periferica > Impostazioni dispositivo > Script di normalizzazione SIP e aggiungere il nuovo script.
- 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.
- Nella pagina Configurazione del profilo SIP, selezionare lo script, quindi Applica configurazione e Reimposta il profilo.
- 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