亞馬遜 amazon connect(呼叫中心)

来源:https://www.cnblogs.com/huoxiao/archive/2019/03/02/10460255.html
-Advertisement-
Play Games

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

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基本思路 聖杯佈局分為3段:上、中、下。 中段被分為:左、中、右3塊。 1:採用flex佈局時,先把彈性容器主軸設置為垂直方向(flex-direction:column) 2:上、中、下3塊彈性項目設置均勻拉伸(flex:1)或固定上、下兩端大小,讓中間自動拉伸。註意:flex:拉伸是方向為主軸方 ...
  • 1:創建一個彈性容器(display:flex) 2:構建2個或3個彈性項目. 3:把彈性項目設置為居中對齊.(align-items:center) 4:改變input自身對齊方式,把它設置為拉伸以適應容器(align-self:stretch)。 實例: ...
  • 解決問題:大同大學教務處官網教師埠一進去就卡住了,點上面一行的菜單無響應 教師端下載方法: 鏈接:https://pan.baidu.com/s/10E-_0C7xVcKvVIyWxWHEVw 提取碼:e1ik 學生端下載方法: 鏈接:https://pan.baidu.com/s/1MMmAVd ...
  • 繼承 記錄一下 javascript 的各種繼承方式,個人用得比較多的還是原型鏈繼承和 ES6 的 extends。 原型鏈繼承 缺點: 在創建 Child 的實例時,無法向 Parents 傳參 父類裡面的引用類型被共用,個例修改導致所有實例都被修改 借用構造函數 為瞭解決上面的問題 ,經典繼承方 ...
  • 作為一枚前段,我們知道對象類型在賦值的過程中其實是複製了地址,從而會導致改變了一方其他也都被改變的情況。通常在開發中我們不希望出現這樣的問題,我們可以使用淺拷貝來解決這個情況。 淺拷貝 首先可以通過Object.assign來解決這個問題,很多人認為這個函數是用來深拷貝的。其實並不是,Object. ...
  • 背景 經測試,android手機中沒有這個問題, iphone手機中的Safari瀏覽器會出現這個問題。 例如: 解決辦法: 給鏈接加上 target="_parent", 如果iframe的嵌套比較深可以用 target="_top" ...
  • 有時直接打開本地html文件會使一些web操作無法進行,需要運行一個本地伺服器。 使用nodejs的 可以迅速地啟動一個本地靜態資源伺服器 ...
  • 前言 本次做後臺管理系統,採用的是 AntD 框架。涉及到圖片的上傳,用的是AntD的 "upload" 組件。 前端做文件上傳這個功能,是很有技術難度的。既然框架給我們提供好了,那就直接用唄。結果用的時候,發現 upload 組件的很多bug。下麵來列舉幾個。 備註:本文寫於2019 03 02, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...