The custom contexts module #1447 functionality should be added to core.
Update: See CustomContexts for full discussion
Sub-tasks:
- Implement TimeConditionsChange, remove time conditions from the CC module, and use the abstraction provided by the updated timeconditions module
- Get rid of destinations in contexts by default - that behaviour should be provided by another module, or implemented differently so it's less confusing. It is a powerful feature, but goes far beyond just having "dial contexts" that users can use..
Contexts should be "dial contexts" really, so a user is assigned to a context, which controls what they are allowed to dial.
Each context can have various objects assigned to it: users, page groups, conferences, feature codes, outbound routes, etc.
With this setup, there are various scenarios made possible, for example:
- one-way restricted calling
- User 101, assigned to context "restricted"
- Users 102, 103 assigned to context "default"
- Context "default" contains 101, 102, 103, outbound-allroutes, ext-page, app-callforward, app-voicemail, ....
- Context "restricted" contains 102, and ext-page.
- A someone calling from 101 can only call 102 or use paging groups. They cannot call 103, make outgoing calls, or use voicemail. 102 and 103 can both call 101, as well as make outbound calls, use voicemail, etc.
- different routes for different users
- User 110 could be in context "main", user 112 could be in "voip"
- the "main" context has a route that matches NXXXXXX, and dials on a local T1 line, and then a SIP provider. The "voip" context can also have a route matching NXXXXXX, but dials only on the SIP provider.
- 110 and 112 can both dial 5551234, but 110 will use the T1, while 112 will use the SIP trunk