| 两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 |
| zh:二次开发者指南:如何将第三方系统与astercc集成 [2012/06/04 03:29] – solo | zh:二次开发者指南:如何将第三方系统与astercc集成 [2013/03/07 05:35] (当前版本) – [内嵌式同域集成] solo |
|---|
| | ====== 将第三方系统与astercc集成 ====== |
| | |
| 将CRM或者OA系统与呼叫中心结合在一起,能够更好的发挥功效,提高系统竞争力 | 将CRM或者OA系统与呼叫中心结合在一起,能够更好的发挥功效,提高系统竞争力 |
| |
| |
| 目的 | 目的 |
| * 实现来电弹屏 | **坐席分机呼入或呼出时弹屏** |
| * 实现点击呼叫 | |
| |
| 对于B/S结构的系统asterCC支持内嵌式和独立式两种集成模式 | 从使用模式上来说,asterCC支持内嵌式和独立式两种集成模式 |
| |
| 内嵌式系统指坐席需要登陆asterCC系统, 而独立式则指坐席登陆第三方系统, 感受不到任何与asterCC相关的内容(( 管理员仍然需要登陆asterCC进行系统设置)) | 内嵌式系统指坐席需要登陆asterCC系统, 而独立式则指坐席登陆第三方系统, 感受不到任何与asterCC相关的内容(( 管理员仍然需要登陆asterCC进行系统设置)) |
| {{:zh:二次开发者指南:workplace.png?800|工作台}} | {{:zh:二次开发者指南:workplace.png?800|工作台}} |
| |
| 以内嵌式集成为例 | 对于B/S式的系统,从开发角度来说,分为跨域和同域两种 |
| |
| * 首先需要将系统的URL地址增加到asterCC系统中,以便系统知道调用的地址 | ===== 内嵌式同域集成 ===== |
| {{:zh:二次开发者指南:add_link.png?800|添加地址}} | 内嵌式同域指 |
| * asterCC系统支持不同应用弹屏,即根据不同的条件调用不同的链接,因此我们还需要添加一个应用,便于区分 | - 坐席通过asterCC界面登陆 |
| {{:zh:二次开发者指南:add_app.png?800|添加应用}} | - 起始页面和asterCC在同一个域名下,例如都在asterCC的服务器上 |
| * 在你的系统里找一个起始页面(即默认坐席将打开这个页面),然后在页面中添加接受asterCC呼叫事件的代码 | |
| {{:zh:二次开发者指南:sample.png?800|}} | |
| |
| 增加的代码包括 | * 首先我们准备两个文件,分别为sample.html和popup.html(源码见底部),用于代表接受事件的页面和弹屏页面,并将文件上传到asterCC的服务器上,路径为/var/www/html/asterCC/app/webroot |
| - 定义变量,包括asterCC服务器地址,团队ID,当前坐席工号 | * 其次我们需要将sample.html设置为默认页面,这里我们借用外呼营销模块 |
| - 事件处理函数sonAccept | * 进入 [[zh:模块使用说明:呼叫中心高级管理:]] -> [[zh:模块使用说明:呼叫中心高级管理:链接管理]],添加一个链接,链接类型选择 拨号计划链接, 链接地址输入sample.html |
| | * 进入 [[zh:模块使用说明:外呼营销]] -> [[zh:模块使用说明:外呼营销:外呼营销任务]],添加一个外呼营销任务,工作链接选择sample.html |
| | * 进入呼入应用绑定,将该营销任务设定为默认呼入弹屏 |
| | * 进入坐席组管理,将该营销任务设定为默认呼出弹屏 |
| |
| 添加完毕后使用坐席登陆,当坐席电话振铃或者有其他呼叫动作产生时,sonAccept会被自动调用,并且将事件内容传递到msg变量中 | {{:zh:二次开发者指南:dev_link_url_add_cn.jpg?direct&680|}} |
| | {{:zh:二次开发者指南:dev_campaign_config_cn.jpg?direct&680|}} |
| | {{:zh:二次开发者指南:dev_app_bind_cn.jpg?direct&680|}} |
| | {{:zh:二次开发者指南:dev_agent_group_config_cn.jpg?direct&680|}} |
| |
| msg变量内容如下 | * 使用坐席登陆,使用软电话外呼,获得弹屏 |
| | * 可以看到新弹出的页面通过url获取到了参数 |
| | {{:zh:二次开发者指南:dev_agent_portal_cn.jpg?direct&680|}} |
| |
| calleridnum=041139735857&didnumber=8008008&activenum=041139735855&source=AGENT&event=ringing&uniqueid=78969&sessionid=efeb7b374a3408b0d0954f30a1504d83&eventTime=2010-01-01 08:21:58&AgentTeamId=20&modeltype=Campaign&model_id=10&AgentGroupId=100&calltype=dialout&channel=Local/015967121144@hosted-dialout-408a;1&from=dialout& | {{:zh:二次开发者指南:dev_agent_portal_popup_cn.jpg?direct&680|}} |
| |
| 通过解析msg变量,系统可以获得各种数据,从而做出相应的反应,例如在本页利用ajax显示内容,或者弹出新的标签调用其他页面 | sample.html |
| | <code> |
| | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| | <html> |
| | <head> |
| | <title> asterCC development sample (local domain)</title> |
| | <meta name="Author" content=""> |
| | <meta name="Keywords" content=""> |
| | <meta name="Description" content=""> |
| | <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
| | <script type="text/javascript" src="/js/jquery/jquery-1.4.2.min.js"></script> |
| | <script type="text/javascript"> |
| | <!-- |
| | var tabflag; |
| | function sonAccept(msgStr){ |
| | var eventAll = msgStr.split('&'); |
| | var aryEvent = new Array(); |
| | for(i=0;i<eventAll.length;i++) { |
| | var tmpstr = eventAll[i].split('='); |
| | eval("aryEvent['"+tmpstr[0]+"'] = '"+tmpstr[1]+"';"); |
| | } |
| | // only popup when event is agent ring |
| | if(aryEvent['source'] == 'AGENT' && aryEvent['event'] == 'ringing'){ |
| | $('#ringnum').attr('value',aryEvent['calleridnum']); |
| | var ringtypeval = 2; |
| | if(aryEvent['calltype'] == 'dialout'){ |
| | ringtypeval = 1; |
| | } |
| | $('#ringtype').attr('value',ringtypeval); |
| | var popurl = $('#popurl').val()+'?phone='+aryEvent['calleridnum']+'&type='+ringtypeval; |
| | tabflag = "uc"+aryEvent['calleridnum']+((new Date()).getTime()); |
| | // call the main function to popup tab with the url |
| | window.top.addTab(tabflag,popurl,aryEvent['calleridnum'],"yes"); |
| | }else{ |
| | window.top.showDiv('gid'+tabflag); |
| | } |
| | } |
| | $().ready(function(){ |
| | $('#clickpop').click(function(){ |
| | var url = $('#popurl').val()+'?phone='+$('#ringnum').val()+'&type='+$('#ringtype').val();//?phone=13585306891&type=2 |
| | window.top.addTab("uc"+$('#ringnum').val()+((new Date()).getTime()),url,$('#ringnum').val(),"yes"); |
| | }); |
| |
| 以弹出新标签显示客户信息为例, 代码如下 | var str = self.location.href; |
| | str = str.replace(/sample\.html/,""); |
| | document.getElementById("popurl").value= str + 'popup.html'; |
| |
| | }); |
| | //--> |
| | </script> |
| | </head> |
| | |
| | <body> |
| | <div style="margin:10px 10px;"> |
| | Popup url: <input type="text" value="" id="popurl" style="width:100%;"> |
| | <p /> |
| | Caller ID: <input type="text" value="18888888888" id="ringnum" style="width:100%;"> |
| | <p /> |
| | Type(1 inbound||2 outbound):<input type="text" value="2" id="ringtype" style="width:100%;"> |
| | <p /> |
| | <input type="button" value="Click Popup" id="clickpop"> |
| | </div> |
| | </body> |
| | </html> |
| | </code> |
| | popup.html |
| <code> | <code> |
| function sonAccept(msg){ | |
| } | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> |
| | <html> |
| | <head> |
| | <title> popup page </title> |
| | <meta name="Author" content=""> |
| | <meta name="Keywords" content=""> |
| | <meta name="Description" content=""> |
| | </head> |
| | |
| | <body> |
| | <br/> |
| | <br/> |
| | <br/> |
| | <br/> |
| | <br/> |
| | hello world, my url is |
| | <script type="text/javascript"> |
| | <!-- |
| | var url = self.location.href; |
| | document.write(url); |
| | //--> |
| | </script> |
| | |
| | </body> |
| | </html> |
| </code> | </code> |