# Construtor de Expressões de Regras de SIP

Utilize o construtor de subexpressões para construir condições de regras complexas de subexpressões utilizando AND, OR, NOT e agrupamento parentético. O construtor de regras valida a regra quando você aplica as alterações e o alerta para os parênteses não correspondidos e os operadores de lógica não suportados.

Para visualizar essa página de console administrativo, clique em Servidores > Tipos de Servidor > On Demand Routers > odr_name > Configurações SIP On Demand Router > Regras de SIP de Política de Roteamento > Incluir > Construtor de Subexpressão.

Para modificar regras com o construtor de regras, você deve ter privilégios administrativos de administrador.

## Selecionar Operando

### Operandos de Política de Roteamento e Serviço

Dependendo do protocolo selecionado, são exibidos operandos diferentes. A tabela a seguir inclui os nomes dos operandos, como exibidos no console, o operando real como aparecerá na expressão, os protocolos válidos por operando e a descrição para cada operando.

Tabela 1. Operandos. A tabela a seguir descreve os nomes de operando exibidos no console
Operando | Sintaxe | Descrição
--- | --- | ---
método SIP | `request.method` | O método SIP do pedido. Os valores possíveis são INVITE, TRYING, RINGING, ACK, OK e BYE. Se a mensagem não for um pedido, esse operando retornará nulo.
Código de resposta do SIP | `response.code` | O código da resposta. Se a mensagem não for uma resposta, esse operando retornará -1.
Esquema do cabeçalho de Destino | `to.uri.scheme` | O esquema do campo Cabeçalho de Destino.
Esquema da URI | `request.uri.scheme` | O esquema do URI.
Esquema do cabeçalho de Origem | `request.from.uri.scheme` | O esquema do campo Cabeçalho de Origem.
Pedir URI | `request.uri` | O URI do pedido.
Para URI | `request.to.uri` | O URI do campo Cabeçalho de Destino.
Da URI | `request.from.uri` | O URI do campo Cabeçalho de Origem.
Cabeçalho de | `request.from` | O campo Cabeçalho de Origem.
Cabeçalho de Destino | `request.to` | O campo Cabeçalho de Destino.
Nome de Exibição do Cabeçalho de Destino | `request.to.display-name` | O nome de exibição no campo Cabeçalho de Destino.
Nome de Exibição do Cabeçalho de Origem | `request.from.display-name` | O nome de exibição no campo Cabeçalho de Origem.
Para o Host do URI | `request.to.uri.host` | A porta no URI do campo Cabeçalho de Destino.
Host do Servidor | `serverhost` | O nome completo do host do servidor. Esse operando não suporta operadores numéricos, como `>, >=, <, <=`.
Porta | `port` | A porta de atendimento na qual o pedido foi recebido.
Cabeçalho de Contato | `request.contact` | O campo Cabeçalho de Contato.
URI de Contato | `request.contact.uri` | O URI do campo Cabeçalho de Contato.
Host Cliente | `clienthost` | O nome completo do host cliente. Este é o valor do nome do host do comando IP (Internet Protocol). Esse operando não suporta operadores numéricos, como `>, >=, <, <=`.
clientipv4 | `clientipv4` | O endereço IP do computador cliente que utiliza o tipo de endereço quadrangular pontilhado IPv4 (Internet Protocol version 4) `n.n.n.n`.
clientipv6 | `clientipv6` | O tipo de endereço IPv6 (Internet Protocol version 6) de 128 bits de `x:x:x:x:x:x:x:x` seguindo o RFC 1924 (Pedido de Comentários 1924) do computador cliente.
serveripv4 | `serveripv4` | O endereço IP do computador servidor que utiliza o tipo de endereço quadrangular pontilhado IPv4 `n.n.n.n`.
serveripv6 | `serveripv6` | O tipo de endereço IPv6 de 128 bits de `x:x:x:x:x:x:x:x` seguindo o RFC 1924 do computador servidor.
Transporte de solicitação | `request.transport` | O transporte do pedido.
Usuário do URI da solicitação | `request.uri.user` | O usuário no URI do pedido.
Do Usuário do URI | `request.from.uri.user` | O usuário no campo Cabeçalho de Origem.
Para o Usuário do URI | `request.to.uri.user` | O usuário no campo Cabeçalho de Destino.
Host do URI do Pedido | `request.uri.host` | O host no URI do pedido.
Do Host do URI | `request.from.uri.host` | O host no campo Cabeçalho de Origem.
Porta do URI do Pedido | `request.uri.port` | A porta no URI do pedido.
Da Porta do URI | `request.from.uri.port` | A porta no URI do campo Cabeçalho de Origem.
Para o Host do URI | `request.to.uri.host` | O host no campo Cabeçalho de Destino.
Nome do Cabeçalho | `header$<name>` | O nome e o valor de um cabeçalho. Por exemplo, a expressão `header$Host='localhost'` testa um pedido para ver se ele contém um cabeçalho do host HTTP com um valor de `host local`. Para testar a presença ou ausência do cabeçalho do host, utilize uma das seguintes expressões:
    header$Host IS NOT NULL
    header$Host IS NULL
Tempo | `time` | Esse operando é utilizado para definir a data e a hora do dia que um determinado pedido deve ser cumprido. Dois campos adicionais são StartTime e EndTime. Se um pedido for recebido fora daquela janela definida, o pedido não será processado. Os campos Start Time e End Time têm o seguinte formato: `dayOfWeek/dayOfMonth/month/year::hour:minute:second`. Por exemplo, Quinta-feira, 11 de abril de 2007 às 13:03:45 é especificado como: Qui/11/Abr/2007::13:03:45 Qualquer campo pode utilizar um curinga com o valor *. Por exemplo, o primeiro dia de cada mês é especificado como */1. Os valores dayofWeek são dom, seg, ter, qua, qui, sex, sáb e os valores dayOfMonth variam de 1 a 31. O valor month é um valor não-numérico que representa os doze meses: Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez. O valor year é composto de quatro dígitos do ano. Por exemplo, 2007. O valor hour é a hora do dia no relógio de 24 horas. Por exemplo, 8h é representado como ::8. O minute e second são representados como inteiros que variam de 0-59. A barra (/) é utilizada para separar parâmetros de data, os dois-pontos duplos (::) são utilizados para separar os valores de data e hora, e os dois-pontos (:) são utilizados para separar a hora dos parâmetros do dia. Observe que esse é o resultado booleano da regra inteira no qual o operando time é utilizado para determinar a ação de roteamento adotada.
Porcentagem | `percentage$<val>` | O operando de porcentagem é avaliado como `true`, uma porcentagem fixa do tempo. Por exemplo, `percentage$50` é avaliado como `true` na média de 50% do tempo.
Aumentar | `rampup$<startTime>` `$<completionTime>` | O operando `rampup` é avaliado como `true` em uma porcentagem variável de tempo. Ele é sempre avaliado como `false` antes de `<startTime>` e como `true` depois de `<completionTime>`. Conforme o tempo progride de `<startTime>` para `<completionTime>`, ele é avaliado como `true`, uma porcentagem de aumento linear. O formato de `<startTime>` e `<completionTime>` é `day/month/year::hour:min:sec`. em que `day` é o dia do mês, `month` é um dos 12 meses: jan, fev, mar, abr, mai, jun, jul, ago, set, out, nov, dez, `year` é o ano com 4 dígitos, `hour` é a hora com 2 dígitos do formato de 24 horas e `min` e `sec` são valores com 2 dígitos para minuto e segundo, respectivamente. Por exemplo, `rampup$01/Jan/2007::08:00:00$01/Jan/2007::17:00:00` começa a ser avaliado ocasionalmente como `true` às 8h de 1 de jan de 2007 e é sempre avaliado como `true` pela hora de conclusão de ramp up às 17h do mesmo dia.

## Operador

Tabela 2. Operadores de especificação de rastreio
Operador | Descrição
--- | ---
Igual a Ignora Maiúsculas e Minúsculas (EQUALSIGNORECASE) | Operador de igualdade que ignora maiúsculas e minúsculas. As maiúsculas e minúsculas das sequências são ignoradas. `'ABC' EQUALSIGNORECASE 'abc'` é verdadeiro. `('ABC' = 'abc')` é falso.
Diferente de (< >) | O operador 'diferente de' expressa que o valor do operando não é igual ao valor inserido.
Em (IN) | A expressão `sequência IN lista de sequências` é avaliada como verdadeira se a sequência à esquerda corresponder exatamente (com distinção entre maiúsculas e minúsculas) à sequência listada à direita. Por exemplo: ’adrian’ in `('keith','eric','kalyan','david', 'adrian e etc')` é falso. `'adrian'` in `('tom','adrian')` é verdadeiro. ’adrian’ in `('Tom','Adrian')` é falso. `inteiro IN lista de números inteiros`: `1` in `(1,2,3,4,5)` é verdadeiro. `6` in `(1,2,3,4,5)` é falso.
Semelhante (LIKE) | Expressa a correspondência de padrão dos valores do operando da sequência. O valor deve conter o caractere curinga (`%`) na posição onde se espera que a correspondência padrão seja iniciada. Por exemplo, a expressão:
    host LIKE %blanca
corresponde à palavra `blanca` e a qualquer outra palavra que termine em `blanca`, enquanto que a expressão:
    host LIKE blanca%
corresponde à palavra `blanca` e a qualquer outra palavra que inicie com `blanca`. A expressão:
    host LIKE %blanca%
corresponde à palavra `blanca` e a qualquer outra palavra que tenha o símbolo `blanca` integrado nela.
Semelhante Ignora Maiúsculas e Minúsculas (LIKEIGNORECASE) | Este operador expressa a correspondência de padrão para valores do operando da sequência. As maiúsculas e minúsculas das sequências são ignoradas.
Não É Nulo (IS NOT NULL) | Uma validação da consulta mostra que o parâmetro solicitado existe.
Concatenar (+) | Este operador avalia `'abc'+'def'` como `'abcdef'`.
Semelhante Em (LIKEIN) | Este operador expressa que `sequência likein (string1, string2, string3,...)` é avaliado como verdadeiro se a sequência à esquerda de `likein` corresponder a uma ou mais das sequências (stringN).
É Nulo (IS NULL) | Uma validação da consulta mostra que o parâmetro solicitado não existe. Testa por um operando que tenha um valor `NULL`.
É Igual a ( = ) | O operador de igualdade expressa uma correspondência que faz distinção entre maiúsculas e minúsculas.
Maior que (>) | É avaliado como o resultado lógico padrão.
Maior que ou Igual a (>=) | É avaliado como o resultado lógico padrão.
Menor que (<) | É avaliado como o resultado lógico padrão.
Menor que ou Igual a (<=) | É avaliado como o resultado lógico padrão.
Entre (BETWEEN) | Usado com `AND` para selecionar um intervalo de valores incluindo o primeiro (baixo) e o último (alto) valores. Juntos, eles operam em números e valores de datas.

## Valor

Dependendo do operador escolhido, digite um valor para a subexpressão que você optar por criar.

## Gerar Subexpressão

Gere a subexpressão como resultado do operando, operador e valores especificados.

## Anexar

Clique para anexar na caixa no painel de regras.

Informações relacionadas:
Regras de SIP de Política de Roteamento
Regras de SIP de Política de Serviço

Nome do Arquivo: sip_rulebuilder_detail.html