Funções do Dialplan do Asterisk 18
Descrição:A função
PJSIP_HEADER permite ler cabeçalhos SIP específicos do canal PJSIP de entrada, bem como escrever (adicionar, atualizar, remover) cabeçalhos no canal de saída. Uma exceção é que você pode ler cabeçalhos que já foram adicionados no canal de saída.
Exemplos:
Exemplo: Define a variável
somevar com o valor do cabeçalho
From:
exten => 1,1,Set(somevar=${PJSIP_HEADER(read,From)})
Exemplo: Define
via2 com o valor do 2º cabeçalho
Via:
exten => 1,1,Set(via2=${PJSIP_HEADER(read,Via,2)})
Exemplo: Define
xhdr com o valor do 1º cabeçalho que começa com
X-:
exten => 1,1,Set(xhdr=${PJSIP_HEADER(read,X-*,1)})
Exemplo: Adiciona um cabeçalho
X-Myheader com o valor
myvalue:
exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)
Exemplo: Adiciona um cabeçalho
X-Myheader com um valor vazio:
exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=)
Exemplo: Atualiza o valor do cabeçalho
X-Myheader para
newvalue;
X-Myheader deve existir ou a chamada falhará:
exten => 1,1,Set(PJSIP_HEADER(update,X-MyHeader)=newvalue)
Exemplo: Remove todos os cabeçalhos cujo nome corresponda exatamente a
X-MyHeader:
exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
Exemplo: Remove todos os cabeçalhos que começam com
X-My:
exten => 1,1,Set(PJSIP_HEADER(remove,X-My*)=)
Exemplo: Remove todos os cabeçalhos adicionados anteriormente:
exten => 1,1,Set(PJSIP_HEADER(remove,*)=)
Observação: A ação 'remove' pode ser chamada lendo ou escrevendo
PJSIP_HEADER.
Exemplo: Exibe o número de cabeçalhos removidos:
exten => 1,1,Verbose( Removed ${PJSIP_HEADER(remove,X-MyHeader)} headers)
Exemplo: Define uma variável com o número de cabeçalhos removidos:
exten => 1,1,Set(count=${PJSIP_HEADER(remove,X-MyHeader)})
Exemplo: Remove-os ignorando qualquer contagem:
exten => 1,1,Set(=${PJSIP_HEADER(remove,X-MyHeader)})exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
Observação: Se você chamar
PJSIP_HEADER em um contexto de discagem normal, estará operando no canal do chamador (entrada), o que pode não ser o que você deseja. Para operar no canal do chamado (saída), chame
PJSIP_HEADER em um manipulador de pré-discagem.
Exemplo: Define cabeçalhos no canal do chamado:
[handler]
exten => addheader,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)
exten => addheader,2,Set(PJSIP_HEADER(add,X-MyHeader2)=myvalue2)
[somecontext]
exten => 1,1,Dial(PJSIP/${EXTEN},,b(handler^addheader^1))PJSIP_HEADER(action,name[,number])- action -
read: Retorna o número da instância do cabeçalho name. Um '' pode ser anexado a name para iterar sobre todos os cabeçalhos *começando com name. add: Adiciona um novo nome de cabeçalho a esta sessão. update: Atualiza o número da instância de name para um novo valor. O cabeçalho deve existir. remove: Remove todas as instâncias de cabeçalhos adicionados anteriormente cujos nomes correspondam a name. Um '' pode ser anexado a name para remover todos os cabeçalhos *começando com name. name pode ser definido como um único '' para limpar *todos os cabeçalhos adicionados anteriormente. Em todos os casos, o número de cabeçalhos realmente removidos é retornado. - name - O nome do cabeçalho.
- number - Se houver mais de 1 cabeçalho com o mesmo nome, isso especifica qual cabeçalho ler ou atualizar. Se não for especificado, o padrão é '1', significando o primeiro cabeçalho correspondente. Não é válido para 'add' ou 'remove'.