; extensions.conf - the Asterisk dial plan [general] static=yes writeprotect=no clearglobalvars=no [handler] exten => addheader,1,NoOP(Add ${ARG1} to SIP as X-CallId) same => n,NoOP(Add ${ARG2} to SIP as X-Original-Calling-Number) same => n,Set(PJSIP_HEADER(add,X-CallId)=${ARG1}) same => n,Set(PJSIP_HEADER(add,X-Original-Calling-Number)=${ARG2}) [contact-center] exten => _+X.,1,NoOP(Inbound Contact Center) same => n,Answer() same => n,Wait(1) same => n,Set(CALL_ID=${RAND(10000000,99999999)}) same => n,Set(CALLING_NUM=${CALLERID(num)}) same => n,Set(CALLERID(num)=PSTN_PHONE_NUMBER) same => n,Dial(PJSIP/+18005551212@SMAVoiceConnector,,gb(handler^addheader^1(${CALL_ID},${CALLING_NUM}))) same => n,Set(CALL_ROUTE=${SHELL(curl --silent API_URLquery?xCallId=${CALL_ID} | jq -r .CallRoute )}) same => n,NoOp(${CALL_ROUTE}) same => n,GotoIf($[${CALL_ROUTE} = CallAgent]?callAgent:disconnect) same => n(callAgent),NoOp(CallAgent) same => n,GotoIf($[${DEVICE_STATE(PJSIP/agent)}=UNAVAILABLE]?noAgent:agentAvailable) same => n(agentAvailable),NoOp(CallAgent) same => n,Dial(PJSIP/agent,,b(handler^addheader^1(${CALL_ID}))) same => n,Hangup() same => n(noAgent),NoOP(NoAgent) same => n,Playback(/var/lib/asterisk/sounds/en/noAgent) same => n,Hangup() same => n(disconnect),NoOp(Disconnect) same => n,Playback(/var/lib/asterisk/sounds/en/disconnecting) same => n,Hangup() [from-voiceConnector] include => contact-center