- No Single Point of failure
- NoSQL Database for "Big Data" based Agent and caller statistics (not mandatory but useful)
- Scalable transaction engine for orchestration of resources - linking customers with agents and agents and supervisors (We used to call this a queue and scheduler - or just the ACD)
- Media Relay/Anchoring so that recording of the session can take place.
- Light weight client applications (HTML5, CSS, Javascript, WebRTC).
- Elasticity on demand compute - to scale for more sessions, more agents etc. Or for that matter less.
- Some form of orchestration to be able to dynamically scale the platform based on either dynamic demand or customer requirements. Dynamic demand is an interesting one here as it implies the platform can "self-scale".
- Multi-tenancy, so we can accommodate multiple customers without them "bleeding" into each other.
- Support for SIP Signalling (to be able to connect to telcos using SIP trunking)
- Transcoding of codecs voice (& video).
- Conference bridge/RTP mixer, to make supervisor passive monitoring of agents possible.
For the Virtualisation piece I guess I would start with OpenStack and/or Xen hypervisors.
That's my shopping list. Next time some pictures of the components and glue-ing them together.