UPDATE: Refer to this post below for proper solution: [How To] Get Caller ID Override working with DISA
Thanks to earlier help from several forum members, we were able to get DISA with Callback setup and working for select staff members.
Post from @lgaetz
DISA combined with a Callback basically eliminates the issue of hacking by spoofing CID.
Our next step was to make sure that the DISA call presented the correct default Caller ID for that staff member. Several staff members have dedicated external numbers.
After months of fighting, we finally figured out that there is a bug in the DISA Caller ID override functionality.
When the “Caller ID Override” is set to “Yes” the system sets the “KEEPCID” variable to “FALSE”. This tells the dialplan not to use the “Caller ID” value that was set.
When “Caller ID Override” is set to “No”, the “KEEPCID” variable gets set to “TRUE”. This seems helpful until we realized that the “Caller ID” value is not passed to the dial plan. Therefore even when adding a “Caller ID” value and setting the “Caller ID Override” to “No” it still did not pass the desired Caller ID .
Thanks to several forum posts, an open FreePBX bug report and other googling, we were able to track down what was going on and work around the bug.
This post is just to share in case someone else runs into this issue as well.
Helpful references that lead us to a workaround:
Post from: @sgelardi
DISA, Caller-ID override on outbound route is not working
Bug Report from: Nicolas Riendeau
DISA’s Caller ID Override setting does not behave as the help text suggests
This is how we resolved the bug and allowed the interface settings to work “as expected”
[extension_custom.conf]
[from-internal-custom]
; If outbound number is dialed from DISA, Fix Caller ID
exten => _NXXZXXXXXX,1,GosubIf($["${DISA}" != ""]?FixDISACallerID,s,1())
exten => _1NXXZXXXXXX,1,GosubIf($["${DISA}" != ""]?FixDISACallerID,s,1())
[FixDISACallerID]
; DISA Caller ID settings are flipped in interface. Fixing with below override
exten => s,1,NoOp(CUSTOM: Use Custom CID for DISA Call. This is a fix for broken GUI setting)
exten => s,n,ExecIf($["${CALLERID(number)}" != ""]?Set(KEEPCID=TRUE):Set(KEEPCID=FALSE))
exten => s,n,NoOp(KEEPCID VALUE: ${KEEPCID})
exten => s,n,Return