Funções do Dialplan do Asterisk 21
Comando:
PJSIP_HEADER()
Sinopse:
Gets headers from an inbound PJSIP canal. Adds, updates or removes the specified SIP header from an outbound PJSIP canal.
Descrição:
PJSIP_HEADER allows you to read specific SIP headers from the inbound PJSIP canal as well as write(add, update, remove) headers on the outbound canal. One exception is that you can read headers that you have already added on the outbound canal.
Examples:
Example: Set somevar to the value of the From headerexten => 1,1,Set(somevar=${PJSIP_HEADER(read,From)})
Example: Set via2 to the value of the 2nd Via headerexten => 1,1,Set(via2=${PJSIP_HEADER(read,Via,2)})
Example: Set xhdr to the value of the 1st X-headerexten => 1,1,Set(xhdr=${PJSIP_HEADER(read,X-*,1)})
Example: Add an X-Myheader header with the value of myvalueexten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=myvalue)
Example: Add an X-Myheader header with an empty valueexten => 1,1,Set(PJSIP_HEADER(add,X-MyHeader)=)
Example: Update the value of the header named X-Myheader to newvalue; 'X-Myheader' must already exist or the call will fail.
exten => 1,1,Set(PJSIP_HEADER(update,X-MyHeader)=newvalue)
Example: Remove all headers whose names exactly match X-MyHeaderexten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
Example: Remove all headers that begin with X-Myexten => 1,1,Set(PJSIP_HEADER(remove,X-My*)=)
Example: Remove all previously added headersexten => 1,1,Set(PJSIP_HEADER(remove,*)=)
Note The 'remove' action can be called by reading or writing PJSIP_HEADER.
Example: Display the number of headers removedexten => 1,1,Verbose( Removed ${PJSIP_HEADER(remove,X-MyHeader)} headers)
Example: Set a variable to the number of headers removedexten => 1,1,Set(count=${PJSIP_HEADER(remove,X-MyHeader)})
Example: Just remove them ignoring any countexten => 1,1,Set(=${PJSIP_HEADER(remove,X-MyHeader)})
exten => 1,1,Set(PJSIP_HEADER(remove,X-MyHeader)=)
Note If you call PJSIP_HEADER in a normal dialplan context you'll be operating on the caller's (incoming) canal which may not be what you want. To operate on the callee's (outgoing) canal call PJSIP_HEADER in a pre-dial handler.
Example: Set headers on callee canal[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 - Returns instance number of header name. A '' may be appended to name to iterate over all headers *beginning with name. add - Adds a new header name to this session. update - Updates instance number of header name to a new value. The header must already exist. remove - Removes all instances of previously added headers whose names match name. A '' may be appended to name to remove all headers *beginning with name. name may be set to a single '' to clear *all previously added headers. In all cases, the number of headers actually removed is returned. name - The name of the header. number - If there's more than 1 header with the same name, this specifies which header to read or update. If not specified, defaults to '1' meaning the first matching header. Not valid for 'add' or 'remove'.
This documentation was generated from Asterisk branch 21 using version GIT
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