iCall 是完善的产品化呼叫中心系统,同时也是一个开放的智能通讯平台,iCall 提供开发接口,可以方便地进行二次开发,快速实现与业务系统无缝集成。
利用 iCall 提供的开发接口可以很容易实现呼叫中心与 CRM、ERP、以及行业应用系统集成,或进行业务定制。应用开发商无需了解或关心任何通讯相关的专业技术,只需专注行业业务应用,可快速整合具有完备的专业呼叫中心功能的整体解决方案。
( iCall 呼叫中心系统以及业务集成网络架构 )
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 框架,实现定制业务与联傲座席框架的无缝集成。
iCall 可选配大量流程插件,实现各种行业相关的应用,插件通过 WebService 方式与业务系统交互。
业务开发商只需要将业务逻辑或业务数据封装成 WebService 服务就可以很方便实现诸如来电自动验证会员身份、自动查询运单状态、自助查询余额等应用。
本节只介绍 iCall 座席控件的基本概念和常用的应用开发场景,有关详细文档或更高级应用集成请咨询联傲电讯。
iCallAgent.ocx 座席控件支持 iCall 所有种类座席(标准座席、CSAP 软座席、SIP 座席),全面封装了 iCall 座席的功能,业务层可通过控件的事件、方法、属性实现对座席的通讯操作、响应来电消息等。
座席应用开发的一般步骤是:
< 1 > 登录控件并启动座席。
iCall 座席需要登录验证后才可以使用。iCall 呼叫中心中话务员用工号、密码进行验证,在 CRM、ERP 或定制业务中,应用系统有自身的用户登录验证体系,iCall 座席控件支持统一登录。
iCall 座席控件提供以下两个登录相关的方法:
功能:iCall座席登录。
业务系统调用此方法,系统打开iCall座席登录界面,如果登录成功返回话务员输入的工号.
参数:AgentID:话务员工号
IsAdmin:登录用户是否为系统管理员
返回:True登录成功.只有登录成功 AgentID , IsAdmin 才有效.
False登录失败
功能:设置登录信息。表示工号AgentID已经经过验证,允许直接登录。
参数:AgentID:话务员工号
IsAdmin:是否系统管理员。有些APP只有系统管理员才有权使用。
假设话务员工号是 ‘ 100 ’,在业务系统中的登录的用户名为 ‘ 张三 ’。业务系统需要建立维护一个“用户名 – 工号”对照表。
用户输入‘张三’在业务系统登录界面进行登录验证,验证成功后,业务系统从对照表取得张三的工号是 100,然后调用 SetLoginInfo 方法通知 iCall 工号 100 已经业务系统验证,允许登录座席系统。
调用 Login 方法,系统打开 iCall 座席登录界面:
登录验证成功后,业务系统根据返回的话务员工号从对照表取得对应的用户名,然后设置业务系统的用户名。
登录成功后调用 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;
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 ,将会员号传递到座席端。
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 显示 / 隐藏
DoAction 呼叫外线的参数定义描述如下:
ActID | iParam | sParam |
7 | 3 | 座席振铃或接听来电时产生 |
TTYPE | 来电类型 | 对方电话 | 主叫号码 |
例如在进行客户回访、电话营销时,在业务界面上点击客户姓名自动发起呼叫,只需要用一行代码就可以实现:
AgentX . DoAction ( 7, 3, TelNo )
(CAMS界面示例)
iCallAgentX 是 CAMS 内部封装的座席对象,该对象可接收 iCall 服务器消息以及向服务器下发操作指令,同时该对象还提供语音、短信、传真等融合通讯的操作和管理功能。
( 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 >
根据来电号码自动弹屏。弹屏信息包括:客户资料信息、历史服务信息、交易信息等等,历史记录自动绑定当时的通话录音,方便用户在查阅历史记录的过程中实时回放当时的通话录音;
< 1 > 通过 iCallAgentX 的 onRing 事件(此事件有三个参数):
序号 | 参数 | 说 明 |
1 | SliceNo | 坐席序号; |
2 | Iparam | 来电类型,0 : 内线,1 : 外线; |
3 | sParam | 标记字符串,传递座席消息。标记字符串格式:( 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 >
通过 iCallAgentX 的 doAction 方法实现内外线呼叫。(此方法有两个参数):
序号 | 参数 | 说 明 |
1 | 呼叫类型 | 0 : 内线,3 : 外线; |
2 | 呼叫号码 | 工号、对方电话号码 | 主叫号码; |
自动外呼、预览外呼、预测外呼等。
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 >
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 >
iCall提供面向终端用户的流程编辑器( QFEitor ),用户无需编程,可方便快速自行定制呼叫流程。
可任意设置流程层次。支持服务选择、语音查询、人工服务、转接座机或手机、留言、跳转;支持人工服务与自动服务互转;支持传真收发、TTS;支持工作休息或根据主被叫启用不同流程;支持自动外呼流程等。
我们提供大量标准化插件支持各种个性化服务和行业应用,插件通过 WebServic 或 TCP 与业务系统交互,业务开发商只需要将业务逻辑或数据写成 WebService 服务就可以,十分简单和快捷,很容易实现整合,实现诸如:会员认证、订单查询、缴费或积分查询、自动业务申请等任意功能。
业务开发商也可以自行开发插件,如需要自行开发插件,请联系联傲电讯技术支持。本文主要介绍部分常用插件的功能和应用。
可按评分制、评级制进行满意度评价;如果客户不满意可以直接转接人工投诉受理座席。评价结果可生成统计报告,方便对话务员的服务进行监控考核。
(满意度插件的配置)
(满意度插件中使用的提示音,可在线录制编辑)
应用方式:
话务员和客户通话,话务员先挂机,自动引导客户进入服务评价流程。
(通话后进行满意评价的流程实例)
话务员在与客户通话过程中,利用转自动将客户主动引导进入服务评价流程。
自动外呼进行满意度调查回访。
利用联傲自动外呼系统 ( iCall AutoTask ) 建立一个自动外呼任务,导入需要调查的客户清单号码。系统自动发起呼叫,客户接听后进入满意度评价流程,自动收集客户的满意度评价数据。
(自动外呼进行满意度评价的流程实例)
满意度调查结果可以分类统计分析:
(满意度评价统计图表)
(满意度评价清单)
根据输入的用户号和密码进行验证,可用于会员身份认证、产品认证、发票防伪认证等。
(插件配置)
可配置用户号属性、是否重播输入的用户号、是否验证密码等。
( WebService 服务配置 )
流程插件收集到客户输入的用户号、密码后,调用函数 CheckUser 进行验证。该函数是业务系统开发商实现的一个 WebService 服务。对于不同的应用 UserID 可以是会员卡号、产品编码、发票代码等。
经过认证的客户如果转接人工服务,座席端在 OnRing 事件中可以解析出客户输入的用户号。
function CheckUser(const UserID, PSW: WideString):Boolean; stdcall;
(认证插件的流程配置实例)
联傲公司提供大量标准应用插件,供用户直接选用。
通用类插件 | |
---|---|
通话满意度评估 | 支持评分制、评级值设置,通话后提示客户按键进行满意度评估,对评估过程统计分析。 |
来电过滤 | 根据来电号码判别自动判别是否为黑名单、VIP、会员等,以便提供不同的流程处理或服务。 |
来电区域判别 | 根据来电号码自动判别来电区域,以便根据来电区域进行分配处理。 |
认证服务 | 根据输入的用户号和密码进行验证,可用于会员身份认证、产品认证、发票防伪认证等。 |
称谓服务 | 根据来电号码或输入的代码从客户资料中取得来电人的姓名、职位等,并以语音播报问候。例如,客户来电系统应答首先播放:“李总,下午好!”。 |
智能路由 | 根据来电号码或被叫号码自动进行路由,将来电自动分配到营销系统设置的业务员主管人员或业务组。 | 水电气等公共事业类常用插件 |
自动查表 | 自动查询当(某)月用水电气的量、金额等。 |
自动抄表 | 自动输入当月用水电气的量,无需工作人员上门抄表。 | 物流类常用插件 |
自动查单 | 输入运单号,自动查询该运单的收发货状态或GSP实时追踪返回的信息,然后以语音播报。 |
自动下单 | 常客户来电自助下单,系统自动通知有关人员上门揽货。 | 金融服务(卡业务)类常用插件 |
卡号验证 | 输入卡号和密码进行验证。 |
余额查询 | 自动查询账户(卡)余额。 |
交易清单查询 | 自动查询当天、历史、最近交易清单,支持多币种语音播报。 |
服务鉴权 | 通话时话务员将客户转入IVR,有客户输入密码进行身份认证,认证后回转原话务员,如果认证正确话务员可以为客户提供授权的服务,否则话务员不能查看客户的私密信息。 |
修改密码 | 自助修改卡或账户密码。 |
电话挂失 | 自助进行电话挂失。 | 电话营销服务外包类常用插件 |
服务自主确认 | 电信、保险、以及SP进行电话业务推广时,由客户自主按键确认接受新业务,客户按键和通话录音合并保存。 | 政府服务 |
查询信访处理结果 | 输入身份证号,自动查询该市民有无信访记录,如果有则返回信访处理结果的批示内容,系统将处理结果通过TTS自动转化为语音播报。 |