diff --git a/asterisk/config/dialplan/default.conf b/asterisk/config/dialplan/default.conf index 5a8be082993..1e6603392f5 100644 --- a/asterisk/config/dialplan/default.conf +++ b/asterisk/config/dialplan/default.conf @@ -6,6 +6,8 @@ [trunks] exten => _[+*0-9]!,1,NoOp(Incoming external call from ${CALLERID(all)} to ${EXTEN}) same => n,AGI(agi://${FASTAGI_SERVER}/fastagi-runner.php?command=Dialplan/Trunks) +; Playback specific sounds and leave +include => sounds ;; Context for user calls (from proxyUsers) ;; ${EXTEN} may match a Company Extension, Company Service or External number diff --git a/kamailio/trunks/config/kamailio.cfg b/kamailio/trunks/config/kamailio.cfg index ac0b974c772..3edac24c63d 100644 --- a/kamailio/trunks/config/kamailio.cfg +++ b/kamailio/trunks/config/kamailio.cfg @@ -1476,6 +1476,8 @@ route[APPLY_TRANSFORMATION] { } route[GET_INFO_FROM_MATCHED_DDI] { + if ($dlg_var(type) == 'unassigned') return; + sql_xquery("cb", "SELECT c.mediaRelaySetsId, c.maxCalls AS maxCallsCompany, b.maxCalls AS maxCallsBrand, d.recordCalls, c.distributeMethod, AppS.ip AS asAddress, d.routeType, d.residentialDeviceId, d.retailAccountId, d.faxId FROM DDIs d JOIN Companies c ON d.companyId=c.id LEFT JOIN ApplicationServers AppS ON AppS.id=c.applicationServerId JOIN Brands b ON c.brandId=b.id WHERE d.DDIE164='$rU'", "ra"); # Matched DDI @@ -1741,9 +1743,18 @@ route[CLASSIFY] { set_dlg_profile("outboundCallsCompany", "$dlg_var(companyId)"); set_dlg_profile("outboundCallsBrand", "$dlg_var(brandId)"); } else { - sql_xquery("cb", "SELECT C.brandId, C.id AS companyId, C.type FROM DDIs D JOIN Companies C ON D.companyId=C.id WHERE DDIE164='$rU'", "rp"); + sql_xquery("cb", "SELECT B.id AS brandId, C.id AS companyId, C.type FROM DDIs D JOIN Brands B ON B.id=D.brandId LEFT JOIN Companies C ON D.companyId=C.id WHERE DDIE164='$rU'", "rp"); $dlg_var(brandId) = $xavp(rp=>brandId); $dlg_var(companyId) = $xavp(rp=>companyId); + + if ($dlg_var(brandId) != $null && $dlg_var(companyId) == $null) { + xnotice("[$dlg_var(cidhash)] CLASSIFY: inbound call to unassigned DDI $rU (b$dlg_var(brandId))"); + $dlg_var(skipRealtime) = 'yes'; # Skip this call in realtime + $dlg_var(type) = 'unassigned'; + $rU = 'noclient'; + return; + } + $dlg_var(type) = $xavp(rp=>type); if ($dlg_var(type) == 'wholesale') { @@ -2340,6 +2351,8 @@ route[RECORD] { } route[CONTROL_MAXCALLS] { + if ($dlg_var(type) == 'unassigned') return; + if (!get_profile_size("activeCallsCompany", "$dlg_var(companyId)", "$avp(activeCallsCompany)")) { xerr("[$dlg_var(cidhash)] CONTROL-MAXCALLS: company$dlg_var(companyId) $avp(activeCallsCompany)/$dlg_var(maxCallsCompany) calls (error obtaining value)\n"); if ($dlg_var(maxCallsCompany) > 0) {