Programmatic obfuscation
Throughout this guide, we will adopt the PCI-DSS example above, where telephone calls that contain spoken credit card information need to be masked out by an audible tone, but only during those parts of the call when the card details are being spoken, leaving intact the rest of the call audio.
In this scenario, we'll assume that agents (employees that make or receive telephone calls) utilise an in-house or third-party data entry system into which credit card detailed are entered using a computer.
How it works
Considering TIM Enterprise (in conjunction with one or more Magic boxes) records the call audio at strategic boundaries in your telecom infrastructure - usually your organisation's telephone lines, rather than each user's telephone handset - some reconciliation is normally required between those boundaries and the actual agent that handled the call.
By default, this reconciliation occurs automatically in TIM Enterprise, which is how the agent-centric calls that you see in call reports are able to be associated (matched) with each call, as seen from the point of view of a telephone line which delivers calls to many agents.
During obfuscation, it is necessary that a user or device sends at least two signals to TIM Enterprise. Together, these two signals allow TIM Enterprise to mask out the audio between the two points in time that each signal was received.
At the point in time during an agent's call when obfuscation is necessary - e.g. "Can I have your CVV number please?" is spoken by the agent - a signal is sent by the agent to TIM Enterprise, which records the event along with the exact time it was sent. Similarly, when the sensitive part of the call has completed, a further signal is sent by the agent to TIM Enterprise, which is also being recorded.
A single telephone call can contain more than one obfuscation and the number of signals required is always twice the amount of obfuscations in a call.
Assumptions
This guide assumes the following statements are true:
- You have a licensed copy of TIM Enterprise that includes voice recording
- Your installation is at least version 3.0.0.55
Common solutions
Taking the example of masking out some digits of a phone call when a credit card number is being quoted, most solution providers modify the data entry system that an agent uses.
Implementation
HTTP request
To send a start or stop signal, a simple HTTP GET request must be sent to the TIM Enterprise web server.
Every request to the web server requires authentication, so ensure that the relevant HTTP authentication headers are sent with your request and that the username and password combination match an existing web user object in the Directory.
The response status code will indicate success or failure.
Request format
The request should be a GET request and take the following URL- encoded parameters, as per the following example:
http://192.168.0.1/signal.js?cmd=set&cat=4&type=1&objtype....
Parameters
Valid parameters are described in the table below:
Parameter | Description |
---|---|
cat | Signal category. For audio masking, this value is always 0x04 |
type | The type of signal. Valid values for 0x04-categorysignals are:- 0x01 Mute On - 0x02 Mute Off |
objtype | The type of object that this signal relates to. This can be one of two values: - user (a user object)- channel (a channel object) |
objid | The unique ID of the object type as specified by the objtype parameter (above). This is used to locate the object in the Directory The region of the Directory to search in is specified by the key parameter (below) and governed by the access implied by the placement of the web user whose credentials are used to effect the web request |
key | Specifies the key relating to a container object in the directory (or blank, implying the whole directory) whereby a search on the object specified by objtype and objid is performed below |
Return values are specified as HTTP response status code. Although the body of some responses may contain informational text, you should not rely on this text to make any decisions as to whether the request was successful or not.
Status Codes
Valid status codes are as follows:
Parameter | Description |
---|---|
200 | The signal was received and stored successfully |
400 | The request was not acceptable for one of the following reasons: - An invalid type parameter was specified. The type parameter is specific to the category specified by the cat parameter. Further, the type value (e.g. 0x01 ) can be used in multiple categories.- The objid was missing. Specify the ID of the object you want the signal to relate to.- The cat and type parameters - category and signal type, respectively - must be specified and cannot be zero.- The version of TIM Enterprise you are running does not understand the signal.js script |
404 | The object specified by the combination of the objtype and objid parameters - and optionally the key parameter - could not be found |
500 | Internal Server Error prevented the signal from being stored successfully. This may be due to a badly-configured database, or the lack of a signals table in the TIM Enterprise database |
Example
An example of the above practice is as follows. You can enter this into a new browser tab, and so long as you are logged into TIM Plus with a valid webuser account you can practice sending requests to TIM Plus. The webpage will let you know if the signal was successfully received.
In the below example, are sending a mute signal to the TIM Enterprise machine for a user that has the 1234 extension number and a fullkey of \1\99\102.
http://192.168.0.45/signal.js?cmd=set&cat=4&type=1&objtype=user&objid=1234&key=\1\99\102\
Example | Explanation |
---|---|
http://192.168.0.45 | The IP address (and port number if applicable). |
signal.js?cmd=set&cat=4& | The signal request handler and requesting the call masking category. This should not be changed. |
type=1 | This is the request to turn on the mute signal. |
objtype=user | The request asking TIM Enterprise to mute a user object. |
objid=1234 | The ID (extension field in the user properties or the channel ID within TIM Plus) of the user in question. |
key=\1\99\102\ | The fullkey of the user object previously mentioned. |