Avaya IP Office

Syntelate XA supports several CTI (computer telephony integration) solutions for voice calls. One of these solutions is integration with Avaya IP Office™ via the Telephony API (TAPI). This is done using TAPILink Pro.

How It Works

At a very high level, here’s how Syntelate XA’s integration with IP Office works.

Telephony Login

Where a Syntelate XA workzone has been configured to use IP Office, the agent will see the Telephony Login dialog box upon selecting that workzone.

The Telephony Login dialog box for IP Office

Telephony Toolbar

Once logged in to the IP Office workzone, a telephony toolbar is pinned to the top of the agent’s desktop. It is via this that the agent performs most telephony operations.

Screenshot of the telephony toolbar

The current CTI state (shown at the top of the toolbar) defines the buttons that are shown in the toolbar and whether they are clickable or grayed out.

The following table lists the CTI states in which each button is visible and clickable.

Button CTI State(s) in Which Visible and Clickable
Answer Ringing
Dial Preview, Wrap Up, Worklist
Cancel preview Preview
Hold Talking, Consult Dialing, Consult, Consult Receiver, Conference, Conference Receiver
Unhold Hold
Hang up Dialing, Talking, Consult Receiver, Conference, Conference Receiver
Blind transfer Talking
Consult Talking
Transfer Consult Dialing, Consult, Conference
Retrieve Consult Dialing, Consult, Conference
Conference Consult

The agent can both hang up and close an interaction record by clicking a completion button. A completion button is clickable in the following CTI states: Preview, Talking, Wrap Up, Conference.

Note: Any buttons in the telephony toolbar that you do not wish to use can be hidden. This is done via the appsettings.config file for Syntelate XA.

Telephony Logout

When the agent logs out of an IP Office workzone (by clicking Side menu accordion button and then Log out), Syntelate XA logs them out of IP Office.

The agent can only log out when their agent state is Not ready.

Supported Functionality

The following functionality is supported:

  • Go ready / not ready
  • Answer (inbound calls)
  • Dial (outbound calls)
  • Cancel preview
  • Hold/Unhold
  • Hang up (by agent/customer)
  • Blind transfer
  • Consult
  • Conference

Going Ready

When an agent clicks Ready in the CTI toolbar, in IP Office their phone is taken out of “do not disturb”. They can then receive inbound calls.

For each workzone, you can define whether:

  • The workzone is outbound only.
  • The workzone accepts inbound calls but only for agents in a particular agent group.
  • The workzone accepts inbound calls for all agents.

If an agent is not set up to receive inbound calls for a particular workzone in Syntelate XA, then going ready while logged into that workzone does not turn off do not disturb in IP Office. Clicking Ready inSyntelate XAdoes, however, allow them to be passed other types of interaction, such as outbound calls to make, emails, or chats.

Note: At the end of each call, Syntelate XA checks whether the agent is set up to receive inbound calls. Syntelate XA also performs this check every 30 seconds while the agent is waiting for a call.

This lets you move an agent into or out of the inbound agent group to meet demand.

Going Not Ready

When the agent clicks Not ready, Syntelate XA prompts the agent to select a not ready reason.

Screenshot of the Not Ready dialog box

You must define the not ready reasons that you want to use.

If the agent goes not ready while on a call, their agent state is set to Pending Not Ready. This changes to Not Ready upon completion of the call.

Going not ready turns on do not disturb in IP Office.

Note: If you have not set any not ready reasons, the agent will be set Not Ready or Pending Not Ready immediately upon clicking Not ready (without having to first select a reason).

Answer

When an agent clicks Answer to accept an inbound call, the following fields are populated in the interaction record:

  • LKTL_CLI: Calling line identification
  • LKTL_DDI: Direct dial-in
  • LKTL_UCID: Universal call identifier
  • LKTL_UUI: User-to-user information

For existing customers, this lets Syntelate XA match on the customer’s phone number and then display the customer’s details to the agent.

Dial

If the agent clicks Dial, the Dial window shows.

Screenshot of the dialpad

The agent can use this window to make outbound calls.

Note: If the agent is viewing a record that contains a phone number, the agent can also click the Dial button with auto-dial or Dial button without auto-dial button beside the phone number to dial it.

Dial button with auto-dial immediately dials the customer, whereas Dial button without auto-dial sends the customer’s number to the Dial window.

Cancel preview

Syntelate XA can pass outbound calls to the agent in preview. This lets the agent review the customer’s details before making the call.

If the agent decides not to make the call, they can click Cancel preview. This completes the call using the completion code that has been defined for the workzone. The agent then moves onto the next item in their workload.

If the agent is set up to receive inbound calls, an outbound record in preview can be interrupted by an inbound call.

Hang up

If the agent is disconnected from the customer during a call — for example, due to the customer hanging up — a message informs the agent of this.

The agent can hang up by clicking Hang up in the CTI toolbar. Alternatively, the agent can both hang up and close the interaction record by clicking a completion button.

Blind transfer

There are two ways in which the agent can transfer the customer to another number:

  • Blind transfer
  • Warm transfer (in other words, transferring from a consult)

With blind transfer, the agent is immediately disconnected from the customer upon initiating the transfer. As such, the party to whom the call is transferred comes at it “blind” (with no introduction from the initial agent about what the customer is calling about).

Consult and Conference

Consult lets the agent speak to another party while the customer is on hold. To use consult, the agent’s phone must have exactly two line appearances. Syntelate XA does not support more than two line appearances for an agent phone.

While on a consult, the agent can do the following:

  • Transfer: Transfers the call to the other party and ends the call for the agent (“warm transfer”).
  • Retrieve: Drops the other party from the call and takes the customer off hold.
  • Conference: Takes the customer off hold and lets them participate in a three-way call with the agent and the other party.

Syntelate XA supports both agent consult and external consult.

With agent consult, the other party is another agent in Syntelate XA who is logged into a workzone that uses the same universe (“agent B”). While on a consult, agent B can see the customer’s details in their desktop but cannot edit them. Agent B’s telephony toolbar shows appropriate buttons based on their role as consult receiver.

If agent A transfers the call, agent B’s desktop becomes editable and their telephony toolbar updates as appropriate.

With external consult, the other party is either:

  • Anyone other than an agent logged in to Syntelate XA
  • An agent logged in to Syntelate XA but on a workzone that uses a different universe

Note: With agent consult, transfer immediately closes the record for agent A and puts agent A into a ready or not ready state as appropriate.

With external consult, transfer puts agent A into wrap-up.

EXAMPLE 

Emily, a customer of Inisoft Travel, has a query about her hotel. She calls Inisoft Travel but mistakenly dials the Business Travel number instead of the Personal Travel number. She gets through to Zac.

Zac quickly realizes that Emily has got through to the wrong person, and so he clicks Consult and then selects the Personal Travel hunt group (agent consult). This puts Emily on hold. Zac’s call is passed to Jack, and Zac briefly explains to Jack what Emily is calling about. He then transfers the call to Jack (warm transfer).

Jack speaks with Emily to find out more about her problem. Realizing that he needs to speak with the hotel to sort the matter, he clicks Consult and then dials the hotel’s number (external consult). This again puts Emily on hold. Jack speaks with the hotel and gets to the bottom of the matter.

Jack now clicks Retrieve, which ends the call with the hotel and takes Emily off hold. Jack is now able to tell Emily the answer to her query.

What You Need

For Syntelate XA to integrate with IP Office, you must have:

  • Avaya IP Office™
  • TAPILink Pro configured for third-party call control and installed on the Syntelate XA server

Avaya Contact Center Select

Syntelate XA also supports the use of Avaya Contact Center Select (ACCS) with IP Office.

Workzone Configuration

In Syntelate XA, all CTI integrations are configured in Designer's Workzone Editor. Here is a screenshot of the configuration screen in Workzone Editor.

Workzone Editor configuration screen.

The following three settings in a CTI workzone must be completed to create a telephony channel in Syntelate XA:

  • CTI: Offers types of telephony to choose from.

  • CTI configuration (JSON): This is where you specify the telephony server connections.

  • CTI run options (JSON): This is where you specify the telephony behavior at runtime, in other words, how Syntelate XA should handle calls on the Syntelate XA Agent Desktop.

The CTI configuration and run options need to be provided in JSON format.

Documentation of each option is given in the sections below.

IP Office and ACCS

To set up IP Office to use ACCS, make sure you include the ACCS settings that are in the CTI configuration documentation below.

CTI configuration (JSON)

Copy
TAPI configuration
{
    /* Standard settings */
    "CtiSource": "IPOffice",
    "CtiApiUrl": " ",
    "LoginRequired": true,
    "AutoLogin": true,
    "RecordLoginDetails": true
    "PopOnOutgoing": true,
    
    /* TAPI server settings */
    "cancelPreviewCode": "~PrvCncl~",
    
    /* ACCS settings */
    "CctConfig": {
        "Primary":" ",
        "Domain": " ",
        "Port": " ",
        "SingleSignOn": true,
        "AfterCallWorkCode": ""
        }
}

Standard Settings

The standard settings are required.

JSON Key Description
CtiSource

Default value: An empty string.

Valid values: A string that is either "POM", "TSAPI" or "IPOffice".

Defines the type of telephony integration.

CtiApiUrl

Default value: An empty string.

Valid values: A string that contains an absolute URL.

Defines the URL of the Syntelate XA Web API for the CTI, hosted on your Syntelate XA instance. We recommend you host Syntelate XA near the phone system (on the same domain or in the same data center) to avoid latency issues.

AutoLogin

Default value: true

Valid values: true | false

Determines whether Syntelate XA will automatically log in the agent. If AutoLogin fails for any reason, Syntelate XA shows the log in dialog to the agent so they can log in manually. We recommend setting this to true.

RecordLoginDetails

Default value: true

Valid values: true | false

Determines whether the agent's login details will be stored in the AgentLastLogin table after they first successfully log in. We recommend setting this to true.

PopOnOutgoing

Default value: true

Valid values: true | false

Determines whether the Dial telephony button will pop a new interaction record to the agent desktop if it doesn't already have a interaction record open. Only affects agents who dial an outbound call while in Not Ready or Waiting.

TAPI Settings

The TAPI setting is required.

JSON Key Description
cancelPreviewCode

Default value: An empty string.

Valid values: A string that is a completion code present in the COMPLETION_CODES table.

Defines the completion code to use when the agent clicks Cancel preview. References the CODE field of the COMPLETION_CODES table.

ACCS Settings

You only need to include the ACCS settings if you are using IP Office with ACCS.

JSON Key Description
Primary

Default value: An empty string.

Valid values: A string that is an IP address.

Defines the IP address of ACCS.

Domain

Default value: An empty string.

Valid values: A string that is a domain address.

Defines the domain that points to the IP address for ACCS.

Port

Default value: An empty string.

Valid values: A string that is a whole number.

Defines the port number that is required by the IP address of ACCS.

AfterCallWorkCode

Default value: An empty string.

Valid values: A string.

Defines the code that tells ACCS not to pass calls to agents who are in wrap-up.

CTI run options (JSON)

Copy
TAPI runtime options
{    
    /* Go ready options */
    "GoReadyOptions": {
        "IncomingCallsAgentGroup": 0,
        "OutboundOnly": false,
        "OutboundOnlyAuxCode": 0
        "GoReadyWithManualIn": false
    },        
    /* Call options */
    "CallOptions": {
        "ExtnLength": 5,
        "ExtnLengthComparison": ">",
        "ExternalPrefix": "0",
    },
    /* Wrap timer options */
    "WrapTimer": {
        "Countdown": true,
        "CountdownTimeoutSecs": 30,
        "CountdownAddTimeCount": 1,
        "CountdownAddTimeSecs": 10,
        "autoCompleteCode": "AUTOWRAP"
    },
}

Go Ready Options

JSON Description

IncomingCallsAgentGroup

Default value: 0

Valid values: A positive integer.

Defines the agent group number that will be set Ready for inbound calls. References the AgentGroupNo field of the AGENTGROUPS table. If you omit this setting, then all agents will be available for inbound calls (unless you also set OutboundOnly to true).

OutboundOnly

Default value: false

Valid values: true | false

Determines whether the workzone is outbound only. Set to false if it will handle both inbound and outbound calls.

OutboundOnlyAuxCode

Default value: 0

Valid values: A positive integer.

Defines the Aux reason code that tells the CTI system that the agent is busy handling calls and it should not pass the agent inbound calls.

GoReadyWithManualIn

Default value: false

Valid values: true | false

Determines whether the agent needs to manually click Answer to pick up an inbound call. Set to false if inbound calls should be answered automatically. Exception: the settings of the agent’s phone (their extension number) can override this.

Call Options

JSON Description

ExtnLength

Default value: 0

Valid values: A positive integer.

Defines the number of digits in internal agent phone extensions. If you have varying lengths of internal extension (for example, a mix of 4 digit and 5 digit extensions) then set this to the higher number (and set ExtnLengthComparison accordingly).

ExtnLengthComparison

Default value: Empty string.

Valid values: An operator (such as !=, >, or >=).

Determines when ExternalPrefix is assigned to a phone number, based on ExtnLength. For example, if ExtnLength is 5 and ExtnLengthComparison is !=, then ExternalPrefix is assigned to any phone number with a length other than 5 (numbers with 4, 7 or 11 digits, and so on).

ExternalPrefix

Default value: Empty string.

Valid values: A positive number.

Defines the prefix Syntelate XA should use when dialing external numbers.

Wrap Timer Options

JSON Description
Countdown

Default value: true

Valid values: true | false

Determines whether automatic wrap-up of calls is enabled. If true, calls are wrapped up when the countdown is complete. When true, Countdown is dependent on the other wrap timer options in this group.

CountdownTimeoutSecs

Default value: 0

Valid values: A positive integer.

Defines the number of seconds that the wrap timer counts down from.

CountdownAddTimeCount

Default value: 0

Valid values: 0 | 1 (as integers, not strings)

Determines whether the + ADD Time button is displayed on the Agent Desktop. 0 is false and 1 is true. If you set this to 1, then you need to include the option CountdownAddTimeSecs. See below.

CountdownAddTimeSecs

Default value: 0

Valid values: A positive integer that represents a time in seconds.

Dependent on CountdownAddTimeCount. If you have set CountdownAddTimeCount to 1, then you need to include this option to specify how much time the +ADD TIME button adds to the timer. You can set it to 0 to force the wrap timer to count up rather than down.

autoCompleteCode

Default value: Empty string.

Valid values: A string.

Dependent on Countdown. If you set Countdown to true, when the timer reaches zero, the autoCompleteCode is stamped on the interaction record to log that it has been completed.

Not Ready Reasons

Not ready reasons are held in the CTINOTREADYREASONS database table.

You can manage the not ready reasons either from the configuration desktop or directly in the database.

For guidance on using the configuration desktop to manage the not ready reasons, see Not Ready Reasons.

If you prefer to use the database, ensure that you add a new record for each not ready reason. For guidance, see CTINOTREADYREASONS.