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 |
SIP.REQ.HEADER( |
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 |
SIP.REQ.HEADER( |
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( |
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( |
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( |
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 ( |
SIP.REQ.HEADER( |
|
SIP.REQ.HEADER( |
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( |
Devuelve el valor booleano true si algún patrón asociado a |
SIP.REQ.HEADER( |
Devuelve un valor booleano verdadero si algún patrón asociado a |
SIP.REQ.HEADER( |
Devuelve el índice del patrón coincidente asociado a |
SIP.REQ.HEADER( |
Devuelve el índice del patrón coincidente asociado a |
SIP.REQ.HEADER( |
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( |
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( |
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: re |
SIP.REQ.HEADER( |
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( |
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( |
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. |