Inleiding
Dit document beschrijft hoe u Session Initiation Protocol (SIP)-Normalisatie-scripts in Cisco Call Manager (CCM) kunt gebruiken met weinig basisvoorbeelden.
Voorwaarden
Vereisten
Cisco raadt kennis van de volgende onderwerpen aan:
- Cisco Unified Communications Manager (CUCM) versie 8.x en hoger
- SIP-protocol
- Schriftelijke kennis
Gebruikte componenten
De informatie in dit document is gebaseerd op CCM versie 11.5.
De informatie in dit document is gebaseerd op de apparaten in een specifieke laboratoriumomgeving. Alle apparaten die in dit document worden beschreven, hadden een opgeschoonde (standaard)configuratie. Als uw netwerk levend is, zorg er dan voor dat u de mogelijke impact van om het even welke opdracht begrijpt.
Configureren
Script toepassen op Trunk in CUCM
In het geval van SIP Trunk, moet het script direct op de SIP stam worden toegepast. Het gebruik van script op SIP profile in plaats van Trunk werkt niet.
Hier zijn de stappen die u moet volgen:
- Navigeer naar apparaat > apparaatinstelling > SIP Normalisatie Script-configuratie en voeg een nieuw script toe zoals in de afbeelding.
2. Navigeer naar apparaat > Trunk.
Selecteer de Trunk waarop u het script wilt toepassen en selecteer vervolgens het script dat eerder is gemaakt op de configuratiesagina. Selecteer de optie Overtrekken inschakelen en druk vervolgens de wijzigingen af die door het script worden aangebracht in de loggen van Signal Distribution Layer (SDL), zoals in de afbeelding. Bewaar de configuratie, Toepassen Config gevolgd door resetten van de romp zodat de wijzigingen van kracht worden.
Script op SIP-telefoon toepassen
In het geval van SIP-telefoons moet u het script op SIP Profile van de telefoons gebruiken.
Hier zijn de stappen die je moet volgen.
- Navigeer naar apparaat > Apparaatinstelling > SIP Normalisatie Script en voeg het nieuwe script toe.
- Navigeer naar apparaat > apparaatinstelling > SIP-profiel. Selecteer het SIP-profiel waarop u het script wilt toepassen of een nieuw profiel wilt maken door het standaard SIP-profiel te kopiëren.
- Selecteer in de Configuration Pagina van SIP Profile het Script gevolgd door Config en Reset het profiel.
- Navigeren naar apparaat > telefoon. Selecteer de telefoon waarop u het script wilt toepassen en wijzig het SIP Profile van het met het creëerde profiel dat gevolgd wordt door het op te slaan, pas de configuratie en resetten van de Telefoon toe om veranderingen te ondergaan.
Script ontwikkelen voor gemeenschappelijke scenario's
De belangrijkste bron voor gedetailleerde stappen hoe het SIP-normalisatie-script te ontwikkelen is: Development Guide voor SIP-transparantie en -normalisatie.
Deze gids bevat verschillende functies die beschikbaar zijn om manipulatie te doen in SIP-berichten en SDP-inhoud (Session Description Protocol) en andere geavanceerde API’s.
Hier zijn weinig basaal voorbeeldscript:
Kop wijzigen
Hier vervangt u de anonieme tekst uit From Header of vertrekkend SIP INVITE/REINVITE-bericht.
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 |
verklaring |
M= {} |
Initialisatie van de berichtinhoud. M krijgt hier alle inhoud van het SIP-bericht |
functie M.outbound_INVITE (msg) |
Lua-functie die wordt toegepast op M(SIP Message) in de uitgaande richting INVITE/REINVITE-bericht. De richting wordt altijd bepaald in termen van CUCM, of het nu binnenkomt of naar buiten gaat. Berichttype kan van verschillende typen zijn, zoals INVITE, 183, 200. Raadpleeg voor meer informatie de sectie Overzicht van de Guide van ontwikkelaars voor SIP-normalisatie. |
lokaal vanuit = msg:getHeader("From") |
Hiermee slaat u de inhoud van Van bericht op in lokale variabele vorm |
GetHeader |
Eén van de functies die beschikbaar zijn voor normalisatie in CCM om de inhoud van een header in variabele te krijgen |
string.gsub |
Een Lua Functie om een bepaalde inhoud van string te vervangen |
Kop wijzigen |
Opnieuw is er een functie beschikbaar in CCM om de inhoud van de header te wijzigen |
Kop verwijderen
Hier verwijdert u de kop van Cisco-Guide uit het inkomende SIP INVITE/REINVITE-bericht:
M = {}
function M.inbound_INVITE(msg)
msg:removeHeader("Cisco-Guid")
end
return M
Kop toevoegen
Hier, voeg je de INFO toe in de inhoud van Allow header.
Dit wordt toegevoegd aan de oorspronkelijke inhoud van Sta toe na een komma.
M = {}
function M.outbound_INVITE(msg)
msg:addHeader("Allow", "INFO")
end
return M
SDP-content manipuleren
Er zijn API's beschikbaar om de SDP-inhoud van een SIP-bericht te wijzigen. Om SDP te kunnen wijzigen moet deze het SDP-content-lichaam verkrijgen van het Lua SIP Berichtobject met de getSdp() API die is geleverd door het SIP Berichtobject. Het script kan dan de string bibliotheek gebruiken die Cisco's API's bevat om de SDP te manipuleren. Bij wijziging wordt de SDP teruggeschreven naar het SIP Message Object met de setSdp(sdp) API die door het SIP-berichtobject is geleverd. Raadpleeg SIP-berichten API’s voor verdere informatie over deze API’s.
local sdp = msg:getSdp()
-- modification of the SDP happens at this point
-- Update the SDP associated with the SIP message
msg: etSdp(sdp)
Opmerking: De code verandert a= lijn voor G.722 codec om G722 zonder de punt te zijn.
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
Verifiëren
Gebruik dit gedeelte om te bevestigen dat de configuratie correct werkt.
Schakel Optie overtrekken in wanneer u het script toepast om te controleren of het Script werkt of niet vanaf de SDL-logboeken.
Problemen oplossen
Deze sectie verschaft informatie die u kunt gebruiken om problemen met uw configuratie op te lossen.
Hier volgen een paar controles als het script niet werkt zoals verwacht:
- Als het script niet op zichzelf uitgevoerd wordt (Kijk naar Vóór Normalisatie/Na Normalisatie in de SDL-logs) dan is het waarschijnlijk niet correct toegepast op het apparaat of op een of andere syntax fout.
- Controleer de CUCM-normalisatie-functies in de gebruikershandleiding en voor Lua gebruikt u een beschikbare Compiler om deze te controleren.
- Als het script wel wordt uitgevoerd maar er niets verandert, dan controleert u de richting, het berichttype en de logica in het script.
Gerelateerde informatie