亚马逊 amazon connect(呼叫中心)
程序员文章站
2022-05-27 22:13:43
背景 公司为提高客服部门沟通效率对接电话呼叫中心,调研后选择了亚马逊的Amazon Connect服务,因为是国外业务没有选择用阿里云,怕有坑。 Amazon Connect后台 需要在后台创建“联系流”,也就是用户接通电话后我们提供的一系列功能选项,比如开始放一段欢迎语音,然后提示用户选择1,2, ......
背景
公司为提高客服部门沟通效率对接电话呼叫中心,调研后选择了亚马逊的amazon connect服务,因为是国外业务没有选择用阿里云,怕有坑。
amazon connect后台
需要在后台创建“联系流”,也就是用户接通电话后我们提供的一系列功能选项,比如开始放一段欢迎语音,然后提示用户选择1,2,4,*,#等,每一个选项可能又对应了一条“联系流”,整体的功能就是围绕着“联系流”来进行的,用户输入的一些值可以通过 contact.getattributes() 拿到。
前端对接
需要引入 amazon-connect-1.3.js, 这是一个开源项目(https://github.com/aws/amazon-connect-streams)所有前端接打电话的界面功能都是基于这个库来完成的。
connect.contact(): 主要获取联系人信息(姓名,电话等)还有联系人输入的一些值。
connect.agent(): 主要获取电话设备的一些状态信息。
html:
1 <!-- 电话图标,用来唤出电话界面 --> 2 <div id="amazonconnectcontainer"> 3 <img src="/public/img/amazon_tel.jpg" alt=""> 4 </div> 5 <!-- 生成iframe的地方,可以放在网页任意位置 --> 6 <div id="containerdiv" title="amazon connect"> 7 <!--amazon ccp is hiding in here--> 8 </div>
css:
1 <style> 2 .containerdiv iframe { 3 display: none; 4 } 5 </style>
js:
1 <script type="text/javascript" src="/public/lib/connect-streams.js"></script> 2 <script type="text/javascript"> 3 $(document).ready(function() { 4 $("#amazonconnectcontainer").click(function(event) { 5 event.preventdefault(); 6 $("#containerdiv iframe").remove(); 7 if(typeof connect != "undefined" && !connect.core.initialized){ 8 window.mycpp = window.mycpp || {}; 9 //replace with the ccp url for your amazon connect instance 10 var ccpurl = "https://xxxxxx.awsapps.com/connect/ccp#/"; 11 connect.core.initccp(containerdiv, { 12 ccpurl: ccpurl, 13 loginpopup: false, 14 softphone: { 15 allowframedsoftphone: true, 16 disableringtone: true, 17 ringtoneurl: true 18 } 19 }); 20 connect.contact(subscribetocontactevents); 21 connect.agent(subscribetoagentevents); 22 } 23 var awidth = 320; //窗口宽度 24 var aheight = 465; //窗口高度 25 var atop = (screen.availheight - aheight) / 2; //窗口顶部位置 26 var aleft = (screen.availwidth - awidth) / 2; //窗口放* 27 28 window.open (ccpurl, 'newwindow', 'height=465, width=320, top='+atop+', left='+aleft+', toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no'); 29 }); 30 31 function subscribetocontactevents(contact){ 32 window.mycpp.contact = contact; 33 loginfomsg("subscribing to events for contact"); 34 if (contact.getactiveinitialconnection() 35 && contact.getactiveinitialconnection().getendpoint()) { 36 loginfomsg("new contact is from " + contact.getactiveinitialconnection().getendpoint().phonenumber); // 用户电话 37 } else { 38 loginfomsg("this is an existing contact for this agent"); 39 } 40 loginfomsg("contact is from queue " + contact.getqueue().name); 41 loginfomsg("contact attributes are " + json.stringify(contact.getattributes())); // 用户属性 42 } 43 function subscribetoagentevents(agent) { 44 window.mycpp.agent = agent; 45 agentgreetingdiv.innerhtml = '<h3>hi ' + agent.getname() + '!</h3>'; 46 loginfomsg("subscribing to events for agent " + agent.getname()); 47 loginfomsg("agent is currently in status of " + agent.getstatus().name); 48 // 获取电话状态名称 49 displayagentstatus(agent.getstatus().name); 50 // agent.onrefresh(handleagentrefresh); 51 // agent.onroutable(handleagentroutable); 52 // agent.onnotroutable(handleagentnotroutable); 53 // agent.onoffline(handleagentoffline); 54 } 55 function loginfomsg(msg) { 56 connect.getlog().info(msg); 57 } 58 }); 59 </script>
上一篇: Hyper-v虚拟机联网配置
下一篇: 爬虫之数据解析