Funções do Dialplan do Asterisk 22
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)}) - Adicionar um cabeçalho X-Myheader com o valor myvalue:
exten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue) - 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.
Se você chamar PJSIP_HEADER em um contexto normal do 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])
Onde:
action - read (retorna instância do cabeçalho), add (adiciona novo cabeçalho), update (atualiza instância do cabeçalho), remove (remove instâncias de cabeçalhos)
name - nome do cabeçalho
number - número da instância do cabeçalho (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