WebACD Inbox Plug-In

The WebACD client plug-in architecture is based on an event model, where individual plug-ins can subscribe to any / all of the available events, and take the appropriate actions. Additional API calls allow the plug-in to call back to the WebACD server to retrieve certain data and state information. The C++ based plug-in model supports multiple plug-ins to one WebACD Inbox client. Each plug-in can subscribe to available events; when an event occurs, all plug-ins with subscriptions are notified.


Plug-in Auto-Discovery

The WebACD client performs an auto-discovery when the WebACD client login is performed. If the plug-in install is performed while the user is logged into the WebACD Inbox, he or she will need to restart the client in order for the plug-in to be detected.

Note: The WebACD SDK will need to be enabled on the Webex site in order for the plug-in to be detected. In the event that you are experiencing issues with plug-in detection, please send an email to webex-meetings-api-dev@cisco.com to have the site settings checked.


WebACD Plug-in Category

All WebACD third-party plug-ins should use the following category ID: static const GUID CATID_WEBACD_PLUGIN = {0x7499c923, 0x1b0b, 0x494d, {0x9b, 0x56, 0xe7, 0x5b, 0x15, 0xd6, 0x55, 0xff}};


Plug-in Category Support

  • Third-party plug-ins should be based on COM / ATL.
  • Each plug-in should add the following code (macro) in its class definition: BEGIN_CATEGORY_MAP(xxxxPlugin) IMPLEMENTED_CATEGORY(CATID_WEBACD_PLUGIN) END_CATEGORY_MAP()

This code will allow the plugin to register itself with the CATID_WEBACD_PLUGIN category during the COM server registration.


Plug-in Installation

Each 3rd party plug-in should have its own installation program. The installation program needs to call the command shown below in order to register itself as a WebACD plug-in. regsvr32 /s XXXPlugin.dll

Note: The WebACD SDK will need to be enabled on the Webex site in order for the plug-in to be detected. In the event that you are experiencing issues with plug-in detection, please send an email to webex-meetings-api-dev@cisco.com to have the site settings checked.


Plug-in Auto-Discovery

The WebACD client uses the Component Categories Manager to find all installed / registered WebACD plug-ins. After the client finds a compatible plug-in, it first goes through the plug-in authentication process (see "Plug-in Authentication"). Next, the client initializes all accepted plug-ins. After a plug-in is successfully initialized, it will receive its subscribed events from the WebACD client.


Plug-in Initialization

Each plug-in should implement the IWebACDPlugin interface, which includes an Init(¿) method. The plug-in subscribes to any of the available WebACD events inside the Init() method by using the callback method, subscribeEvent(EventType).


Plug-in Authentication

WebACD has a site-level setting that controls whether or not plug-in signature verification is required. If this setting is enabled, a plug-in must be authenticated before it can be used. If it is disabled, authentication will take place automatically. Since this setting resides internally at Webex, at the site level, all sites intended for use with a particular plug-in must be configured accordingly by Webex personnel. If you believe that the site has not been set to use your plug-in, please send an email to webex-meetings-api-dev@cisco.com so they can check the setting.

All plug-ins use the following rules:

  • A plug-in is authenticated at the site level. A plug-in that is authenticated for site A still has to be authenticated for site B.
  • If a plug-in is digitally signed by a trusted WebACD plug-in vendor, then WebACD will automatically authenticate the plug-in.
  • If a plug-in is not provided by a trusted WebACD plug-in vendor, then WebACD will generate a pop-up window asking the agent to accept the plug-in.
  • A plug-in only needs to be authenticated once for a site. Once a plug-in is accepted, WebACD will not ask the CSR to accept it again after its auto-discovery.
  • The WebACD client stores a keyed hash value in the Windows registry for each authenticated plug-in.
  • Changing the "Enforce Plug-in Signature Verification" selection in Super Admin does not affect authenticated plug-ins.


Event Model Summary

Table 2-1 shows a summary of the events that can be subscribed to on the WebACD Inbox client.

Parameters Passed to Event

Incoming Request Parameters

Event Sync/Async Event Summary
Incoming Request Sync Invoked when a new session request is routed to the WebACD Inbox Client.
Request Accepted on page 7 Async Invoked when a new session request is accepted by the CSR.
Join Session Async Invoked when the CSR joins a session.
Leave Session Async invoked when the CSR leaves a session.
Session Ended Async Invoked when a session has ended.
CSR Status Changed Async Invoked when a CSR's availability status is changed.


Event Details

This section describes the details of each event supported by the WebACD client plug-in.

Note: The Customer Data parameter is a vector type. As such, it has a particular format as shown below:
customerdata;
struct CustomerInfoField {
TCHAR *pname;
TCHAR *pvalue;
}
NULL is returned if a request has no "Customer Information". The following sessions are allowed to return NULL:
  • Outbound session.
  • Transfer to queue / Invite a queue request. checked.





Incoming Request

Return to Event Model Summary
This synchronous event occurs when a new support request is routed to the CSR's WebACD Inbox.

Parameters Passed to Event

Request Accepted Parameters

Parameter Type Description
CSR ID Unsigned Int Unique identifier for the CSR.
Customer Data See Note Customer information in string format.
Queue ID Unsigned Int Unique identifier for the queue.
Request ID Unsigned Int Unique identifier for the request.
Session ID Unsigned Int Unique identifier for the session.

Return Values

Values Type Description
CSR availability
  • 0: Unavailable
  • 1: Available
  • 2: Busy
  • 3: Disconnected
Returns the status of a CSR.
Note: Multiple Plug-in Support
Since this command is synchronous, considerations need to be made for handling multiple plug-in types subscribing to the same event. The WebACD client needs to wait for all of the plug-ins to return their status prior to returning it's own status.
The WebACD client logic used to return event status is shown in Table 2-4.

Incoming Request Multiple Plug-in Support Logic
Plug-in 1 Result Plug-in 2 Result WebACD Client Result
Available Available Available
Available Busy Busy
Available Unavailable Unavailable
Busy Busy Busy
Busy Unavailable Unavailable
Unavailable Unavailable Unavailable





Request Accepted

Return to Event Model Summary
This asynchronous event occurs when a CSR accepts a support request.

Parameters Passed to Event

Request Accepted Parameters

Parameter Type Description
CSR ID Unsigned Int Unique identifier for the CSR.
Customer Data See Note Customer information in string format.
Queue ID Unsigned Int Unique identifier for the queue.
Request ID Unsigned Int Unique identifier for the request.
Request Wait Time Unsigned Int Request for an estimation of how long until a CSR is available.
Session ID Unsigned Int Unique identifier for the session.

Return Values

Optional (such as Ticket ID, Ticket URL).






Session Started

Return to Event Model Summary
This asynchronous event occurs when a CSR starts a support session.

Parameters Passed to Event

Session Started Parameters

Parameter Type Description
CSR ID Unsigned Int Unique identifier for the CSR.
Customer Data See Note Customer information in string format.
Queue ID Unsigned Int Unique identifier for the queue.
Request ID Unsigned Int Unique identifier for the request.
Session ID Unsigned Int Unique identifier for the session.
Session Start Time Unsigned Int (seconds since 1970/1/1 0:0:0) The date and time that the session started.

Return Values

None






Join Session

Return to Event Model Summary
This asynchronous event occurs when a CSR joins a support session.

Parameters Passed to Event

Join Session Parameters

Parameter Type Description
CSR ID Unsigned Int Unique identifier for the CSR.
Customer Data See Note Customer information in string format.
Join Session Time Unsigned Int (seconds since 1970/1/1 0:0:0) The date and time that the CSR joined the session.
Queue ID Unsigned Int Not Required. Unique identifier for the queue.
Request ID Unsigned Int Unique identifier for the request.
Session ID Unsigned Int Unique identifier for the session.

Return Values

None






Leave Session

Return to Event Model Summary
This asynchronous event occurs when a CSR leaves a support session.

Parameters Passed to Event

Leave Session Parameters

Parameter Type Description
CSR ID Unsigned Int Unique identifier for the CSR.
Customer Data See Note Customer information in string format.
Leave Session Time Unsigned Int (seconds since 1970/1/1 0:0:0) The date and time that the CSR left the session.
Queue ID Unsigned Int Not Required. Unique identifier for the queue.
Request ID Unsigned Int Unique identifier for the request.
Session ID Unsigned Int Unique identifier for the session.

Return Values

None






Session Ended

Return to Event Model Summary
This asynchronous event occurs when a CSR ends a support session.

Parameters Passed to Event

Session Ended Parameters

Parameter Type Description
CSR ID Unsigned Int Unique identifier for the CSR.
Customer Data See Note Customer information in string format.
Queue ID Unsigned Int Not Required. Unique identifier for the queue.
Request ID Unsigned Int Unique identifier for the request.
Session End Time Unsigned Int (seconds since 1970/1/1 0:0:0) The date and time that the CSR left the session.
Session ID Unsigned Int Unique identifier for the session.

Return Values

None






CSR Status Changed

Return to Event Model Summary
This asynchronous event occurs when a CSR's availability status changed.

Parameters Passed to Event

CSR Status Changed Parameters

Parameter Type Description
CSR ID Unsigned Int Unique identifier for the CSR
CSR Status Change From Unsigned Int
  • 0: Unavailable
  • 1: Available
  • 2: Busy
  • 3: Disconnected
The CSR's previous availability status.
CRS Status Change to Unsigned Int
  • 0: Unavailable
  • 1: Available
  • 2: Busy
  • 3: Disconnected
The CSR's current availability status.

Return Values

None