PureCloud for Salesforce で Salesforce コンソール イベントを使用


統合は Salesforce コンソール統合ツールキット内のイベント モデルを通して、ステータスの変化 (連絡可能、取り込み中、退席中、不在、キュー中) やコール アクティビティ(接続、切断、要後処理 (ACW)、後処理 (ACW) 完了) に応じて引き起こされたイベントをブロードキャストまたはリッスンします。

Note: This article is an advanced customization topic meant for developers familiar with Salesforce.

Developers can create Visualforce pages that use these events. To create an example Visualforce page that broadcasts and listens for events, use this sample code:

<apex:page >
   <apex:includeScript value="/support/console/34.0/integration.js"/>
 
   <style type="text/css">
      .statusSelection {
         position: relative;
         display: block;
         padding-top: 6px;
      }
   </style>

   <script type="text/javascript">
 
 
   //Omni Status Map Ids are org specific
   var statusMap = {Omni:{available:"0N5j00000008QNQ" , queue:"0N5j00000008QMt"}, PureCloud:{available:"AVAILABLE", queue:"ON_QUEUE"}};
 
   function OutputToConsole(message){
      console.log(message);
      if(document.getElementById("OUTPUTCONSOLE").value != ""){
         document.getElementById("OUTPUTCONSOLE").value = document.getElementById("OUTPUTCONSOLE").value + " \r\n";
      }
 
      document.getElementById("OUTPUTCONSOLE").value = document.getElementById("OUTPUTCONSOLE").value + message;
   }

   function changeStatus(status) { 
      if(status == 'available'){
         sforce.console.fireEvent('inin.salesforce.constants.consoleevent.changestatus', statusMap.PureCloud.available , function(data){console.log(data);});
         sforce.console.presence.setServicePresenceStatus(statusMap.Omni.available);
      }else if(status = 'onQueue'){
         sforce.console.fireEvent('inin.salesforce.constants.consoleevent.changestatus', statusMap.PureCloud.queue , function(data){console.log(data);});
         sforce.console.presence.setServicePresenceStatus(statusMap.Omni.queue);
      }
   }
 
   sforce.console.addEventListener('inin.salesforce.constants.consoleevent.pc.UPDATE_STATUS', function(data){
      OutputToConsole(JSON.stringify(data));
   });
 
   sforce.console.addEventListener('inin.salesforce.constants.consoleevent.pc.INTERACTION_CONNECTED', function(data){
      OutputToConsole(JSON.stringify(data));
   });
 
   sforce.console.addEventListener('inin.salesforce.constants.consoleevent.pc.INTERACTION_DISCONNECTED', function(data){
      OutputToConsole(JSON.stringify(data));
   });
	
   sforce.console.addEventListener('inin.salesforce.constants.consoleevent.pc.ACW_REQUIRED', function(data){
      OutputToConsole(JSON.stringify(data));
   });
 
   sforce.console.addEventListener('inin.salesforce.constants.consoleevent.pc.ACW_COMPLETED', function(data){
      OutputToConsole(JSON.stringify(data));
   });

   </script>
   <span class="statusSelection">
      <input type="button" onclick="changeStatus('available')" value="Change status to Available" /> |
      <input type="button" onclick="changeStatus('onQueue')" value="Change Status to On Queue" />
   </span>
   <hr/>
   <span>
       <textArea id="OUTPUTCONSOLE" rows="20" cols="100" ></textArea>
   </span>
 
</apex:page>

For information about the Salesforce console, see Customize a Console with Custom Components in Salesforce Classic in the Salesforce documentation.

For information about using the event model, see the Salesforce Console Integration Toolkit Developer Guide in the Salesforce documentation.

統合がブロードキャストするイベント

統合は以下の 5 つのイベントをブロードキャストし、Salesforce に送信できます。

Note: These event names begin with inin.salesforce.constants.consoleevent.pc., followed by the name in the table, for example, inin.salesforce.constants.consoleevent.pc.UPDATE_STATUS.
イベント名 本文例: 説明
UPDATE_STATUS

{
“reason”: “status_updated”,
“status”:“AVAILABLE”,
“id”:“44560c74-5e84-4062-94b6-5680cdeb54d5”,
“sub_status”:“Available Work At Home”
}

ステータスの更新。セカンダリ ステータスを使用している場合、応答にはセカンダリ ステータスの情報が含まれます。
INTERACTION_CONNECTED {
“reason”: “connected”,
“interactionId”:“44560c74-5e84-4062-94b6-5680cdeb54d5”
}
インタラクションの接続
インタラクションの切断 {
“reason”: “disconnected”,
“interactionId”:“44560c74-5e84-4062-94b6-5680cdeb54d5”
}
インタラクションの切断
LOGGED_OUT {
“reason”: “logged_out”
}
ユーザーがログアウトしました。
要後処理 (ACW) {
“reason”: “acw_required”,
“interactionId”:“44560c74-5e84-4062-94b6-5680cdeb54d5”
}
ACW 必須
ACW_COMPLETED {
“reason”: “acw_completed”,
“interactionId”:“44560c74-5e84-4062-94b6-5680cdeb54d5”
}
後処理 (ACW) が完了

統合がリッスンするイベント

統合は、エージェントのステータス変化に関する以下のイベントをリッスンできます。

Note: This event name begins with inin.salesforce.constants.consoleevent., followed by the name in the table, for example, inin.salesforce.constants.consoleevent.changestatus.
イベント名 本文例: 説明
changestatus  {Status}

ステータスの変更。リクエストのステータス ID を送信します。

Note: If you only use primary statuses, you can send high-level key values in place of the status ID: ‘AVAILABLE’, ‘AWAY’, ‘BUSY’, ‘OUT_OF_OFFICE’, ‘ON_QUEUE’, ‘BREAK’, ‘TRAINING’, ‘MEETING’, ‘MEAL’.