06. Plugins

A Plugin is essentially a data source for the Answer Bar's tools.

When a call arrives each plugin defined via toolbar.xml is checked to see if it's filters match the call. If no plugin's filters match the call the first plugin defined will be used. The plugin is then passed the caller id, DID, Extension and queuename (if it's a call from a queue). At this time the plugin can perform whatever work it needs to do to obtain data from an external source such as a Web Application, CRM or database about the call. Once the selected plugin has retrieved the information about the call each of the tools will be notified of the call.

 What the tool does with that data is dependant on the tool. Typically it will display the information on the Answer Bar or in the case of the PopTool it will provide a URL to Screen Pop when the call is answered.

The following definitions are provided for clarity.

TermExplanation
 Caller ID this is the phone number of the caller
DIDthis is your organisation's phone number that the caller dialled to ring you. Many organisations will have more than 1 DID (for ISDN services you will typically have 100 DIDs, for VoIP services you need to order each DID individually).
ExtensionThe extension (phone) that the call will ring on.
QueueNameThe name of the queue that the call has passed through.
 Screen PopA screen pop is the act of displaying a new browser page as a call is answered. The contents of the displayed page are usually related to the Caller ID, for instance the system might display the callers account details. The page that is 'screen popped' may also be dependant on the callers current account status (e.g. they are over-due on a payment). The screen popped page may also be dependant on the DID they called in on (e.g when they call the support line we screen pop the 'new case' screen, when they ring sales we pop the 'opportunity' screen.)/


Noojee Answer ships with a number of standard plugins and it is possible to write additional custom plugins in Java.

A plugin is called as each call arrives but before the Answer Bar is displayed to the agent.

A plugin is passed four pieces of information:

  • Caller ID
  • DID
  • Extension
  • QueueName

The plugin must return all of these pieces of information:

  • URL to pop
  • Message to display
  • Data to place on the clipboard
  • Caller Name

Once the plugin returns the above information the Answer Bar is notified with the details causing the Answer Bar to display itself alerting the Agent to an incoming call.

Noojee Answer ships with a number of standard plugins:


Plugin Configuration

class

The fully qualified name of the plugin class.

Params

Each crm-plugin supports a different set of params. However the <channelVariable> param is common to all plugins. The <channelVariable> tag instructs Noojee Answer Bar to make the contents of the named asterisk channel variable available to the plugin. This can be useful for recording callers interaction with IVR's and displaying relevant information to the agent in the answer bar. Example usage of this can be seen in the JdbcPlugin example.

Filters

Noojee Answer Bar is designed to use multiple crm plugins simultaneously, allowing a different set of data to be pulled depending on how the call entered the phone system. This is achieved with the <filter> tag. The filter tag supports <didPattern> and <queue> filters. Currently only perfect matches are supported, pattern matching may be implemented at a later date. If no <filter> tag is defined, the crm plugin will match all calls. Only 1 crm plugin will process a call. If no plugins match the first plugin defined will process the call, and error log will generated. A didPattern is the number that the caller dialled to enter the phone system. A queue is the name assigned to an Asterisk queue, which the call passed through


<crm-plugin>
        <class>au.com.noojee.answerbar.server.plugin.CallerIdPlugin</class>
        <params>
            <url>/servicemanager/HelpServlet</url>
            <channelVariable>account</channelVariable>
            <channelVariable>country</channelVariable>
        </params>
        <filter>
            <didPattern>7603</didPattern>
            <didPattern>7601</didPattern>
            <queue>somequeue</queue>
        </filter>
    </crm-plugin>