亞馬遜 amazon connect(呼叫中心)


背景

公司為提高客服部門溝通效率對接電話呼叫中心,調研后選擇了亞馬遜的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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM