[asterisk-users] pre-dial handler, how to access variables from calling channel?

Benoit Panizzon benoit.panizzon at imp.ch
Fri Nov 15 08:05:32 CST 2019

Hi List

Implementing screening and routing I have stumbled over this issue:

exten => s,1,NoOp(ROUTER FROM: ${CALLERID(Number)}  TO: ${DESTINATION})
        same => n,Set(SOURCE=${CHANNEL(name)})
        same => n,Set(PAI=${PJSIP_HEADER(read,P-Asserted-Identity)})
        same => n,Set(FROM=${CALLERID(Number)})
        same => n,Set(TO=${DESTINATION})
        same => n,Set(DIVERSION=${PJSIP_HEADER(read,Diversion)})
        same => n,AGI(router.agi)
        same => n,GoTo(dial-out,s,1)

[predial-handler]; Manipulate Header on OUTBOUND channel
exten => screen-update,1,NoOp(PREDIAL FROM: ${CALLERID(Number)} TO: ${DESTINATION} PAI: ${PAI})
        same => n,Set(PJSIP_HEADER(update,P-Asserted-Identity)=${PAI})
        same => n,Return

exten => s,1,NoOp(DIAL FROM: ${CALLERID(Number)} TO: ${DESTINATION} PAI: ${PAI})
        same => n,Dial(PJSIP/${DESTINATION},,b(predial-handler,screen-update,1))
        same => n,HangUp()

router.agi does perform among other things like emergency
location routing: _screening_. It checks if the FROM and PAI sent from
the customer correspond to phone numbers assigned to that customer and
if not, replaces them with the correct values, also taking account
customers with clip-no-screening agreement (they can set 'From' maybe
also screened to some allowed number ranges, but PAI is 'Provider
provided, Network screened' therefore we MUST set this to the customers
real phone number)

I can correct ${CALLERID(number)} on the calling channel and this is
preserved on the outgoing channel.

But I have not yet found any 'easy' way to pass the corrected ${PAI}
Variable to the callee channel.

Mit freundlichen Grüssen

-Benoît Panizzon-
I m p r o W a r e   A G    -    Leiter Commerce Kunden

Zurlindenstrasse 29             Tel  +41 61 826 93 00
CH-4133 Pratteln                Fax  +41 61 826 93 01
Schweiz                         Web  http://www.imp.ch

More information about the asterisk-users mailing list