Appendix A: How CIC generates Interaction IDs

Appendix A: How CIC generates Interaction IDs

This section describes how CIC generates unique IDs for each interaction in the system. These identifiers are called Call ID in Interaction Client, and they are modified and stored in the CIC database as a unique CallIDKey in the Call ID column. However, these identifiers apply to all interaction types.

Call IDs

Call IDs are 10 digit identifiers that are guaranteed to be used by at most one interaction at any point in time. They are likely to repeat after a period of time. To preserve each Call ID, and later be able to distinguish it from other interactions, CIC stores the CallIDKey, which is guaranteed to uniquely identify an interaction.

CallIDKeys

CallIdKeys are 18 character alphanumeric strings whose format might change from release to release, though the values will always be unique.

Important The format and use of this field is reserved, and it should not be used as anything more than an opaque identifier. The format of this field might be changed at any time. This field is documented for descriptive purposes only.

Call ID Keys changed in 2.3

The CallIDKey is comprised of the 10 digit CallId plus an eight digit date in this format: YYYYMMDD. For example, a call placed on April 9, 2004 might show a Call ID of 2101990183 on Interaction Client. The resulting CallIDKey stored in the database would be that CallID plus the date: 210199018320040409.

Note

In IC version 2.2, the Call ID Key remained 10 characters but it became a case-insensitive string. In 2.3, it changed from 10 characters (a CHAR10) to 18 characters (CHAR18).

Prior to the release of version 2.3, the CallID and the CallIDKey were not the same, so you could not easily map these values to each other without customizations. Starting in 2.3, the CallIDKey included the CallID embedded within it. That meant, for the first time, you were able to search the Call Detail Record log for the original CallID number as seen in Interaction Client.

Call IDs and Call ID Keys changed in 2.1

In 2.1 the Call ID, as seen in the client, changed to a single digit (1-3), followed by the Site ID, then followed by a six-digit sequence number.

The Client Call ID: 1001010003


The Call ID no longer "resets" at midnight. The number is persisted in the registry under Software\Interactive Intelligence\Eic\Notifier\InteractionIDSequencer. The system updates this value for every 10000 allocations.

The Call ID Key encoding that is stored in the database also changed. The Call ID Key, for version 2.1, is still a ten character case-sensitive string.

The Client Call ID Key: 1JKBx00001


It is unique over a long period of time (roughly 127 years), but its construction is now largely opaque due to the need to handle a much larger range of identifiers than was previously necessary. The Call ID Key is constructed based on the following information:

  • Date of the last server restart
  • Site ID
  • Six least significant digits of the Call ID (When the six least significant digits of the Call ID overflow, the portion of the Call ID Key derived from the server restart date is advanced.)

How Client Call IDs were generated in 2.0 and prior

CIC stores Client Call IDs in the call attribute, EIC_CallId, which serves as a temporary unique identifier for each call object. The decimal value of the Client Call ID is an integer in the range 100000000 – 4199999999. The call identifier is typically a large number composed of 10 digits in the following format:

MM SSS DDDDD

DDDDD is a number that the system increments for each successive Client Call ID. It is set to zero when then system clock rolls over at midnight, and is set to the number of seconds since midnight when CIC is started.

SSS is the site identifier. To maintain unique identifiers across multi-site installations, CIC uses the value of the Site Identifier (an integer value in the range 0 - 999 configured by IA) in the Client Call ID.

MM is, by default, the day of the month. If your CIC system consumes Client Call IDs at a very high rate and the DDDDD value overflows, CIC resets DDDDD to zero and MM to (MM + 17) % 41 + 1.

Because CIC uses this method the system reuses Client Call IDs approximately every month.

For example, 0100100001 is the first Client Call ID the system allocates at site 1 on the first day of any month (the first Client Call ID is not necessarily the first call made or received).

As another example, 1200200100 is the hundredth Client Call ID the system allocates at site 2 on the twelfth day of any month.

Description of EIC_CallIDKey in 2.0 and Prior

In order to have unique keys for database operations, we added a new call attribute, EIC_CallIdKey.

EIC_CallIDKey is a unique identifier whose value is a ten-character string composed of alphanumeric characters (digits and upper and lower case alphabetic) that is unique across related sites over an extended period of time (106 years). The first three characters of Eic_CallIDKey correspond to a rare base 62 count of the number of days since we released CIC. The next two characters are the Site ID (it looks like decimal digits for Site IDs in the range 0 - 99 and looks like strange alphabetic characters for Site IDs larger than 99). The last five characters correspond to the low order five digits of the original IC 1.2 Call ID.

Typically, there is a one-to-one mapping between the Client Call ID value and the Eic_CallIDKey string. When CIC supports intelligent transfers between related CIC systems, the system keeps the same Client Call ID and Eic_CallIDKey value with the call.