In dem Dokumentationssatz für dieses Produkt wird die Verwendung inklusiver Sprache angestrebt. Für die Zwecke dieses Dokumentationssatzes wird Sprache als „inklusiv“ verstanden, wenn sie keine Diskriminierung aufgrund von Alter, körperlicher und/oder geistiger Behinderung, Geschlechtszugehörigkeit und -identität, ethnischer Identität, sexueller Orientierung, sozioökonomischem Status und Intersektionalität impliziert. Dennoch können in der Dokumentation stilistische Abweichungen von diesem Bemühen auftreten, wenn Text verwendet wird, der in Benutzeroberflächen der Produktsoftware fest codiert ist, auf RFP-Dokumentation basiert oder von einem genannten Drittanbieterprodukt verwendet wird. Hier erfahren Sie mehr darüber, wie Cisco inklusive Sprache verwendet.
Cisco hat dieses Dokument maschinell übersetzen und von einem menschlichen Übersetzer editieren und korrigieren lassen, um unseren Benutzern auf der ganzen Welt Support-Inhalte in ihrer eigenen Sprache zu bieten. Bitte beachten Sie, dass selbst die beste maschinelle Übersetzung nicht so genau ist wie eine von einem professionellen Übersetzer angefertigte. Cisco Systems, Inc. übernimmt keine Haftung für die Richtigkeit dieser Übersetzungen und empfiehlt, immer das englische Originaldokument (siehe bereitgestellter Link) heranzuziehen.
In diesem Dokument wird die Verwendung des SIP-Normalisierungs-Skripts (Session Initiation Protocol) im Cisco Call Manager (CCM) mit einigen einfachen Beispielen beschrieben.
Cisco empfiehlt, über Kenntnisse in folgenden Bereichen zu verfügen:
Die Informationen in diesem Dokument basieren auf CCM-Version 11.5.
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Bei einem SIP-Trunk muss das Skript direkt auf den SIP-Trunk angewendet werden. Die Verwendung von Skripts in SIP-Profilen anstelle von Trunks funktioniert nicht.
Führen Sie die folgenden Schritte aus:
2. Navigieren Sie zu Gerät > Trunk.
Wählen Sie den Trunk aus, auf den das Skript angewendet werden soll, und wählen Sie auf der Konfigurationsseite des Skripts das zuvor erstellte Skript aus. Wählen Sie die Option Enable Trace (Trace aktivieren) aus, um die vom Skript vorgenommenen Änderungen in den Protokollen der Signalverteilungsschicht (SDL) wie im Bild gezeigt zu drucken. Speichern Sie die Konfiguration, wenden Sie Konfig. an, und setzen Sie den Trunk zurück, damit die Änderungen wirksam werden.
Bei SIP-Telefonen müssen Sie das Skript für das SIP-Profil der Telefone verwenden.
Hier sind die Schritte, die Sie durchführen müssen.
Hier finden Sie die wichtigsten Schritte zur Entwicklung eines SIP-Normalisierungsskripts: Entwicklerhandbuch für SIP-Transparenz und -Normalisierung.
Dieser Leitfaden enthält verschiedene Funktionen, die zur Manipulation von SIP-Nachrichten, SDP-Inhalten (Session Description Protocol) und anderen erweiterten APIs verfügbar sind.
Im Folgenden sind einige einfache Beispielskripts aufgeführt:
Hier ersetzen Sie die anonyme From Header der ausgehenden SIP-INVITE/REINVITE-Nachricht.
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 | Erläuterung |
M={}} | Initialisierung des Nachrichteninhalts M erhält hier den gesamten Inhalt der SIP-Nachricht. |
Funktion M.outbound_INVITE(msg) | Lua-Funktion, die auf M(SIP-Nachricht) in ausgehende Richtung INVITE/REINVITE-Nachricht angewendet wird. Die Richtung wird immer im Hinblick auf den CUCM festgelegt, ob er ein- oder ausgeht. Der Meldungstyp kann von verschiedenen Typen sein, z. B. INVITE, 183, 200. Weitere Informationen finden Sie im Abschnitt Übersicht im Developers Guide for SIP Normalization. |
local from = msg:getHeader("From") | Speichert den Inhalt der From-Nachricht in lokalem variablenbasiertem Format |
getHeader | Eine der Funktionen für die Normalisierung in CCM, um den Inhalt eines Headers in variabler Form abzurufen |
string.gsub | Eine Lua-Funktion, um einen bestimmten Inhalt aus einer Zeichenfolge zu ersetzen. |
modifizierenHeader | Auch hier ist eine Funktion in CCM verfügbar, um den Inhalt der Kopfzeile zu ändern. |
Hier entfernen Sie den Cisco-Guide-Header aus der eingehenden SIP-INVITE-/REINVITE-Nachricht:
M = {} function M.inbound_INVITE(msg) msg:removeHeader("Cisco-Guid") end return M
Hier fügen Sie den INFO in den Inhalt des Allow-Headers hinzu.
Dies wird im ursprünglichen Inhalt von Allow nach einem Komma hinzugefügt.
M = {} function M.outbound_INVITE(msg) msg:addHeader("Allow", "INFO") end return M
Es stehen APIs zur Verfügung, um den SDP-Inhalt einer SIP-Nachricht zu ändern. Um SDP zu ändern, muss der SDP-Content-Text vom Lua SIP Message-Objekt mit der getSdp()-API abgerufen werden, die vom SIP Message-Objekt bereitgestellt wird. Das Skript kann dann die Zeichenfolgenbibliothek verwenden, die die APIs von Cisco enthält, um das SDP zu bearbeiten. Bei der Änderung wird das SDP mit der vom SIP Message-Objekt bereitgestellten setSdp(sdp)-API auf das SIP Message-Objekt zurückgeschrieben. Weitere Informationen zu diesen APIs finden Sie unter SIP-Nachrichten-APIs.
local sdp = msg:getSdp() -- modification of the SDP happens at this point -- Update the SDP associated with the SIP message msg: etSdp(sdp)
Hinweis: Der Code ändert a= Zeile für den G.722-Codec in G722 ohne Punkt.
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
In diesem Abschnitt überprüfen Sie, ob Ihre Konfiguration ordnungsgemäß funktioniert.
Aktivieren Sie Trace Option, wenn Sie das Skript anwenden, um zu überprüfen, ob das Skript in den SDL-Protokollen funktioniert oder nicht.
Dieser Abschnitt enthält Informationen, die Sie zur Fehlerbehebung bei Ihrer Konfiguration verwenden können.
Hier einige Überprüfungen, ob das Skript nicht wie erwartet funktioniert: