計算式の上書きの例

  • リリースバージョン: Zurich
  • 更新日 2025年07月31日
  • 所要時間:4分
  • 次の計算式の上書きの例を使用して、独自の計算式の上書きを作成します。

    グループ終了ステータスの定義

    会話の終了ステータスは、会話の終了方法を指定します。たとえば、ユーザーが応答しなかった場合や、ユーザーがチャットウィンドウを閉じた場合などに終了します。終了ステータスには、デフォルトで 12 の定義があります。会話の終了状況の詳細については、「仮想エージェント インタラクションレコード」を参照してください。次のスクリプトは、それらを次のようにグループ化します。
    • VA がチャットセッションをクローズしました
      • システムが VA をクローズしました:ユーザー応答なし
      • システムが VA をクローズしました:トピック完了
      • システムが VA をクローズしました:AI 検索が残存
      • システムが VA をクローズしました:自動終了
      • システムが VA をクローズしました:ユーザーエンゲージメントなし
    • ライブエージェントがチャットセッションをクローズしました
      • システムが LA をクローズしました:ユーザー応答なし
      • システムが LA をクローズしました:チャット完了
      • エージェントが LA をクローズしました:[End/X] をクリック
      • システムが LA をクローズしました:エージェントエンゲージメント前
    • ユーザーがチャットセッションをクローズしました
      • ユーザーが LA をクローズしました:[End/X] をクリック
      • ユーザーが VA をクローズしました:[End/X] をクリック
      • ユーザーが LA をクローズしました:エージェントエンゲージメント前

    12 の終了状況のこれらのグループを作成するには、「計算式の上書きを作成する」の説明に従い、次のスクリプトを使用します。

    (function calc(convGr) {
        // Returns 'System Closed VA', 'System Closed LA', 'User Closed' states.
        function getFinalEndState(state) {
            var arrayUtil = new global.ArrayUtil();
            VA_END_STATE = ['System Closed VA – User No Response',
                'System Closed VA – Topic Complete',
                'System Closed VA – Left With AI Search',
                'System closed VA – Auto Closed',
                'System Closed VA – User Never Engaged'
            ];
            LA_END_STATE = ['System Closed LA – User No Response',
                'System Closed LA – Chat Complete',
                'Agent Closed LA – Clicked End/X',
                'System Closed LA – Before Agent Engagement'
            ];
            USER_CLOSED_END_STATE = ['User Closed LA – Clicked End/X',
                'User Closed VA – Clicked End/X',
                'User Closed LA - Before Agent Engagement'
            ];
            if (state) {
                if (arrayUtil.contains(VA_END_STATE, state))
                    return 'System Closed VA';
    
                if (arrayUtil.contains(LA_END_STATE, state))
                    return 'System Closed LA';
    
                if (arrayUtil.contains(USER_CLOSED_END_STATE, state))
                    return 'User Closed';
            }
            return state;
        }
    
        var conversationId = convGr.getValue('sys_id');
        var interactionGr = new GlideRecord('interaction');
        interactionGr.addQuery('channel_metadata_document', conversationId);
        interactionGr.addQuery('channel_metadata_table', 'sys_cs_conversation');
        interactionGr.query();
        if (interactionGr.next()) {
            var state = interactionGr.getValue('state');
            var reason = interactionGr.getValue('state_reason');
            var isVAChat = interactionGr.getValue('virtual_agent');
            var isLAChat = interactionGr.getValue('agent_chat');
            var endState = new CAUtil().getEndState(state, reason, isVAChat, isLAChat);
            return getFinalEndState(endState);
        }
    })(convGr);