<small id="aimcq"></small>
  • # 呼叫中心JS組件

    測試地址

    # 更新日志

    版本 時間 說明
    -- -- --
    V1.3 2020-11-09 更新內容:解決通話中無法進行多次轉接問題。
    V1.2 2020-10-15 JS組件增加查詢技能組列表及技能組在線的坐席列表方法。參見4.18、4.19
    V1.1 2020-09-17 初始版本,支持坐席的呼入/呼出,以及回調消息。

    # 1.背景介紹

    第三方對接PAAS希望能夠提供web端JS的對接方式,減少對接工作量。針對PAAS接口進行二次封裝,主要對坐席相關操作提供js插件對接能力,通過websocket與后臺服務通訊

    # 2.提供服務

    • 獲取token
    • 坐席上班/下班
    • 坐席外呼
    • 坐席掛斷
    • 坐席接聽
    • 修改坐席狀態
    • 查詢坐席狀態
    • 轉接坐席
    • 轉接坐席確認
    • 轉接第三方
    • 轉接技能組
    • 呼叫保持
    • 呼叫取消
    • 查詢呼叫技能組及技能組空閑坐席數量
    • 查詢呼叫坐席

    # 3.對接方式

    調用js插件提供的方法通過回調函數獲取相應操作的結果,通過websocket獲取網絡電話推送消息。

    流程

      1. 引用智齒指定的js文件。
      1. 調用指定js文件提供的方法并傳遞約定的參數。
      1. 如果使用登陸方式為網絡電話 ,則頁面需添加標簽如下,以保證網絡電話正常使用
    <audio style="visibility:hidden;" id="webcam" autoplay="autoplay" src=""></audio>
    
      1. 本地開發需配置nginx代理,下面是一個配置的例子
    
    # 測試本地NGINX代理
    location /comm {
      proxy_pass http://www.gene-tech.cn;
      proxy_set_header Host 'www.gene-tech.cn';
    }
    
    

    注意:js組件對接不支持同一個賬號同時登陸兩個窗口

    # 4.組件對接

    引用智齒提供js插件,調用相應的方法,與后臺服務通過websocket建立連接,獲取信息。需按照示例順序分別引用四個js文件 (如您項目中已經引用了jquery以及jquery.json-2.4以上的版本,則無需引用這兩個文件)

    示例如下:
    <script src="http://www.gene-tech.cn/paas/component/common/jquery.min.js"></script>
    <script src="http://www.gene-tech.cn/paas/component/common/jquery.json-2.4.min.js"></script>
    <script src="http://www.gene-tech.cn/paas/component/common/verto-min.js"></script>
    <script src="http://www.gene-tech.cn/paas/component/plugin/call_1.3.js"></script>
    
    
    

    # 4.1 初始化js插件

    當引用智齒提供的網絡電話插件后,window對象下會有zcVertoServ對象,所有封裝的方法都在此對象內。

    初始化方法示例:
    var params = {
            "client_id": $("#appId").val(),
            "client_secret": $("#appToken").val(),
            "companyId": $("#companyId").val(),
            "appId": $("#appId").val(),
            "agentId": $("#agentId").val(),
            "groupId" : $("#groupId").val(),
            "voipAccount": $("#voip").val(),
            "callWay": $('.js-login-way option:selected').val()
        }
    	window.zcVertoServ.ininServ(params,statusFunc);
    
      參數說明:
        client_id: 應用id節點,即appId;
        client_secret :應用密鑰;
        companyId:公司id;
        appId:目前appId 與client_id相同 ;
        agentId:當前坐席id;
        groupId:當前坐席所在技能組id(非必填);
        voipAccount: 當前坐席分配的sip賬號(非必填);
        callWay: 當前坐席登陸方式 1-網絡電話;2-sip話機;3-手機
    
      上述參數存放于一個對象內 通過調用網絡電話插件初始化方法進行傳遞,初始化方法接收兩個參數一個是上述params參數,另一個為websocket推送消息的回調函數statusFunc,通話過程中可以通過此回調函數內的消息進行當前通話信息的獲取
      例:
        var statusFunc = function (res){
        // websocket狀態變化回調函數  次函數需初始化時傳入
        currentCall = JSON.parse(res.data);
    }
    
    
    

    # 4.2 獲取token

    云通信平臺采用oauth2的client形式的鑒權,開發者發起請求時需要在請求url中帶上access_token,如無特殊要求,一般生成的access_token失效時間為1天,到期之后需要重新申請access_token,請您做好token的保存,如果因為特殊需要需要生成永久token的需要聯系技術人員為您配置生成永久token(為了您的接口安全不建議這么做),使用時預先進行token獲取

    示例如下:
    //獲取token方法:
    var getToken = function () {
        window.zcVertoServ.getToken(displayResult);
    }
    
    displayResult為獲取token的回調函數您可以自行定義,用于接收操作結果以及token值;
    響應示例:
    {
        "access_token": "2d0866f9-c2a1-49d6-9838-595e179d5ef6",
        "token_type": "bearer",
        "expires_in": 59,
        "scope": "select"
    }
    
    
    

    # 4.3 坐席上班/下班

    說明:坐席在指定技能組上班,上班后狀態變為空閑才可接聽電話。已登錄坐席 再次調用上班接口。

    示例如下:
    //坐席上班(上班后為空閑狀態)
    var agentOnWork = function (agentState) {
        if(agentState == '0'){
            var data = {
                "displayNumber": $(".js-displayNum").val(),
                "isRecordStereo": $(".js-isRecordStereo").val(),
                "agentState": agentState
            }
        }else {
            var data = {
                "displayNumber": $(".js-displayNum").val(),
                "isRecordStereo": $(".js-isRecordStereo").val()
            }
        }
    } 
    
    //坐席下班
    var loginout = function () {
        window.zcVertoServ.agentLoginout(displayResult);
    }
    
    參數說明:
    displayNumber:坐席手機登錄時,回呼坐席手機的外顯號碼,以及坐席轉接或咨詢第三方時,呼叫第三方號碼的外顯號碼;
    isRecordStereo:是否開啟雙聲道錄音-不填寫默認為false;
    agentState:坐席狀態,0-上班后置于忙碌,1-上班并置位空閑(默認情況),-1-離線,unknown-初始化沒有登陸過的坐席,需要到智齒后臺登陸或調用上班方法;如不傳遞則默認為上班后置于空閑,2-振鈴中,3-通話中,99-異常;
    通過調用window.zcVertoServ.agentLogin方法進行傳遞,此方法接收的第二個參數cbkTem.displayResult為上班/下班操作的回調函數,您需根據上班或者下班進行分開定義回調進行傳遞。(坐席下班方法中只需接收一個回調函數參數即可,無需data參數)
    
    回調函數收到響應示例:
    {
        "retCode": "000000",
        "retMsg": "成功"
    }
    
    

    # 4.4 坐席外呼

    說明:坐席人員主動發起外呼。坐席狀態只有在空閑、忙碌狀態下才能進行外呼。

    示例如下:
    //坐席外呼
    var callOut = function () {
        var data = {
            "displayNumber": $(".js-callDisplayNumber").val(),
            "destinationNumber": $(".js-destinationNumber").val(),
    "params": "test" // 非必填,參數會在推送的通話記錄中顯示
        }
        window.zcVertoServ.agentCallOut(data,cbkTem.displayResult);
    }
    
    
    參數說明:
    displayNumber:外呼顯示的主叫號碼;
    destinationNumber: 被叫號碼
    params: 外呼參數,此字段非必填,不限制格式,此參數會在推送通話記錄時在接口中返回您傳入的數據
    該方法返回值包含當前通話信息的主叫號碼、被叫號碼、通話 id、外呼結果;
    當前版本將通話信息的存儲放在statusFunc狀態回調函數中,如果statusFunc函數中接收到帶有callId的消息,則進行存儲即可(詳細見下例):
    
    var statusFunc = function(res){
      //websocket狀態變化回調函數  此函數需初始化時傳入
      var str = $('.js-text-info')html();
      var tem={};
      if(res && res.data){
        tem = JSON.parse(res.data);
        if(tem.msgType){
          switch(tem.msgType){
            case 'onLine':  
            case 'offLine': //離線
            case 'repeat':  //被擠下線
            case 'StopService':
            case 'AgentHangUp':
            case 'AgentStateIdle':
            default:
              if(!!tem.callId){
                currentCall=tem;
              }
            break;
          }
          $('.js-text-info').html(str+'</br>'+res.data+'</br>');
        }
      }
    }
    
    響響應示例:
    {
      "callId": “cb266f9c-ff7b-41d8-83cb-e5da321e9b1c”, 
      "retCode": "000000",
      	"retMsg": "成功"
    }
    
    
    

    # 4.5 坐席掛斷

    說明:坐席主動掛斷當前通話。

    示例如下:
    //坐席掛斷
    var agentHangUp = function () {
    	var data = {
    	    "callId": currentCall.callId
    	}
        window.zcVertoServ.agentHangUp(data,displayResult);
    }
    參數說明:
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    
    displayResult為用于接收掛斷操作信息的回調函數,可自行定義
    
    響應示例:
    {
      "retCode": "000000",
      "retMsg": "成功"
    }
    
    
    

    # 4.6 坐席接聽(網絡電話方式接聽)

    說明:坐席接起通話,網絡電話方式需要手工接聽,sip話機或者手機模式無需調用接聽方法。

    
    示例如下:
    //坐席接聽
    var listen = function () {
    	// 接聽函數無需回調
    	window.zcVertoServ.agentListen();
    }
    
    此操作中無需接收任何參數。
    
    

    # 4.7 修改坐席狀態

    說明:修改當前坐席狀態,提供7種:忙碌、空閑、小休、培訓、會議、用餐、活動。

    示例如下:
    //坐席狀態修改
    var updateAgentState = function (agentState){
        var data = {
            "agentState": agentState
        }
        window.zcVertoServ.updateAgentState(data,displayResult);
    }
    參數說明:
    agentState: 0-上班后置于忙碌,1-上班并置位空閑(默認情況),-1-離線,unknown-初始化沒有登陸過的坐席,需要到智齒后臺登陸或調用上班方法;如不傳遞則默認為上班后置于空閑,2-振鈴中,3-通話中,114-小休,116-培訓,117-會議,118-用餐,119-活動,99-異常
    
    響應示例:
    {
        "item": {
            "agentId": "9f4efcdeb3774d71aecc85e39c93357c",
            "agentState": "1",
            "appId": "2571b1d01a294b779e4bb3ebcf075596",
            "companyId": "3bc6f5deb9b441388e3ea56dcfca8b8e"
        },
        "retCode": "000000",
        "retMsg": "success"
    }
    
    

    # 4.8 查詢坐席狀態

    說明:查詢坐席當前狀態。

    示例如下:
    //坐席狀態查詢
    var queryAgentState = function () {
        window.zcVertoServ.queryAgentState(displayResult);
    }
    
    參數說明:
    該方法只需接收一個回調函數,會將查詢結果返回給回調函數。
    
    響應示例:
    {
        "item": {
            "agentId": "9f4efcdeb3774d71aecc85e39c93357c",
            "agentState": "1",
            "appId": "2571b1d01a294b779e4bb3ebcf075596",
            "companyId": "3bc6f5deb9b441388e3ea56dcfca8b8e"
        },
        "retCode": "000000",
        "retMsg": "success"
    }
    
    
    

    # 4.9 轉接坐席

    說明:通話中坐席將用戶的呼叫轉接到另外一個坐席接聽。

    
    示例如下:
    //坐席轉接
    var agentTransfer = function () {
        var data = {
            "callId": currentCall.callId,
            "caller": currentCall.caller,
            "transferNumber": $(".js-transferNumber").val()
        }
        window.zcVertoServ.agentTransfer(data, displayResult);
    }
    參數說明:
    caller:為statusFunc回調函數中的返回的當前通話信息中的主叫號碼;
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    transferNumber: 轉到的坐席ID;
    
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    響應示例:
    {
      "retCode": "000000",
      "retMsg": "成功"
    }
    
    

    # 4.10 轉接坐席確認

    說明:通話中坐席將用戶的呼叫轉接到另外一個坐席時,需要另一坐席進行確認,與4.9轉接坐席配套使用。

    示例如下:
    //坐席轉接確認
    var agentTransferConfirm = function () {
        var data = {
            "callId": currentCall.callId,
            "caller": currentCall.caller
        }
        window.zcVertoServ.agentTransferConfirm(data, displayResult);
    }
    參數說明:
    caller:為statusFunc回調函數中的返回的當前通話信息中的主叫號碼;
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    響應示例:
    {
      "retCode": "000000",
      "retMsg": "成功"
    }
    

    # 4.11 取消轉接(發起轉接的坐席取消轉接)

    說明:通話中坐席將用戶的呼叫轉接到另外一個坐席時,主動發起轉接的坐席點擊取消轉接,與4.9轉接坐席配套使用。

    示例如下:
    //坐席轉接確認
    var agentConsultBack= function () {
        var data = {
            "callId": currentCall.callId
        }
        window.zcVertoServ.agentConsultBack(data, displayResult);
    }
    參數說明:
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    響應示例:
    {
      	callId:?"a3dc9166-e85f-43f1-b986-6eca8ef0face",
    result:?0,
    retCode:?"000000",
    retMsg:?"成功"
    }
    
    

    # 4.12 轉接掛斷(被轉接坐席拒絕接聽)

    說明:通話中坐席將用戶的呼叫轉接到另外一個坐席時,被轉接坐席進行拒接,與4.9轉接坐席配套使用。

    
    示例如下:
    //坐席轉接確認
    var rejectConsult= function () {
        var data = {
            "callId": currentCall.callId,
            "agentId": currentCall.adminAgentId
        }
        window.zcVertoServ.rejectConsult(data, displayResult);
    }
    參數說明:
    agentId:為statusFunc回調函數中的返回的當前通話信息中的轉接發起人的id;
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    
    響應示例:
    {
      	callId:?"a3dc9166-e85f-43f1-b986-6eca8ef0face",
    result:?0,
    retCode:?"000000",
    retMsg:?"成功"
    }
    

    # 4.13 轉接第三方

    說明:轉接第三方號碼,執行轉接后,坐席通話結束。

    
    示例如下:
    //坐席轉接第三方號碼
    var transferThirdNum = function () {
        var data = {
            "callId": currentCall.callId,
            "caller": currentCall.caller,
            "transferType": currentCall.direction|| 0,
            "transferNumber": $(".js-transferThirdNumber").val()
        }
        window.zcVertoServ.transferThirdNum(data, displayResult);
    }
    
    
    參數說明:
    caller:為statusFunc回調函數中的返回的當前通話信息中的主叫號碼;
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    transferNumber:第三方號碼;
    transferType:為statusFunc回調函數中的返回的當前通話屬于呼入還是呼出,如果沒有值則默認為0;
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    響應示例:
    {
    "callId":"74208a24-6a7e-4d2f-b55f-1da26b2d6037",
      "retCode": "000000",
      "retMsg": "成功"
    }
    
    

    # 4.14 轉接技能組

    說明:轉接節能組,轉接后,原有坐席通話結束。

    
    示例如下:
    //轉接節能組
    var transferGroup = function () {
        var data = {
            "callId": currentCall.callId,
            "caller": currentCall.caller,
            "transferType": currentCall.direction || 0,
            "groupId": $(".js-transferGroup").val(),
            "timeout": $(".js-transferGroupTime").val()
        }
        window.zcVertoServ.transferGroup(data, displayResult);
    
    參數說明:
    caller:為statusFunc回調函數中的返回的當前通話信息中的主叫號碼;
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    groupId:將要轉接的節能組id
    timeout:設置的超時時間;
    transferType:為statusFunc回調函數中的返回的當前通話屬于呼入還是呼出,如果沒有值則默認為0;
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    響應示例:
    {
    "callId":"6ac7768d-147f-4972-9d42-c4b35f5149fa",
      "retCode": "000000",
      "retMsg": "成功"
    }
    
    

    # 4.15 呼叫保持

    說明:通話時呼叫保持。

    
    示例如下:
    //保持呼叫
    var agentHold = function () {
        var data = {
            "callId": currentCall.callId,
            "caller": currentCall.caller,
            "direction": currentCall.direction || 0
        }
        window.zcVertoServ.agentHold(data, displayResult);
    }
    參數說明:
    caller:為statusFunc回調函數中的返回的當前通話信息中的主叫號碼;
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    direction:為statusFunc回調函數中的返回的當前通話屬于呼入還是呼出,如果沒有值則默認為0;
    
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    響應示例:
    {
    "callId": "8ee131d7-fcc0-4321-b7b1-ff37bff6a16f",
      "retCode": "000000",
      "retMsg": "成功",
    "timestamp": "20191028173641553"
    }
    
    

    # 4.16 取消保持

    說明:取消呼叫保持。

    
    示例如下:
    //取消保持呼叫
    var agentUnHold = function () {
        var data = {
            "callId": currentCall.callId,
            "caller": currentCall.caller,
            "direction": currentCall.direction || 0
        }
        window.zcVertoServ.agentUnHold(data, displayResult);
    }
    參數說明:
    caller:為statusFunc回調函數中的返回的當前通話信息中的主叫號碼;
    callId:為statusFunc回調函數中的返回的當前通話信息中的通話id;
    transferType:為statusFunc回調函數中的返回的當前通話屬于呼入還是呼出,如果沒有值則默認為0;
    
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    響應示例:
    {
      "retCode": "000000",
      "retMsg": "成功"
    }
    
    

    # 4.17 坐席狀態重置

    說明:坐席狀態重置。

    
    示例如下:
    //坐席狀態重置方法
    var resetStatus = function() {
        window.zcVertoServ.resetStatus(displayResult);
    };
    參數說明:
    displayResult為回調函數 用于接收回調信息,可自行定義
    
    響應示例:
    {
      "retCode": "000000",
      "retMsg": "成功"
    }
    
    

    # 4.18 查詢呼叫技能組及技能組空閑坐席數量

    說明:用于轉接前查詢呼叫技能組及技能組空閑坐席數量的相關信息。

    示例如下:
    var queryGroups = function (){
        window.zcVertoServ.queryGroups(displayResult);
    }
    參數說明:
    displayResult為回調函數 用于接收回調信息,需自行定義
    
    響應示例:
    {
         "retCode": "000000",
         "items": [
              {
                   "groupType": 2,
                   "typeName": "呼叫技能組",
                   "items": [
                        {
                             "groupName": "guyue1",
                             "groupType": "2",
                             "groupId": "ad2db7fa3fc1407c80e7544fd9479251_1",
                             "free": 0
                        },
                        {
                             "groupName": "guyue2",
                             "groupType": "2",
                             "groupId": "ad2db7fa3fc1407c80e7544fd9479251_6",
                             "free": 0
                        }
                   ]
              },
              {
                   "groupType": 3,
                   "typeName": "電銷技能組",
                   "items": [
                        {
                             "groupName": "guyu電銷",
                             "groupType": "3",
                             "groupId": "ad2db7fa3fc1407c80e7544fd9479251_2",
                             "free": 0
                        }
                   ]
              }
         ],
         "retMsg": "查詢成功"
    }
    

    參數說明

    屬性 類型 說明
    retCode String 請求狀態碼,取值000000(成功)
    retMsg String 請求狀態描述
    items String 本公司內所有類型技能組集合參數詳情(釋義見下方)

    本公司所有類型技能組集合參數詳情

    屬性 類型 說明
    items groupInfo 同一類型技能組集合(釋義見下方)
    groupType String 技能組類型,2:呼叫,3:電銷
    typeName String 技能組類型名稱

    同一類型技能組集合參數詳情

    屬性 類型 說明
    groupId String 技能組ID
    groupType String 技能組類型,2:呼叫,3:電銷
    groupName String 技能組名稱
    free Int 空閑坐席數量

    # 4.19 查詢呼叫坐席

    說明:用于轉接前查詢呼叫技能組內空閑坐席信息。

    示例如下:
    var queryAgents = function (){
        var data = {
            groupId: “xxxxxxx”,
            queryContent: “xxxxxxx”
        }
        window.zcVertoServ.queryAgents(data,displayResult);
    }
    參數說明:
    groupId:需要查詢的技能組id,非必填;
    queryContent:模糊查找內容,非必填;
    displayResult為回調函數 用于接收回調信息,需自行定義
    
    響應示例
    {
        "retCode": "000000",
        "retMsg": "查詢成功",
        "items": [
            {
    ????????????	 	"agentStatus":?"1",
    ????????????	"groupId":?"6fa94a074b8646b38f6f5decc7580fe7_12",
    ????????????	"groupName":?"7q電銷",
    ???????		??	"groupType":?3,
    ???????		??	"typeName":??"電銷技能組",
    ????????????	"serviceEmail":?"7q@sobot.com",
    ????	??????? 	"serviceId":?"9e9e1d5fd8b046499387954ba13e4464",
    ??????????	??	    "serviceName":?"7q"
    ????????  },
    ????????  {
    ????????????		"agentStatus":?"1",
    ???????????		"groupId":?"6fa94a074b8646b38f6f5decc7580fe7_18",
    ????????????		"groupName":?"坐席300人",
    ????????????		"groupType":?2,
    "typeName":??"呼叫技能組",
    ????????????		"serviceEmail":?"email297@sobot.com",
    ????????????		"serviceId":?"a168e755cd594b7bbf95d8e93bd40669",
    ????????????		"serviceName":?"name297"
    ????????	}
        ]
    }
    
    

    參數說明

    屬性 類型 說明
    retCode String 請求狀態碼,取值000000(成功)
    retMsg String 請求狀態描述
    items String 坐席列表,數組類型(釋義見下方)

    坐席列表參數詳情

    屬性 類型 說明
    agentStatus String 坐席狀態
    groupId String 技能組ID
    groupName String 技能組名稱
    groupType Int 技能組類型,2:呼叫技能組,3:電銷技能組
    serviceEmail String 坐席郵箱
    serviceId String 坐席id
    serviceName String 坐席名稱
    typeName String 技能組類型名稱

    # 5.Websocket回調消息格式

    msgType字段解釋:(此處僅有msgType字段解釋,詳細字段場景及解釋請參考本文第八章)

    消息類型 含義 備注
    StartService 通話開始 呼入到達智齒系統或者呼出時開始呼叫
    StopService 呼叫結束 整個通話結束
    EnterQueue 進入排隊 呼入未找到空閑坐席,進入排隊
    ExitQueue 退出隊列 退出排隊,可能是電話掛斷或者分配到了空閑坐席
    EvaluateResult 滿意度評價 通話結束坐席掛斷,客戶做出滿意度評價
    IvrGiveUp Ivr放棄 客戶呼入電話之后直接掛斷,也沒有進入技能組
    OffWorkMsg 非服務時間 客戶呼入時為ivr的非工作時間
    PhoneStateConnected 電話接起 用戶或者坐席的電話接起
    PhoneStateAgentConnected 坐席電話接起
    PhoneStateUserConnected 用戶電話接起
    PhoneStateDisConnected 電話掛斷 用戶或者坐席的電話掛斷
    PhoneStateExtError 坐席話機異常 呼叫坐席的電話時無法呼通
    PhoneStateIdle 話機空閑
    PhoneStateRing 話機振鈴
    PhoneStateAgentRing 坐席振鈴
    PhoneStateUserRing 用戶振鈴
    AgentBreak 坐席強拆
    AgentHangUp 監聽中坐席掛斷
    AgentInsert 坐席監聽中強插
    MonitorCancer 監聽取消
    MonitorConnected 監聽接通消息
    MonitorRing 監聽中振鈴
    UserHangUp 用戶掛斷 監聽-強拆/強插過程中用戶方掛斷
    AgentStateBusy 坐席狀態忙碌
    AgentStateException 坐席狀態異常
    AgentStateAfterWorking 坐席后處理
    entStateIdle 坐席空閑(上班)
    AgentStateTalking 坐席通話中
    AgentStateLogOut 坐席離線
    TransferConnected 轉接接通

    # 6. 頁面重載或刷新處理方式

    如您頁面進行reload事件或者加載時,需按照下列辦法進行登陸:

    1. 進行插件初始化事件window.zcVertoServ.ininServ方法調用(此方法無回調,執行即可);
    2. 調用獲取token方法window.zcVertoServ.getToken(displayResult); displayResult為您自定義的回調函數,在回調函數中收到響應的時候進行進行第三步
    響應示例:
    {
        "access_token": "2d0866f9-c2a1-49d6-9838-595e179d5ef6",
        "token_type": "bearer",
        "expires_in": 59,
        "scope": "select"
    }
    
    
    1. 調用查詢狀態方法window.zcVertoServ.queryAgentState(displayResult), displayResult為您自定義的回調函數,在回調函數中收到返回值中的agentState不為-1的時候進行進行第四步
    響應示例:
    {
        "item": {
            "agentId": "9f4efcdeb3774d71aecc85e39c93357c",
            "agentState": "1",
            "appId": "2571b1d01a294b779e4bb3ebcf075596",
            "companyId": "3bc6f5deb9b441388e3ea56dcfca8b8e"
        },
        "retCode": "000000",
        "retMsg": "success"
    }
    
    
    1. 調用登陸坐席方法window.zcVertoServ.reConnect(); 注:當調用此方法成功后,會收到一條連接socket成功消息,并且如果上一次操作為非離線動作,則websocket會推送上一條動作消息(消息格式參照第五章內容),可根據該條消息進行頁面狀態的恢復。
    刷新操作示例見下圖:
    
    
    window.zcVertoServ.ininServ*params,statusFunc);
    window.zcVertoServ.getToken(function(res){
      if(!!res['access_token']){
        window.zcVertoServ.queryAgentState(function(rs){
          if(rs.retCode==='000000' && rs.item.agentState >= 0) {
            //如果查詢結果狀態不是離線  單獨重連
            window.zcVertoServ.reConnect();
          }
        })
      }
    })
    
    

    # 7. 回調消息參數說明

    # 7.1 消息類型列表

    消息類型 含義 備注
    StartService 通話開始 呼入到達智齒系統或者呼出時開始呼叫
    StopService 呼叫結束 整個通話結束
    EnterQueue 進入排隊 呼入未找到空閑坐席,進入排隊
    ExitQueue 退出隊列 退出排隊,可能是電話掛斷或者分配到了空閑坐席
    EvaluateResult 滿意度評價 通話結束坐席掛斷,客戶做出滿意度評價
    IvrGiveUp Ivr放棄 客戶呼入電話之后直接掛斷,也沒有進入技能組
    OffWorkMsg 非服務時間 客戶呼入時為ivr的非工作時間
    PhoneStateConnected 電話接起 用戶或者坐席的電話接起
    PhoneStateAgentConnected 坐席電話接起
    PhoneStateUserConnected 用戶電話接起
    PhoneStateDisConnected 電話掛斷 用戶或者坐席的電話掛斷
    PhoneStateExtError 坐席話機異常 呼叫坐席的電話時無法呼通
    PhoneStateIdle 話機空閑
    PhoneStateRing 話機振鈴
    PhoneStateAgentRing 坐席振鈴
    PhoneStateUserRing 用戶振鈴
    AgentBreak 坐席強拆
    AgentHangUp 監聽中坐席掛斷
    AgentInsert 坐席監聽中強插
    MonitorCancer 監聽取消
    MonitorConnected 監聽接通消息
    MonitorRing 監聽中振鈴
    UserHangUp 用戶掛斷 監聽-強拆/強插過程中用戶方掛斷
    AgentStateBusy 坐席狀態忙碌
    AgentStateException 坐席狀態異常
    AgentStateAfterWorking 坐席后處理
    AgentStateIdle 坐席空閑
    AgentStateTalking 坐席通話中
    AgentStateLogOut 坐席離線
    TransferConnected 轉接接通
    TransferRing 轉接振鈴
    TransferConfirm 轉接確認
    TransferHangup 轉接掛斷

    # 7.2 坐席狀態

    屬性 類型 說明
    appId String 應用Id
    companyId String 公司Id
    agentId String 坐席ID
    changeTime String 狀態切換時間,yyyymmddHHmiss
    agentState String 坐席狀態,忙碌,空閑,坐席狀態,其中-1為離線,0為忙碌,1為空閑,3為通話接通中,114為小休,115為后處理,116為培訓,117為會議,118為用餐,119為活動,99為異常
    示例
    { 
    	"companyId": "8a48b5514835561a01483e9149d803d8",
      "appId": "8a48b5514835561a01483e9149d803d8",
      "agentId": "xxx",
      "changeTime": "xxxxxxxxxxxxxx",
      "agentState": "1"
    } 
    
    

    # 7.3 開始通話

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為StartService
    callId String 用戶呼叫id
    agentId String 坐席id
    agentGroupId String 技能組ID
    agentName String 坐席名稱
    direction String 呼叫方向0為呼入,1為呼出
    extSatisfyType String 是否開啟滿意度 1為開啟
    groupType String 技能組類型
    caller String 主叫
    callee String 被叫
    timestamp String 時間
    numberProvice String 號碼歸屬地-省
    numberCity String 號碼歸屬地-市
    示例
    {
    	"agentGroupId": "aa0e6a0584044fc49d1231678942_1",
    	"agentGroupName": "呼入客服組",
    	"agentGroupType": "2",
    	"agentid": "30aa6142dse802e4314c2859a",
    	"appId": "8a216dacgytsf866b811185b",
    	"callee": "03703737721",
    	"caller": "05503564427",
    	"callid": "ee450462-6acf-4244-8bd3-21kiy918225",
    	"companyId": "aa0e6a05840mlout6d0d678942",
    	"direction": "1",
    	"extSatisfyType": 0,
    	"groupType": "2",
    	"messageNumber": 215271,
    	"msgType": "StartService",
    	"satisfyNumber": "-1",
      "numberProvice":"北京",
      "numberCity":"北京",
    	"timestamp": "20190117114230215"
    }
    
    
    

    # 7.4 用戶振鈴

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為PhoneStateUserRing
    callId String 用戶呼叫id,當狀態為2、3、由3變為0時,此值不為空。默認值為空。
    agentId String 坐席id
    caller String 主叫
    callee String 被叫
    numberProvice String 號碼歸屬地-省
    numberCity String 號碼歸屬地-市
    示例
    { 
      "companyId":"8a48b5514835561a01483e9149d803d8",
      "appId": "8a48b5514835561a01483e9149d803d8",
      "callId": "xxx",
      "callee": "18645658308",
    	"caller": "01086484075",
      "numberProvice":"北京",
      "numberCity":"北京",
      "msgType": "PhoneStateUserRing",
      "agentId":"xxx"
    } 
    
    

    # 7.5 坐席振鈴

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為PhoneStateAgentRing
    callId String 用戶呼叫id
    agentId String 坐席id
    caller String 主叫
    callee String 被叫
    numberProvice String 號碼歸屬地-省
    numberCity String 號碼歸屬地-市
    direction String 呼叫方向,0為呼入,1為呼出
    示例
    { 
    	"companyId":"8a48b5514835561a01483e9149d803d8",
      "appId": "8a48b5514835561a01483e9149d803d8",
      "callId": "xxx",
      "callee": "18645658308",
    	"caller": "01086484075",
      "numberProvice":"北京",
      "numberCity":"北京",
      "direction":0
      "msgType": "PhoneStateAgentRing",
      "agentId":"xxx"
    } 
    
    

    # 7.6 坐席接通

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為PhoneStateAgentConnected
    callId String 呼叫id
    agentId String 坐席id
    caller String 主叫
    callee String 被叫
    numberProvice String 號碼歸屬地-省
    numberCity String 號碼歸屬地-市
    direction String 呼叫方向,0為呼入,1為呼出
    
    示例
    { 
    	"companyId":"8a48b5514835561a01483e9149d803d8",
      "appId": "8a48b5514835561a01483e9149d803d8",
      "callId": "xxx",
      "callee": "18645658308",
    	"caller": "01086484075",
      "numberProvice":"北京",
      "numberCity":"北京",
      "direction":0
      "msgType": "PhoneStateAgentConnected",
      "agentId":"xxx"
    } 
    
    

    # 7.7 用戶接聽

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為PhoneStateUserConnected
    callId String 呼叫id
    agentId String 坐席id
    caller String 主叫
    callee String 被叫
    numberProvice String 號碼歸屬地-省
    numberCity String 號碼歸屬地-市
    示例
    { 
    	"companyId":"8a48b5514835561a01483e9149d803d8",
      "appId": "8a48b5514835561a01483e9149d803d8",
      "callId": "xxx",
      "callee": "18645658308",
    	"caller": "01086484075",
      "numberProvice":"北京",
      "numberCity":"北京",
      "msgType": "PhoneStateUserConnected",
      "agentId":"xxx"
    } 
    
    

    # 7.8 通話結束

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為StopService
    callid String 用戶呼叫id
    agentGroupId String 呼叫所屬技能組ID
    agentGroupName String 呼叫所屬技能組名稱
    caller String 主叫
    callee String 被叫
    direction String 呼叫方向,0為呼入,1為呼出
    duration Integer 有效通話時長
    timestamp String 時間
    voiceAliyunUrl String 錄音地址
    agentId String 坐席id
    numberProvice String 號碼歸屬地-省
    numberCity String 號碼歸屬地-市
    
    示例
    {
    	"agentGroupId": "a4b2c401c19e4b8e8e79bbd435c9",
    	"agentGroupName": "管理團隊",
    	"agentGroupType": "3",
    	"agentid": "2259b2a30d914e31bd0cb81cac27e5d3",
    	"appId": "8aaf070863b526a40163c8c01bc60a8e",
    	"callee": "18645658308",
    	"caller": "01086484075",
    	"callid": "45b3b81f-791c-4a5f-b40c-cac25183f",
    	"companyId": "a4b2c401c19eebw29bbd435c978a0",
    	"direction": "1",
    	"duration": 0,
      "numberProvice":"北京",
      "numberCity":"北京",
    	"extSatisfyType": 0,
    	"groupType": "3",
    	"messageNumber": 195837,
    	"msgType": "StopService",
    	"satisfyNumber": "-1",
    	"timestamp": "20190117112823492",
    	"voiceAliyunUrl": ""
    } 
    
    

    # 7.9 轉接振鈴

    注:轉接振鈴,被轉接坐席振鈴時,向轉接坐席和被轉接坐席推送該消息

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為TransferRing
    adminAgentId String 發起轉接方坐席id
    adminGroupId String 發起轉接方技能組id
    agentGroupId String 被轉接技能組id
    agentId String 被轉接坐席id
    callId String 用戶呼叫id,當狀態為2、3、由3變為0時,此值不為空。默認值為空
    subCallId String 子通話id
    direction Integer 呼叫方向,0為呼入,1為呼出
    remoteIp String 通話所在服務器IP
    timeStamp String 時間
    
    示例
    {
      " adminAgentId ": "e499a4cdf232401fb3a43c47e866e92a",
    	" adminGroupId ": "6fa94a074b8646b38f6f5decc7580fe7_5",
    	" agentGroupId ": "6fa94a074b8646b38f6f5decc7580fe7_5",
    	"agentId": "8406faf259b94a3e8a753f82715ab671",
    	"appId": "3186d4c82ab7421ea36d36fcac9cdbbe",
    	"callId": "913fad39-40fe-4a98-bdc1-02dab7740a47",
    	"companyId": "6fa94a074b8646b38f6f5decc7580fe7",
    	"direction": "1",
    	" msgType ": "TransferRing",
    	"remoteIp": "192.168.1.180",
    	" subCallId ": "dfc6e616-65fc-4b52-9b27-5851b1395c4d",
    	"timeStamp": "20191216222042345"
    
    } 
    
    
    

    # 7.10 轉接確認

    注:當轉接坐席確認轉接后,向被轉接坐席都推送該消息

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    agentId String 發起轉接方技能組id
    callId String 用戶呼叫id,當狀態為2、3、由3變為0時,此值不為空。默認值為空
    msgType String 消息類型,此處為 TransferConfirm
    subCallId String 子通話id
    Timestamp String 時間
    adminAgentInitState String 發起轉接坐席初始話狀態
    agentInitState String 被轉接坐席初始話狀態
    示例
    {
    " adminAgentInitState ": "",
    	" agentInitState ": "6fa94a074b8646b38f6f5decc7580fe7_5",
    	"agentId": "8406faf259b94a3e8a753f82715ab671",
    	"appId": "3186d4c82ab7421ea36d36fcac9cdbbe",
    	"callId": "913fad39-40fe-4a98-bdc1-02dab7740a47",
    	"companyId": "6fa94a074b8646b38f6f5decc7580fe7",
    	" msgType ": " TransferConfirm ",
    	" subCallId ": "dfc6e616-65fc-4b52-9b27-5851b1395c4d",
    	"timeStamp": "20191216222042345"
    
    } 
    
    

    # 7.11 轉接接通

    注:被轉接坐席接聽后,向轉接坐席和被轉接坐席都推送該消息

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為TransferConnected
    adminAgentId String 發起轉接方坐席id
    adminGroupId String 發起轉接方技能組id
    agentGroupId String 被轉接技能組id
    agentId String 被轉接坐席id
    callId String 用戶呼叫id,當狀態為2、3、由3變為0時,此值不為空。默認值為空
    Direction Integer 呼叫方向,0為呼入,1為呼出
    remoteIp String 通話所在服務器IP
    subCallId String 子通話id
    Timestamp String 時間
    示例
    {
    	" adminAgentId ": "e499a4cdf232401fb3a43c47e866e92a",
    	" adminGroupId ": "6fa94a074b8646b38f6f5decc7580fe7_5",
    	" agentGroupId ": "6fa94a074b8646b38f6f5decc7580fe7_5",
    	" agentId ": "8406faf259b94a3e8a753f82715ab671",
    	"appId": "3186d4c82ab7421ea36d36fcac9cdbbe",
    	"callId": "913fad39-40fe-4a98-bdc1-02dab7740a47",
    	"companyId": "6fa94a074b8646b38f6f5decc7580fe7",
    	"direction": "1",
    	"msgType": "TransferConnected ",
    	"remoteIp": "192.168.1.180",
    	" subCallId ": "dfc6e616-65fc-4b52-9b27-5851b1395c4d",
    	"timeStamp": "20191216222042345"
    } 
    
    
    

    # 7.12 轉接掛斷

    注:當轉接坐席確認轉接后,向轉接坐席都推送該消息

    屬性 類型 說明
    companyId string 企業ID
    appId string 應用Id
    adminAgentId string 發起轉接方坐席id
    adminGroupId string 發起轉接方技能組id
    agentGroupId string 被轉接技能組id
    agentId string 被轉接坐席id
    adminAgentInitState string 發起轉接坐席初始話狀態
    agentInitState string 被轉接坐席初始話狀態
    callId string 用戶呼叫id,當狀態為2、3、由3變為0時,此值不為空。默認值為空
    afterWorkFlag string 后處理標記
    direction Integer 呼叫方向,0為呼入,1為呼出
    duration string 持續時間
    msgType string 消息類型,此處為TransferHangup
    notifyType int 0: 轉接中被轉接坐席掛機。 1: 轉接中發起轉接坐席掛機。 2: 確認轉接后被轉接坐席掛機。 3: 確認轉接后發起轉接坐席掛機。 4:取消轉接后被轉接坐席掛機。 5:取消轉接后發起轉接坐席掛機。
    remoteIp string 通話所在服務器IP
    Timestamp string 時間
    示例
    {
    " adminAgentId ": "e499a4cdf232401fb3a43c47e866e92a",
    " adminGroupId ": "6fa94a074b8646b38f6f5decc7580fe7_5",
    " agentGroupId ": "6fa94a074b8646b38f6f5decc7580fe7_5",
    	"agentId": "8406faf259b94a3e8a753f82715ab671",
    	"appId": "3186d4c82ab7421ea36d36fcac9cdbbe",
    	"callId": "913fad39-40fe-4a98-bdc1-02dab7740a47",
    "companyId": "6fa94a074b8646b38f6f5decc7580fe7",
    " adminAgentInitState ": "1",
    " agentInitState ": "1",
    	"direction": "1",
    " notifyType ": 2,
    	"duration": "96",
    	"msgType": "TransferHangup",
    	"remoteIp": "192.168.1.180",
    	"subCallId": "dfc6e616-65fc-4b52-9b27-5851b1395c4d",
    	"timeStamp": "20191216222042345"
    } 
    
    
    

    # 7.13 滿意度評價

    屬性 類型 說明
    companyId String 企業ID
    appId String 應用Id
    msgType String 消息類型,此處為EvaluateResult
    callId String 用戶呼叫id,當狀態為2、3、由3變為0時,此值不為空。默認值為空。
    agentId String 坐席id
    agentGroupId String 技能組ID
    agentName String 坐席名稱
    Direction String 呼叫方向
    extSatisfyType String 是否開啟滿意度 1為開啟
    fromattr String 主叫歸屬地
    groupType String 技能組類型
    caller String 主叫
    callee String 被叫
    satisfyLevel String 滿意度等級 2:兩級 3:三級,5:五級
    satisfyNumber String 滿意度按鍵
    timestamp String 時間
    
    示例
    {
    	"agentGroupId": "6b0132ff7eff4d5aa82835107951c0376_1",
    	"agentName": "測試",
    	"agentid": "060f0cca6b52wj8361424c6b7199",
    	"appId": "8aaf0alpou15d399fc1140f38",
    	"callee": "01062051663",
    	"caller": "15270887626",
    	"callid": "b1e70752-1a08-11e9-acf3-8f81eltred5",
    	"companyId": "6b0132ffvmsytn207951c0376",
    	"direction": "0",
    	"extSatisfyType": 1,
    	"fromattr": "江西|南昌",
    	"groupType": "2",
    	"messageNumber": 206755,
    	"msgType": "EvaluateResult",
    	"satisfyLevel": "2",
    	"satisfyNumber": "1",
    	"startTime": "1547696044188",
    	"timestamp": "20190117113559767"
    } 
    
    

    # 8. 備注

    開發時結合此文檔及demo作為參考。

    大星彩票 <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <蜘蛛词>| <文本链> <文本链> <文本链> <文本链> <文本链> <文本链>