iCall SDK 集成开发介绍


一、开发概述

iCall 是完善的产品化呼叫中心系统,同时也是一个开放的智能通讯平台,iCall 提供开发接口,可以方便地进行二次开发,快速实现与业务系统无缝集成。


1.1 网络架构

利用 iCall 提供的开发接口可以很容易实现呼叫中心与 CRM、ERP、以及行业应用系统集成,或进行业务定制。应用开发商无需了解或关心任何通讯相关的专业技术,只需专注行业业务应用,可快速整合具有完备的专业呼叫中心功能的整体解决方案。


呼叫中心系统网络架构图

( iCall 呼叫中心系统以及业务集成网络架构 )


1.2 逻辑架构

iCall 呼叫中心平台二次开发接口提供多种集成整合模式,即可在联傲 B/S 架构的 CAMS 座席系统框架中自行定制开发用户业务系统,也可通过联傲座席控件 (OCX) 集成到用户原有业务系统,实现完整的呼叫中心通讯功能。


呼叫中心系统逻辑架构图

( iCall 呼叫中心系统以及业务集成逻辑架构 )


iCall 业务集成分为座席端业务集成(前台集成)和在 IVR 中与业务交互(后台集成)。

◆ 座席端业务集成

例如实现来电弹屏、点击呼叫等。

iCall 所有种类座席的开发接口都是相同的,iCall 座席提供两种方式的开发接口:


< 1 > iCallAgent.ocx 控件接口


适用于 C / S 以及 B / S 架构应用整合。

响应控件的 OnRing 事件就可以实现来电弹屏;调用控件的呼出方法就可以实现点击呼叫。


< 2 > JS 对象接口


CAMS(联傲座席管理系统)提供 iCallAgent.js ( Javascript 对象) 开发接口,可以将定制业务嵌入 CAMS 框架,实现定制业务与联傲座席框架的无缝集成。

◆ 在 IVR 中与业务系统交互

iCall 可选配大量流程插件,实现各种行业相关的应用,插件通过 WebService 方式与业务系统交互。

业务开发商只需要将业务逻辑或业务数据封装成 WebService 服务就可以很方便实现诸如来电自动验证会员身份、自动查询运单状态、自助查询余额等应用。

二、座席控件方式应用开发

本节只介绍 iCall 座席控件的基本概念和常用的应用开发场景,有关详细文档或更高级应用集成请咨询联傲电讯。

iCallAgent.ocx 座席控件支持 iCall 所有种类座席(标准座席、CSAP 软座席、SIP 座席),全面封装了 iCall 座席的功能,业务层可通过控件的事件、方法、属性实现对座席的通讯操作、响应来电消息等。


座席应用开发的一般步骤是:


< 1 > 登录控件并启动座席

< 2 > 响应事件或进行通讯操作

2.1 登录与启动座席

iCall 座席需要登录验证后才可以使用。iCall 呼叫中心中话务员用工号、密码进行验证,在 CRM、ERP 或定制业务中,应用系统有自身的用户登录验证体系,iCall 座席控件支持统一登录。


iCall 座席控件提供以下两个登录相关的方法:


功能:iCall座席登录。

业务系统调用此方法,系统打开iCall座席登录界面,如果登录成功返回话务员输入的工号.

参数:AgentID:话务员工号

IsAdmin:登录用户是否为系统管理员

返回:True登录成功.只有登录成功 AgentID , IsAdmin 才有效.

False登录失败


功能:设置登录信息。表示工号AgentID已经经过验证,允许直接登录。

参数:AgentID:话务员工号

IsAdmin:是否系统管理员。有些APP只有系统管理员才有权使用。


假设话务员工号是 ‘ 100 ’,在业务系统中的登录的用户名为 ‘ 张三 ’。业务系统需要建立维护一个“用户名 – 工号”对照表。

方式一:用业务系统的登录界面进行登录验证。

用户输入‘张三’在业务系统登录界面进行登录验证,验证成功后,业务系统从对照表取得张三的工号是 100,然后调用 SetLoginInfo 方法通知 iCall 工号 100 已经业务系统验证,允许登录座席系统。

方式二:用 iCall 座席的登录界面进行登录验证。

调用 Login 方法,系统打开 iCall 座席登录界面:


Login

登录验证成功后,业务系统根据返回的话务员工号从对照表取得对应的用户名,然后设置业务系统的用户名。

登录成功后调用 OpenApp 方法启动座席。


function OpenApp (1, 0): Integer;

功能:启动或连接座席。

返回:1标准座席

2CSAP软座席

3SIP座席


座席启动成功后,可以通过属性 SliceNo 取得自己座席序号。


示范代码:


// ---- 功能:登录并启动座席 -------------------------

// AgengX 是 iCallAgent.ocx 对象实例

// ------------------------------------------------------------

function Init:Boolean;

begin

Result : = False;

IfAgentX.Login(AgentID,IsAdmin)then

Result : = AgentX.OpenApp(1,0) in [1..3];

IfResultthen

MySliceNo : = AgentX.SliceNo;

end;


2.2 事件与来电弹屏

iCall 座席控件事件封装了来电、通话、按键、呼叫进展、座席状态变化、实时消息等所有的消息通知。

例如来电对座席振铃时,控件触发 OnRing 事件,在事件参数中包含了来电号码。业务系统根据来电号码取得客户信息以及相关交易记录,在座席振铃时即可立即显示该客户的关联信息,实现“来电弹屏”功能。


OnRing(SliceNo,iParam:Integer; sParam: WideString)

功能:来电通知事件,座席振铃时触发。

SliceNo:发生事件的座席序号

iParam:来电类型,0 :内线,1 :外线

sParam:标记字符串,传递到座席的信息。


在座席振铃时,iCall 可将来电类型来电号码,以及本次呼叫在流程中收集到的 任何信息 以标记字符串的形式传递到座席端。

标记字符串格式为:标记名 : 标记值 | 标记名 : 标记值 ……


系统定义了以下标记名:


标记名参数内容说 明
CALLERID来电号码座席振铃或接听来电时产生
TTYPE来电类型 1 : 呼出 , 2 : 接听 , 3 : 转移呼叫
VOCID本次通话录音ID通话自动录音,每次录音有一个唯一ID。当座席通话时系统触发OnTalk事件,包含此标记值。

例如来电号码为 83366857 对座席振铃,则 OnRing 事件中标记字符串 (sParam) 内容为 :CALLERID:83366857|TTYPE:2.


示范代码:


//-----------------------功能:来电弹屏 -------------------------

procedure TForm1.AgentXRing ( ASender : TObject; SliceNo, iParam : Integer; const sParam : WideString);

var

Str:TStringList;

star,I:integer;

CallerID:String;

begin

if SliceNo <> AgentX.SliceNo then

exit;// 不是本座席的来电事件

if iParam = 0 then

ShowMessage ( ‘ 座席来电 ’ )// 座席来电一般不弹屏

Else begin

// 以下代码从标记字符串取来电号码

str : = TStringList.Create;

str.Delimiter : = ' | ';

str.DelimitedText : = sParam;

for i : = 0 to str.Count -1 do

begin

star := pos('CALLERID:',str[i]);

if star > 0 then

begin

CallerID := copy(str[i],Length('CALLERID:')+1,Length(str[I]));

// --- ShowMessage(‘来电号码:’+CallerID); ---

// 在此根据来电号码查询客户信息、交易记录等,实现来电弹屏

// ……

end;

end;

Str.Free;

end ;


可在流程插件中自定义标记名,向座席端传递任意需要的信息。例如在会员认证插件中定义 MemberID ,将会员号传递到座席端。


2.3 通讯操作

iCall 将座席端的通讯操作分为一般操作和授权控制操作两类。

◆ 一般操作

无需授权,话务员可以进行的操作,例如:接听来电、保持 / 恢复 / 转移通话、呼出/发码、暂停 / 继续服务、转自动、发送即时消息等。

iCall 控件的一般操作统一由方法 DoAction 实现,也可以调用方法 ShowAgengPanel(1,True) 打开操作台,利用 iCall 封装好的操作界面和菜单进行一般操作。

◆ 控制操作

只有授权的话务员才可以进行的操作,例如:监听、拦截、强插、紧急呼叫等等。

iCall 有完善的操作授权和角色分配管理功能。

iCall 控件的控制操作统一由方法 DoControl 实现,也可以调用方法 ShowAgentPanel(2,True) 打开监控台,监控其它座席状态,进行控制操作。


功能:执行一般通讯操作。

参数:ActID:通讯操作代码,包括:接听/应答、保持/恢复/转移通话、呼出、转自动、会议、传

真、状态设置、以及即时消息等。

iParam,sParam:

操作参数,与操作码相关。


参见 点击呼叫


功能:对目标坐席进行通讯控制操作

参数:TargetSliceNo:目标坐席序号

ControlType:控制操作功能代码,包括:监听、拦截、强插……


功能:显示 / 隐藏座席操作台、控制台界面

参数:FormType:1坐席操作台

2坐席控制台

3等候来电与会议窗口

Showing:True /False 显示 / 隐藏


Agent

2.4 点击呼叫

DoAction 呼叫外线的参数定义描述如下:


ActIDiParamsParam
73座席振铃或接听来电时产生
TTYPE来电类型 对方电话 | 主叫号码

例如在进行客户回访、电话营销时,在业务界面上点击客户姓名自动发起呼叫,只需要用一行代码就可以实现:


AgentX . DoAction ( 7, 3, TelNo )

三、JS 对象方式应用开发

3.1 联傲座席管理系统(CAMS)

CAMS

(CAMS界面示例)

  • CAMS 是在 iCall 座席上实现的 B / S 框架,在 IE 兼容浏览器中运行。
  • CAMS 全面整合了系统管理、座席通讯、系统监控、传真收发、短信与邮件收发、统计分析、辅助工具等所有功能。
  • CAMS 还整合了通用型标准版座席业务软件,包括通用 CRM、营销管理、服务派工管理以及行业版座席业务软件,用户可以根据自己的需要选择一款。
  • CAMS 提供 JavaSript(JS) 座席对象开发接口,用户可以方便地开发定制的座席业务管理软件,通过 CAMS 应用配置工具将开发的业务嵌入 CAMS 界面,实现无缝集成。

3.2 iCall 座席对象应用开发简介

iCallAgentX 是 CAMS 内部封装的座席对象,该对象可接收 iCall 服务器消息以及向服务器下发操作指令,同时该对象还提供语音、短信、传真等融合通讯的操作和管理功能。


iCall OCX

( CAMS 与定制业务关系图)

以下是一段 JavaScript 代码示范如何访问座席对象,如何绑定事件和进行通讯操作。


var Js_Demo = {

iCallAgent: null,

init: function() {

this.iCallAgent = window.top.iCallAgentX; / / 取得坐席对象

// 绑定 OnRing 事件

this.iCallAgent.bind(this.iCallAgent.Constant.Event.Ring, this.event.onRing, this);

},

uninit: function() {

// 解除 OnRing 事件的绑定

this.iCallAgent.unbind(this.iCallAgent.Constant.Event.Ring, this.event.onRing);

},

event: {

onRing: function(e, sliceNo, iParam, sParam) {

Alert ( ‘ 座席来电,标记字符串 : ’ + sParam);

}

},

call : function () {

// 按钮等 Click方法可以触发 onClick=” Js_Demo. Call();”

// 以下操作呼叫外线,号码为83366857。参数详见doAction方法介绍

this.iCallAgentX.doAction(7,3, ‘83366857’);

}

};

< body onload = "Js_Demo.init()" onunload = "Js_Demo.uninit()" / body >

3.3 来电弹屏

根据来电号码自动弹屏。弹屏信息包括:客户资料信息、历史服务信息、交易信息等等,历史记录自动绑定当时的通话录音,方便用户在查阅历史记录的过程中实时回放当时的通话录音;

◆ 如何获取来电号码 ?

< 1 > 通过 iCallAgentX 的 onRing 事件(此事件有三个参数):


序号参数说 明
1SliceNo坐席序号;
2Iparam来电类型,0 : 内线,1 : 外线;
3sParam标记字符串,传递座席消息。标记字符串格式:( CallerID|… );

< 2 > 得到标记字符串,用正则表达式解析标记字符串,获取电话号码。

◆ 获取来电号码有什么用 ?

来电号码只是一个标记名,通过来电号码可以和客户的资料进行绑定然后写入数据库,当客户第二次来电的时候,就可以根据电话号码或(" 标记名")得到用户的详细资料和历史记录,从而有效的客户进行沟通,为客户进行更好的服务。

◆ 高级应用自定义标记字符串

iCall 的流程编辑器中设置标记名和标记值,通过正则表达式解析标记字符串获取值,进行二次应用开发。


DEMO 演示代码(JsCode):


var Js_Demo = {

// 声明 iCallAgentX 对象

iCallAgentX: null,

init: function() {

// 查找 iCallAgentX 对象并赋值

this.iCallAgentX = window.top.iCallAgentX;

if (this.iCallAgentX) {

// iCallAgentX.bind 绑定

this.iCallAgentX.bind(this.iCallAgentX.Constant.Event.Ring, this.event.onRing, this);

} else {

// alert (' 未绑定事件,无法联动呼叫中心! ' ) ;

}

},

uninit: function() {

if (this.iCallAgentX) {

// iCallAgentX.unbind 解除绑定

this.iCallAgentX.unbind(this.iCallAgentX.Constant.Event.Ring, this.event.onRing);

}

},

event: {

onRing: function(e, sliceNo, iParam, sParam) {

// onRing 事件

if (this.iCallAgentX.sliceNo() != sliceNo) {

// 判断是否是本机号码

return;

}

// 获得来电号码 telNo

var telNo = sParam.match(/[^CALLERID]{0,}CALLERID:(\d{0,})\|/i)[1];

document.getElementById("divTelno").innerText= telNo;

}

}

};

< body onload = "Js_Demo.init()" onunload = "Js_Demo.uninit()" / body >

3.4 点击呼叫

◆ 如何进行呼叫 ?

通过 iCallAgentX 的 doAction 方法实现内外线呼叫。(此方法有两个参数):


序号参数说 明
1呼叫类型0 : 内线,3 : 外线;
2呼叫号码工号、对方电话号码 | 主叫号码;

◆ iCall 提供的呼叫方式有那些 ?

自动外呼、预览外呼、预测外呼等。


DEMO 演示代码(JsCode):


var Js_Demo = {

// 声明 iCallAgentX 对象

iCallAgentX: null,

init: function() {

// 查找 iCallAgentX 对象并赋值

this.iCallAgentX = window.top.iCallAgentX;

if (this.iCallAgentX) {

// iCallAgentX.bind 绑定

this.iCallAgentX.bind(this.iCallAgentX.Constant.Event.AgentState, this.event.onState, this);

}

},

uninit: function() {

if (this.iCallAgentX) {

// iCallAgentX.unbind 解除绑定

this.iCallAgentX.unbind(this.iCallAgentX.Constant.Event.AgentState, this.event.onState);

}

},

event: {

onState: function( event, sliceNo, State) {

// onState 事件

if (this.iCallAgentX.sliceNo() != sliceNo) {

// 判断是否是本机号码

return;

}

var bit = this.iCallAgentX.getActionEnables()

// 设置按钮的状态

$("#call").attr("disabled", (bit & 128) != 128);

document.getElementById("txtState").value = this.iCallAgentX.Constant.StateMsg[State];

}

},

callOut: function() {

// callOut方法

if ($('#callOutNum').val() == '') {

alert( ' 请输入呼叫号码! ' );

} else {

// 进行呼叫,内线呼叫 0 ,外线呼叫 3

this.iCallAgentX.doAction(7, document.getElementById('nei').checked == true ? 0 : 3, $('#callOutNum').val());

}

}

};

< body onload = "Js_Demo.init()" onunload = "Js_Demo.uninit()" / body >

3.5 录音绑定

iCall 提供 iCallAgentX.js 框架,此框架封装了 OCX 控件的属性、方法。通过实列化 iCallAgentX 对象来调用、访问属性和方法从而方便的与坐席端进行互动。业务表单实现录音自动绑定,方便用户在查阅历史记录表单的过程中实时回放当时的通话录音;


DEMO 演示代码(JsCode):


var Js_Demo = {

// 声明 iCallAgentX 对象

iCallAgentX: null,

init: function() {

this.iCallAgentX = window.top.iCallAgentX;

if (this.iCallAgentX) {

this.iCallAgentX.bind(this.iCallAgentX.Constant.Event.Ring, this.event.onRing, this);

// Ring 事件和 onRing 事件进行绑定

this.iCallAgentX.bind(this.iCallAgentX.Constant.Event.Talk, this.event.onTalk, this);

}

this.event.onTalk();

},

uninit: function() {

if (this.iCallAgentX) {

// iCallAgentX.unbind 解除绑定

this.iCallAgentX.unbind(this.iCallAgentX.Constant.Event.Ring, this.event.onRing);

this.iCallAgentX.unbind(this.iCallAgentX.Constant.Event.Talk, this.event.onTalk);

}

},

event: {

onRing: function( e, sliceNo, iParam, sParam) {

if (this.iCallAgentX.sliceNo() != sliceNo) {

return;

}

// 获得来电号码 telNo

var telNo = sParam.match(/[^CALLERID]{0,}CALLERID:(\d{0,})\|/i)[1];

document.getElementById("txtCallNum").value = telNo;

},

onTalk: function( e, sliceNo, iParam, sParam) {

if (this.iCallAgentX.sliceNo() != sliceNo) {

return;

}

// todo:这里可以进行“录音绑定” vocId 录音 ID

var vocId = sParam.match(/[^VOCID]{0,}VOCID:(\d{1,})\|/i)[1];

document.getElementById("txtVocid").value = vocId;

}

}

};

< body onload = "Js_Demo.init()" onunload = "Js_Demo.uninit()" / body >

四、在IVR中与业务系统交互

iCall提供面向终端用户的流程编辑器( QFEitor ),用户无需编程,可方便快速自行定制呼叫流程。


呼叫中心系统流程编辑器

可任意设置流程层次。支持服务选择、语音查询、人工服务、转接座机或手机、留言、跳转;支持人工服务与自动服务互转;支持传真收发、TTS;支持工作休息或根据主被叫启用不同流程;支持自动外呼流程等。


我们提供大量标准化插件支持各种个性化服务和行业应用,插件通过 WebServic 或 TCP 与业务系统交互,业务开发商只需要将业务逻辑或数据写成 WebService 服务就可以,十分简单和快捷,很容易实现整合,实现诸如:会员认证、订单查询、缴费或积分查询、自动业务申请等任意功能。


业务开发商也可以自行开发插件,如需要自行开发插件,请联系联傲电讯技术支持。本文主要介绍部分常用插件的功能和应用。

五、满意度评估插件

可按评分制、评级制进行满意度评价;如果客户不满意可以直接转接人工投诉受理座席。评价结果可生成统计报告,方便对话务员的服务进行监控考核。


满意度评价1

(满意度插件的配置)

满意度评价2

(满意度插件中使用的提示音,可在线录制编辑)

应用方式:

< 应用 1 >

话务员和客户通话,话务员先挂机,自动引导客户进入服务评价流程。


满意度评价3

(通话后进行满意评价的流程实例)

< 应用 2 >

话务员在与客户通话过程中,利用转自动将客户主动引导进入服务评价流程。

< 应用 3 >

自动外呼进行满意度调查回访。

利用联傲自动外呼系统 ( iCall AutoTask ) 建立一个自动外呼任务,导入需要调查的客户清单号码。系统自动发起呼叫,客户接听后进入满意度评价流程,自动收集客户的满意度评价数据。


满意度评价4

(自动外呼进行满意度评价的流程实例)

满意度调查结果可以分类统计分析:


满意度评价5

(满意度评价统计图表)

满意度评价6

(满意度评价清单)

六、认证插件

根据输入的用户号和密码进行验证,可用于会员身份认证、产品认证、发票防伪认证等。


身份认证1

(插件配置)


可配置用户号属性、是否重播输入的用户号、是否验证密码等。


身份认证2
身份认证3

( WebService 服务配置 )


流程插件收集到客户输入的用户号、密码后,调用函数 CheckUser 进行验证。该函数是业务系统开发商实现的一个 WebService 服务。对于不同的应用 UserID 可以是会员卡号、产品编码、发票代码等。

经过认证的客户如果转接人工服务,座席端在 OnRing 事件中可以解析出客户输入的用户号。


function CheckUser(const UserID, PSW: WideString):Boolean; stdcall;


身份认证4

(认证插件的流程配置实例)

七、部分插件清单

联傲公司提供大量标准应用插件,供用户直接选用。


通用类插件
通话满意度评估支持评分制、评级值设置,通话后提示客户按键进行满意度评估,对评估过程统计分析。
来电过滤根据来电号码判别自动判别是否为黑名单、VIP、会员等,以便提供不同的流程处理或服务。
来电区域判别根据来电号码自动判别来电区域,以便根据来电区域进行分配处理。
认证服务根据输入的用户号和密码进行验证,可用于会员身份认证、产品认证、发票防伪认证等。
称谓服务根据来电号码或输入的代码从客户资料中取得来电人的姓名、职位等,并以语音播报问候。例如,客户来电系统应答首先播放:“李总,下午好!”。
智能路由根据来电号码或被叫号码自动进行路由,将来电自动分配到营销系统设置的业务员主管人员或业务组。
水电气等公共事业类常用插件
自动查表自动查询当(某)月用水电气的量、金额等。
自动抄表自动输入当月用水电气的量,无需工作人员上门抄表。
物流类常用插件
自动查单输入运单号,自动查询该运单的收发货状态或GSP实时追踪返回的信息,然后以语音播报。
自动下单常客户来电自助下单,系统自动通知有关人员上门揽货。
金融服务(卡业务)类常用插件
卡号验证输入卡号和密码进行验证。
余额查询自动查询账户(卡)余额。
交易清单查询自动查询当天、历史、最近交易清单,支持多币种语音播报。
服务鉴权通话时话务员将客户转入IVR,有客户输入密码进行身份认证,认证后回转原话务员,如果认证正确话务员可以为客户提供授权的服务,否则话务员不能查看客户的私密信息。
修改密码自助修改卡或账户密码。
电话挂失自助进行电话挂失。
电话营销服务外包类常用插件
服务自主确认电信、保险、以及SP进行电话业务推广时,由客户自主按键确认接受新业务,客户按键和通话录音合并保存。
政府服务
查询信访处理结果输入身份证号,自动查询该市民有无信访记录,如果有则返回信访处理结果的批示内容,系统将处理结果通过TTS自动转化为语音播报。

回到顶部