| 1019 | | $zap_context = "macro-from-zaptel-{$channel}"; |
|---|
| 1020 | | $ext->add($zap_context, 's', '', new ext_noop('Entering '.$zap_context.' with DID = ${DID} and setting to: '.$did)); |
|---|
| 1021 | | $ext->add($zap_context, 's', '', new ext_setvar('__FROM_DID',$did)); |
|---|
| 1022 | | $ext->add($zap_context, 's', '', new ext_goto('1',$did,'from-trunk')); |
|---|
| | 1019 | $channel_context = "macro-from-channel-{$channel}"; |
|---|
| | 1020 | |
|---|
| | 1021 | //magic string 'siptoheader' for extracting DID from sip To: header |
|---|
| | 1022 | if ($did == "siptoheader") { |
|---|
| | 1023 | $ext->add($channel_context, 's', '', new ext_noop('Entering '.$channel_context.' with DID = ${DID}')); |
|---|
| | 1024 | $ext->add($channel_context, 's', '', new ext_setvar('__FROM_DID','${SIP_HEADER(TO):5}')); |
|---|
| | 1025 | $ext->add($channel_context, 's', '', new ext_setvar('__FROM_DID','${CUT(DID,@,1)}')); |
|---|
| | 1026 | $ext->add($channel_context, 's', '', new ext_noop('Used sip To: header to set DID = ${FROM_DID}')); |
|---|
| | 1027 | $ext->add($channel_context, 's', '', new ext_goto('1','${FROM_DID}','from-trunk')); |
|---|
| | 1028 | } else { |
|---|
| | 1029 | $ext->add($channel_context, 's', '', new ext_noop('Entering '.$channel_context.' with DID = ${DID} and setting to: '.$did)); |
|---|
| | 1030 | $ext->add($channel_context, 's', '', new ext_setvar('__FROM_DID',$did)); |
|---|
| | 1031 | $ext->add($channel_context, 's', '', new ext_goto('1',$did,'from-trunk')); |
|---|
| | 1032 | } |
|---|
| 1137 | | $trunkcontext = "from-trunk-".strtolower($trunkprops['tech'])."-".$trunkprops['name']; |
|---|
| 1138 | | $ext->add($trunkcontext, '_.', '', new ext_setvar('GROUP()',$trunkgroup)); |
|---|
| 1139 | | $ext->add($trunkcontext, '_.', '', new ext_goto('1','${EXTEN}','from-trunk')); |
|---|
| | 1147 | $context = "from-trunk-".strtolower($trunkprops['tech'])."-".$trunkprops['name']; |
|---|
| | 1148 | |
|---|
| | 1149 | $exten = '_.'; |
|---|
| | 1150 | |
|---|
| | 1151 | $ext->add($context, $exten, '', new ext_set('DID', '${EXTEN}')); |
|---|
| | 1152 | $ext->add($context, $exten, '', new ext_goto(1, 's')); |
|---|
| | 1153 | |
|---|
| | 1154 | $exten = 's'; |
|---|
| | 1155 | $ext->add($context, $exten, '', new ext_noop('Entering '.$context.' with DID == ${DID}')); |
|---|
| | 1156 | $ext->add($context, $exten, '', new ext_setvar('GROUP()',$trunkgroup)); |
|---|
| | 1157 | // Some trunks _require_ a RINGING be sent before an Answer. |
|---|
| | 1158 | $ext->add($context, $exten, '', new ext_ringing()); |
|---|
| | 1159 | // If ($did == "") { $did = "s"; } |
|---|
| | 1160 | $ext->add($context, $exten, '', new ext_set('DID', '${IF($["${DID}"= ""]?s:${DID})}')); |
|---|
| | 1161 | $ext->add($context, $exten, '', new ext_noop('DID is now ${DID}')); |
|---|
| | 1162 | $ext->add($context, $exten, '', new ext_gotoif('$["${CHANNEL:0:3}"="SIP"]', 'trunkok', 'nottrunk')); |
|---|
| | 1163 | $ext->add($context, $exten, 'nottrunk', new ext_goto('1', '${DID}', 'from-trunk')); |
|---|
| | 1164 | // If there's no ext-did,s,1, that means there's not a no did/no cid route. Hangup. |
|---|
| | 1165 | $ext->add($context, $exten, '', new ext_macro('Hangupcall', 'dummy')); |
|---|
| | 1166 | $ext->add($context, $exten, 'trunkok', new ext_noop('Is a SIP Trunk Channel')); |
|---|
| | 1167 | $ext->add($context, $exten, '', new ext_set('CHAN', '${CHANNEL:4}')); |
|---|
| | 1168 | $ext->add($context, $exten, '', new ext_set('CHAN', '${CUT(CHAN,-,1)}')); |
|---|
| | 1169 | $ext->add($context, $exten, '', new ext_macro('from-channel-${CHAN}', '${DID},1')); |
|---|
| | 1170 | // If nothing there, then treat it as a DID |
|---|
| | 1171 | $ext->add($context, $exten, '', new ext_noop('Returned from Macro from-channel-${CHAN}')); |
|---|
| | 1172 | $ext->add($context, $exten, '', new ext_goto(1, '${DID}', 'from-trunk')); |
|---|
| | 1173 | |
|---|
| | 1174 | |
|---|