The goal of Quality Management and Office Communications Server 2007 R2 Integration is to support endpoint recording and monitoring along with the existing features of Quality Management.
Quality Management application comprises of the following services:
Status
CallRecording
Call Control
Call Conversion
Statically linked library: CallRex.lib
Dynamically linked library: CallRexApi.dll
User Interface/Front-end: CrClient.exe (Quality Management Client Application)
User Interface to facilitate change in CallRex registry: CrConfig.exe
Utility to download and play recorded calls on user request: CRPlayer.exe
The system components communicate and coordinate with each other in distributed architecture using Messaging protocol.
Status Service: central point of contact for all the clients; it is the only component communicating with the database.
CallControl Service: sniffs and processes call control packets from the network based on IP information available from the Status service. Sends message to CallRecording service to start/stop recording. It also updates Status service with information like caller ID, outbound #, and call status.
CallRecording Service: sniffs audio packets from network based on IP information available from the Status service. Based on the message sent by CallControl service to start/stop recording, CallRecording service starts/stops raw file generation and notifies the CallConversion service to convert the .raw file to a WAV file.
CallConversion Service: converts the .raw files to audible files (WAV).
Based on the current architecture of Quality Management, Status service should always be unique in the network of services. We can have multiple CallControl, CallRecording, and CallConversion services. A user is assigned to a single CallRecording service which has associations with CallControl and CallConversion services. Hence every user has CallControl, CallRecording, and CallConversion services performing all the call related activity for the user.
To support call recording over OCS 2007 the above architecture observes changes as depicted in Sub-Section Modifications to the architecture.
Call Control - As per the earlier implementation, CallControl service sniffs the call control information of specific associated users based on their IP information in the Quality Management Database. For OCS, CallControl will receive call control information from the TelRexNetService. TelRexNetService is a Managed Code Application which is registered with OCS to receive call control information. It will verify the users and then send a call initiation\termination message to ALL CallRecording services.
Call Recording Service - CallRecording service is also modified as it no more needs to sniff the audio packets based on the IP filter string. A new component called RTP Data Collector will send audio packets to the CallRecording service to generate .raw files. The CallControl service will send call control information to all recording services and accordingly the CallRecording service will start/stop recording. So, CallRecording service is dependent on RTP Data Collector for audio packets.
Technology: .NET managed component built using C# and Microsoft.Rtc.Sip namespace.
Functionality: This application is installed as a Windows service and gets registered with OCS 2007 R2 to receive and process the call control information. It receives and processes call information dispatched by the TelRexNetService.am. It is also responsible for codec manipulation as per the configuration in TelRexNetService.exe.config.
Dependency: ServerAgent.dll available with OCS SDK. This component is dependent on TelRexNetService.am to dispatch the call messages.
Technology: C#, WinPCap, Socket Programming
Functionality: C# application installed as a Windows service. It sniffs the audio packets from NIC and sends the audio information to the Call Recording service.
Dependency: RTP Data Collector can be configured using the config file available in the RTPDataCollector directory.
Configuring CallRex for OCS 2007 R2
Deployment Options for RTP Data Collector
Was this topic helpful?