ADC

Expresiones SIP

El lenguaje de expresiones directivas de NetScaler Advanced contiene una serie de expresiones que funcionan en conexiones del Protocolo de inicio de sesión (SIP). Estas expresiones están pensadas para usarse en las directivas de cualquier protocolo compatible que funcione en función de una solicitud o una respuesta. Estas expresiones se pueden utilizar en directivas de conmutación de contenido, limitación de velocidad, respuesta y reescritura.

Se aplican ciertas limitaciones a las expresiones SIP utilizadas en las directivas de respuesta. Solo se permiten las acciones DROP, NOOP o RESPONDWITH en un servidor virtual de equilibrio de carga SIP. Las directivas de respuesta se pueden vincular a un servidor virtual de equilibrio de carga, a un punto de enlace global de anulación, a un punto de enlace global predeterminado o a una etiqueta de directiva sip_udp.

El formato de encabezado utilizado por el protocolo SIP es similar al utilizado por el protocolo HTTP, por lo que muchas de las nuevas expresiones tienen un aspecto y un funcionamiento muy parecidos a sus análogos HTTP. Cada encabezado SIP consta de una línea que incluye el método SIP, la URL y la versión, seguida de una serie de pares de nombres y valores que parecen encabezados HTTP.

A continuación se muestra un ejemplo de encabezado SIP al que se hace referencia en las tablas de expresiones que aparecen debajo:

INVITE sip:16@www.sip.com:5060;transport=udp SIP/2.0
Record-Route: <sip:200.200.100.22;lr=on>
Via: SIP/2.0/UDP 200.200.100.22;branch=z9hG4bK444b.c8e103d1.0;rport=5060;
    received=10.102.84.18
Via: SIP/2.0/UDP 10.102.84.180:5060;branch=z9hG4bK03e76d0b;rport=5060;
    received=10.102.84.160
From: "12" <sip:12@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185
To: "16" <sip:16@sip_example.com>;tag=00127f54ec85a6d90cc14f45-53cc0185
Call-ID: 00127f54-ec850017-0e46f5b9-5ec149c2@10.102.84.180
Max-Forwards: 69CSeq: 101 INVITE
User-Agent: Cisco-CP7940G/8.0
Contact: <sip:12@10.102.84.180:5060;transport=udp>
Expires: 180
Accept: application/sdp
Allow: ACK,BYE,CANCEL,INVITE,NOTIFY,OPTIONS,REFER,REGISTER,UPDATE
Supported: replaces,join,norefersub
Content-Length: 277
Content-Type: application/sdp
Content-Disposition: session;handling=optiona
<!--NeedCopy-->

Tablas de referencia SIP

Las tablas siguientes contienen listas de expresiones que funcionan en los encabezados SIP. La primera tabla contiene expresiones que se aplican a los encabezados de las solicitudes. La mayoría de las expresiones basadas en respuestas son casi iguales a las expresiones basadas en solicitudes correspondientes. Para crear una expresión de respuesta a partir de la expresión de solicitud correspondiente, cambie las dos primeras secciones de la expresión de SIP.REQ a SIP.RES y realice otros ajustes obvios. La segunda tabla contiene las expresiones de respuesta que son exclusivas de las respuestas y no tienen equivalentes de solicitud. Puede utilizar cualquier elemento de las tablas siguientes como expresión completa por sí solo, o puede utilizar varios operadores para combinar estos elementos de expresión con otros para formar expresiones más complejas.

Expresiones de solicitud SIP

Expresión Descripción
SIP.REQ.METHOD Funciona según el método de la solicitud SIP. Los métodos de solicitud SIP admitidos son ACK, BYE, CANCEL, INFO, INVITE, MESSAGE, NOTIFY, OPTIONS, PRACK, PUBLISH, REFER, REGISTER, SUBSCRIBE y UPDATE. Esta expresión es un derivado de la clase text, por lo que todas las operaciones que se aplican al texto son aplicables a este método. Por ejemplo, para una solicitud SIP de INVITE sip:16 @10 .102.84. 181:5060; transport=udp SIP/2.0, esta expresión devuelve INVITE.
SIP.REQ.URL Funciona en la URL de la solicitud SIP. Esta expresión es un derivado de la clase text, por lo que todas las operaciones que se aplican al texto son aplicables a este método. Por ejemplo, para una solicitud SIP de INVITE sip:16 @10 .102.84. 181:5060; transport=udp SIP/2.0, esta expresión devuelve sip:16 @10 .102.84. 181:5060; transport=udp.
SIP.REQ.URL.PROTOCOL Devuelve el protocolo URL. Por ejemplo, para una URL SIP de sip: 16@www.sip.com:5060; transport=udp, esta expresión devuelve sip.
SIP.REQ.URL.HOSTNAME Devuelve la parte del nombre de host de la URL del SIP. Por ejemplo, para una URL SIP de sip: 16@www.sip.com:5060; transport=udp, esta expresión devuelve www.sip.com:5060.
SIP.REQ.URL.HOSTNAME.PORT Devuelve la parte del puerto del nombre de host de la URL SIP. Si no se especifica ningún puerto, esta expresión devuelve el puerto SIP predeterminado, 5060. Por ejemplo, para un nombre de host SIP de www.sip.com:5060, esta expresión devuelve 5060.
SIP.REQ.URL.HOSTNAME.DOMAIN Devuelve la parte del nombre de dominio del nombre de host de la URL SIP. Si el host es una dirección IP, esta expresión devuelve un resultado incorrecto. Por ejemplo, para un nombre de host SIP de www.sip.com:5060, esta expresión devuelve sip.com. Para un nombre de host SIP de 192.168.43. 15:5060, esta expresión devuelve un error.
SIP.REQ.URL.HOSTNAME.SERVER Devuelve la parte del servidor del host. Por ejemplo, para un nombre de host SIP de www.sip.com:5060, esta expresión devuelve www.
SIP.REQ.URL.USERNAME Devuelve el nombre de usuario que precede al carácter @. Por ejemplo, para una URL SIP de sip: 16@www.sip.com:5060; transport=udp, esta expresión devuelve 16.
SIP.REQ.VERSION Devuelve el número de versión SIP de la solicitud. Por ejemplo, para una solicitud SIP de INVITE sip:16 @10 .102.84. 181:5060; transport=udp SIP/2.0, esta expresión devuelve SIP/2.0.
SIP.REQ.VERSION.MAJOR Devuelve el número de versión principal (el número a la izquierda del punto). Por ejemplo, para un número de versión SIP de SIP/2.0, esta expresión devuelve 2.
SIP.REQ.VERSION.MINOR Devuelve el número de versión secundaria (el número a la derecha del punto). Por ejemplo, para un número de versión SIP de SIP/2.0, esta expresión devuelve 0.
SIP.REQ.CONTENT_LENGTH Devuelve el contenido del encabezado Content-Length. Esta expresión es un derivado de la clase sip_header_t, por lo que se pueden utilizar todas las operaciones disponibles para los encabezados SIP. Por ejemplo, para un encabezado SIP Content-Length de Content-Length: 277, esta expresión devuelve 277.
SIP.REQ.TO Devuelve el contenido del encabezado To. <sip: 16@sip_example.com >Por ejemplo, para un encabezado SIP To de: “16” <sip: 16@sip_example.com >; tag=00127f54ec85a6d90cc14f45-53cc0185, esta expresión devuelve “16”; tag=00127f54ec85a6d90cc14f45-53cc0185.
SIP.REQ.TO.ADDRESS Devuelve el URI SIP, que se encuentra en el objeto sip_url. Se pueden utilizar todas las operaciones disponibles para los URI de SIP. Por ejemplo, para un encabezado SIP To de: “16” <sip: 16@sip_example.com >; tag=00127f54ec85a6d90cc14f45-53cc0185, esta expresión devuelve sip: 16@sip_example.com.
SIP.REQ.TO.DISPLAY_NAME Devuelve la parte del nombre de visualización del encabezado Para. Por ejemplo, para un encabezado SIP To de: “16” <sip: 16@sip_example.com >; tag=00127f54ec85a6d90cc14f45-53cc0185, esta expresión devuelve 16.
SIP.REQ.TO.TAG Devuelve el valor “etiqueta” del par nombre-valor “etiqueta” del encabezado TO. Por ejemplo, para un encabezado SIP To de: “16” <sip: 16@sip_example.com >; tag=00127f54ec85a6d90cc14f45-53cc0185, esta expresión devuelve 00127f54ec85a6d90cc14f45-53cc0185.
SIP.REQ.FROM Devuelve el contenido del encabezado From. Por ejemplo, para un encabezado SIP From de: “12” <sip: 12@sip_example.com >; tag=00127f54ec85a6d90cc14f45-53cc0185, esta expresión devuelve sip: 12@sip_example.com.
SIP.REQ.FROM.ADDRESS Devuelve el URI SIP, que se encuentra en el objeto sip_url. Se pueden utilizar todas las operaciones disponibles para los URI de SIP. Por ejemplo, para un encabezado SIP From de: “12” <sip: 12@sip_example.com >; tag=00127f54ec85a6d90cc14f45-53cc0185, esta expresión devuelve sip: 12@sip_example.com.
SIP.REQ.FROM.DISPLAY_NAME Devuelve la parte del nombre de visualización del encabezado Para. Por ejemplo, para un encabezado SIP From de: “12” <sip: 12@sip_example.com >; tag=00127f54ec85a6d90cc14f45-53cc0185, esta expresión devuelve 12.
SIP.REQ.FROM.TAG Devuelve el valor de la “etiqueta” del par nombre/valor “etiqueta” del encabezado TO. Por ejemplo, para un encabezado SIP From de: “12” <sip:12@sip_example.com>; tag=00127f54ec85a6d90cc14f45-53cc0185, esta expresión devuelve 00127f54ec85a6d90cc14f45-53cc0185.
SIP.REQ.VIA Devuelve el encabezado Via completo. Si hay varios encabezados Via en la solicitud, devuelve el último encabezado Via. Por ejemplo, para los dos encabezados Via del encabezado SIP de ejemplo, esta expresión devuelve Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=Z9HG4BK03E76D0b; rport=5060; received=10.102.84.160.
SIP.REQ.VIA.SENTBY_ADDRESS Devuelve la dirección que envió la solicitud. Por ejemplo, para el encabezado Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9HG4BK03E76D0b; rport=5060; received=10.102.84.160, esta expresión devuelve 10.102.84.180.
SIP.REQ.VIA.SENTBY_PORT Devuelve el puerto que envió la solicitud. Por ejemplo, para el encabezado Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9HG4BK03E76D0b; rport=5060; received=10.102.84.160, esta expresión devuelve 5060.
SIP.REQ.VIA.RPORT Devuelve el valor del par nombre/valor del informe. Por ejemplo, para el encabezado Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9HG4BK03E76D0b; rport=5060; received=10.102.84.160, esta expresión devuelve 5060.
SIP.REQ.VIA.BRANCH Devuelve el valor del par nombre/valor de la rama. Por ejemplo, para el encabezado Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9HG4BK03E76D0b; rport=5060; received=10.102.84.160, esta expresión devuelve Z9HG4BK03E76D0b.
SIP.REQ.VIA.RECEIVED Devuelve el valor del par nombre/valor recibido. Por ejemplo, para el encabezado Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9HG4BK03E76D0b; rport=5060; received=10.102.84.160, esta expresión devuelve 10.102.84.160.
SIP.REQ.CALLID Devuelve el contenido del encabezado Callid. Esta expresión es un derivado de la clase sip_header_t, por lo que se pueden utilizar todas las operaciones disponibles para los encabezados SIP. Por ejemplo, para un encabezado SIP Calid del identificador de llamada: 00127f54-ec850017-0e46f5b9-5ec149c2 @10 .102.84.180, esta expresión devuelve 00127f54-ec850017-0e46f5b9-5ec149c2 @10 .102.84.180.
SIP.REQ.CSEQ Devuelve el número CSEQ del CSEQ, como un entero. Por ejemplo, para un encabezado SIP CSEQ de CSeq: 101 INVITE, esta expresión devuelve 101.
SIP.REQ.HEADER() Devuelve el encabezado SIP especificado. Por, sustituya el nombre del encabezado que desee. Por ejemplo, para devolver el encabezado SIP From, debe escribir SIP.REQ.HEADER ("De").
SIP.REQ.HEADER().INSTANCE() Devuelve la instancia especificada del encabezado SIP especificado. Se pueden producir varias instancias del mismo encabezado SIP. Si desea una instancia específica de un encabezado SIP de este tipo (por ejemplo, un encabezado Via específico), puede especificar ese encabezado escribiendo un número como. Las instancias de encabezado coinciden desde la última (0) hasta la primera. En otras palabras, SIP.REQ.HEADER ("Via") .INSTANCE (0) devuelve la última instancia del encabezado Via, mientras que SIP.REQ.HEADER ("Via") .INSTANCE (1) devuelve la última instancia excepto una de las cabeceras Via, y así sucesivamente. Por ejemplo, si se usa en el encabezado SIP del ejemplo, SIP.REQ.HEADER ("Via") .INSTANCE (1) devuelve VIA: SIP/2.0/UDP 10.102.84. 180:5060; branch=Z9HG4BK03E76D0b; rport=5060.
SIP.REQ.HEADER().VALUE() Devuelve el contenido de la instancia especificada del encabezado SIP especificado. El uso es casi el mismo que el de la expresión anterior. Por ejemplo, si se usa en el ejemplo del encabezado SIP de la entrada de la tabla anterior, SIP.REQ.HEADER (“Via”) .VALUE (1) devuelve SIP/2.0/UDP 10.102.84. 180:5060; branch=z9hg4bk03e76d0b; rport=5060.
SIP.REQ.HEADER().COUNT Devuelve el número de instancias de un encabezado determinado como un entero. Por ejemplo, si se usa en el ejemplo de encabezado SIP anterior, SIP.REQ.HEADER (“Via”) .COUNT devuelve 2.
SIP.REQ.HEADER().EXISTS Devuelve un valor booleano verdadero o falso, según si el encabezado especificado existe o no. Por ejemplo, si se usa en el ejemplo de encabezado SIP anterior, SIP.REQ.HEADER (“Expires”) .existsReturns true, mientras que SIP.REQ.HEADER (“Caller-ID”) .EXISTS devuelve false.
SIP.REQ.HEADER().LIST Devuelve la lista de parámetros separados por comas en el encabezado especificado. Por ejemplo, si se usa en el ejemplo de encabezado SIP anterior, SIP.REQ.HEADER (“Allow”) .LIST devuelve ACK, BYE, CANCEL, INVITE, NOTIFY, OPTIONS, REFER, REGISTER, UPDATE. Puede agregar la cadena .GET () para seleccionar un elemento específico de la lista. Por ejemplo, para obtener el primer elemento (ACK) de la lista anterior, debe escribir SIP.REQ.HEADER ("Allow") .LIST.GET (0). Para extraer el segundo elemento (BYE), escriba SIP.REQ.HEADER ("Allow") .LIST.GET (1). Nota: Si el encabezado especificado contiene una lista de pares de nombre/valor, se devuelve el par nombre/valor completo.
SIP.REQ.HEADER().TYPECAST_SIP_HEADER_T("") Encasillados para. Se puede escribir cualquier texto a la clase sip_header_t, después de lo cual se pueden utilizar todas las operaciones basadas en encabezados. Tras realizar esta operación, puede aplicar todas las operaciones que se puedan utilizar con. Por ejemplo, la expresión SIP.REQ.CONTENT_LENGTH.TYPECAST_SIP_HEADER_T encasilló todas las instancias del encabezado Content-Length. Después de realizar esta operación, puede aplicar todas las operaciones de encabezado a todas las instancias del encabezado especificado.
SIP.REQ.HEADER().CONTAINS(). Devuelve un valor booleano verdadero si la cadena de texto especificada está presente en cualquier instancia del encabezado especificado. Funciona en todas las instancias del encabezado especificado. Las instancias de encabezado coinciden desde la última (0) hasta la primera.
SIP.REQ.HEADER().EQUALS_ANY() Devuelve el valor booleano true si algún patrón asociado a coincide con algún contenido en cualquier instancia del encabezado especificado. Funciona en todas las instancias del encabezado especificado. Las instancias de encabezado coinciden desde la última (0) hasta la primera.
SIP.REQ.HEADER().CONTAINS_ANY() Devuelve un valor booleano verdadero si algún patrón asociado a coincide con algún contenido en cualquier instancia del encabezado especificado. Funciona en todas las instancias del encabezado especificado. Las instancias de encabezado coinciden desde la última (0) hasta la primera.
SIP.REQ.HEADER().CONTAINS_INDEX() Devuelve el índice del patrón coincidente asociado a si ese patrón coincide con algún contenido en cualquier instancia del encabezado especificado. Funciona en todas las instancias del encabezado especificado. Las instancias de encabezado coinciden desde la última (0) hasta la primera.
SIP.REQ.HEADER().EQUALS_INDEX() Devuelve el índice del patrón coincidente asociado a si ese patrón coincide con cualquier instancia del encabezado especificado. Funciona en todas las instancias del encabezado especificado. Las instancias de encabezado coinciden desde la última (0) hasta la primera.
SIP.REQ.HEADER().SUBSTR() Si la cadena especificada está presente en cualquier instancia del encabezado especificado, esta expresión devuelve esa cadena. Por ejemplo, para el encabezado SIP Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9hg4bk03e76d0b; rport=5060; received=10.102.84.160”, SIP.REQ.HEADER (“Via”) .SUBSTR (“rport=5060”) devuelve “rport=5060”.sip.req.HEADER (“Via””) .SUBSTR (“rport=5061”) devuelve una cadena vacía.
SIP.REQ.HEADER().AFTER_STR() Si la cadena especificada está presente en cualquier instancia del encabezado especificado, esta expresión devuelve la cadena inmediatamente después de esa cadena. Por ejemplo, para el encabezado SIP Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9HG4BK03E76D0b; rport=5060; received=10.102.84.160, la expresión SIP.REQ.HEADER (“Via”) .AFTER_STR (“rport=”) devuelve 5060.
SIP.REQ.HEADER().REGEX_MATCH() Devuelve un valor booleano verdadero si la expresión regular especificada (regex) coincide con cualquier instancia del encabezado especificado. Debe especificar la expresión regular en el siguiente formato: reexpresión regular. La expresión regular no puede tener más de 1499 caracteres. Debe cumplir con la biblioteca de expresiones regulares PCRE. Consulte http://www.pcre.org/pcre.txt para ver la documentación sobre la sintaxis de expresiones regulares de PCRE. La página de manual de pcrepattern también contiene información útil sobre la especificación de patrones mediante el uso de expresiones regulares de PCRE. La sintaxis de expresiones regulares admitida en esta expresión presenta algunas diferencias con respecto a la PCRE. No se permiten referencias anteriores. Debe evitar las expresiones regulares recursivas; aunque algunas funcionan, muchas no. El metacarácter dot (.) coincide con las líneas nuevas. No se admite Unicode. SET_TEXT_MODE (IGNORECASE) anula el (? i) opción interna especificada en la expresión regular.
SIP.REQ.HEADER().REGEX_SELECT() Si la expresión regular especificada coincide con cualquier texto de cualquier instancia del encabezado especificado, esta expresión devuelve el texto. Por ejemplo, para el encabezado SIP Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9HG4BK03E76D0b; rport=5060; received=10.102.84.160, la expresión SIP.REQ.HEADER (“Via”) .REGEX_SELECT (“received= [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9 9] {1,3}. [0-9] {1,3}”) devuelve las devoluciones recibidas = 10.102.84.160.
SIP.REQ.HEADER().AFTER_REGEX() Si la expresión regular especificada coincide con cualquier texto de cualquier instancia del encabezado especificado, esta expresión devuelve la cadena inmediatamente después de ese texto. Por ejemplo, para el encabezado SIP Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9HG4BK03E76D0b; rport=5060; received=10.102.84.160, la expresión SIP.REQ.HEADER (“Via”) .AFTER_REGEX (“received=”) devuelve 10.102.84.160.
SIP.REQ.HEADER().BEFORE_REGEX() Si la expresión regular especificada coincide con cualquier texto de cualquier instancia del encabezado especificado, esta expresión devuelve la cadena inmediatamente anterior a ese texto. Por ejemplo, para el encabezado SIP Via: SIP/2.0/UDP 10.102.84. 180:5060; branch=z9hg4bk03e76d0b; rport=5060; received=10.102.84.160, la expresión SIP.REQ.HEADER (“Via”) .BEFORE_REGEX (“[0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}. [0-9] {1,3}”) devuelve recibido=.
SIP.REQ.FULL_HEADER Devuelve el encabezado SIP completo, incluido el CR/LF de terminación.
SIP.REQ.IS_VALID Devuelve un valor booleano verdadero si el formato de la solicitud es válido.
SIP.REQ.BODY() Devuelve el cuerpo de la solicitud, hasta la longitud especificada. Si la longitud especificada es mayor que la longitud del cuerpo de la solicitud, esta expresión devuelve el cuerpo completo de la solicitud.
SIP.REQ.LB_VSERVER Devuelve el nombre del servidor virtual de equilibrio de carga (LB vserver) que atiende la solicitud actual.
SIP.REQ.CS_VSERVER Devuelve el nombre del servidor virtual de conmutación de contenido (CS vserver) que atiende la solicitud actual.

Expresiones de respuesta SIP

Expresión Descripción
SIP.RES.STATUS Devuelve el código de estado de la respuesta SIP. Por ejemplo, si la primera línea de la respuesta es SIP/2.0 100 Trying, esta expresión devuelve 100.
SIP.RES.STATUS_MSG Devuelve el mensaje de estado de la respuesta SIP. Por ejemplo, si la primera línea de la respuesta es SIP/2.0 100 Trying, esta expresión devuelve Trying.
SIP.RES.IS_REDIRECT Devuelve un valor booleano verdadero si el código de respuesta es una redirección.
SIP.RES.METHOD Devuelve el método de respuesta extraído de la cadena del método de solicitud en el encabezado CSeQ.
Expresiones SIP