Funções do Dialplan do Asterisk 23
Comando:
PJSIP_HEADER()
Sinopse:
Obtém cabeçalhos de um canal PJSIP de entrada. Adiciona, atualiza ou remove o cabeçalho SIP especificado de um canal PJSIP de saída.
Descrição:A função PJSIP_HEADER permite que você leia cabeçalhos SIP específicos do canal PJSIP de entrada, bem como escreva (adicionar, atualizar, remover) cabeçalhos no canal de saída. Uma exceção é que você pode ler cabeçalhos que já adicionou no canal de saída.
Exemplos:Definir somevar com o valor do cabeçalho From:
exten => 1,1,Set(somevar=${PJSIP_HEADER(read,From)})
Definir via2 com o valor do 2º cabeçalho Via:
exten => 1,1,Set(via2=${PJSIP_HEADER(read,Via,2)})
Definir xhdr com o valor do 1º cabeçalho X-*:
exten => 1,1,Set(xhdr=${PJSIP_HEADER(read,X-*,1)})
Adicionar um cabeçalho X-Myheader com o valor myvalue:
exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)
Atualizar o valor do cabeçalho X-Myheader para newvalue (o cabeçalho deve existir previamente):
exten => 1,1,Set(PJSIP_HEADER(update,X-MyHeader)=newvalue)
Remover todos os cabeçalhos cujos nomes correspondem exatamente a X-MyHeader:
exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
Observação: A ação
remove pode ser chamada tanto por leitura quanto por escrita do
PJSIP_HEADER.
Uso em contexto de dialplan: Se você chamar
PJSIP_HEADER em um contexto normal de dialplan, estará operando no canal do originador (entrada), o que pode não ser o desejado. Para operar no canal do destinatário (saída), chame
PJSIP_HEADER em um manipulador de pré-discagem (pre-dial handler).
Sintaxe: PJSIP_HEADER(action,name[,number])action: read, add, update, remove
name: nome do cabeçalho
number: número da instância do cabeçalho (opcional, padrão é 1)
Sintaxe:
exten => 1,1,Set(somevar=${PJSIP_HEADER(read,From)})
exten => 1,1,Set(via2=${PJSIP_HEADER(read,Via,2)})
exten => 1,1,Set(xhdr=${PJSIP_HEADER(read,X-*,1)})
exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)
exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=)
; 'X-Myheader' must already exist or the call will fail.
exten => 1,1,Set(PJSIP_HEADER(update,X-MyHeader)=newvalue)
exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
exten => 1,1,Set(PJSIP_HEADER(remove,X-My*)=)
exten => 1,1,Set(PJSIP_HEADER(remove,*)=)
exten => 1,1,Verbose( Removed ${PJSIP_HEADER(remove,X-MyHeader)} headers)
exten => 1,1,Set(count=${PJSIP_HEADER(remove,X-MyHeader)})
exten => 1,1,Set(=${PJSIP_HEADER(remove,X-MyHeader)})
exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
[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])
Fonte: Asterisk Wiki