Unified Service Desk の CTI デスクトップ マネージャーを作成する

CTI デスクトップ マネージャー コンポーネントは、コンピューター テレフォニー統合 (CTI) システムと Unified Service Desk または User Interface Integration (UII) 間のインターフェイスです。 CTI デスクトップ マネージャー コンポーネントは、コールの状態とデータをまとめて管理する次の 2 つのオブジェクトを作成します。

  • CallStateManager: CtiCallStateManager クラスは、回答、切断、保留、転送などのコール管理に関連するコマンドを発行するために CTI コネクタ コンポーネントと通信するためのプロパティ、メソッド、およびイベントを含む基本クラスとして使用します。 接続先の CTI コントロール (ユーザー インターフェイス) に関して複数のコール管理機能と接続済みのイベントを提供し、ベンダー固有のカスタマイズの基本実装と機能拡張のポイントを提供します。

  • AgentStateManager: CtiAgentStateManager は、エージェントの状態管理 (使用可能、ビジー、退席中などのエージェントの空き状況) に関連する CTI コネクタ コンポーネントと通信するためのプロパティ、メソッド、およびイベントを含む基本クラスとして使用します。 接続先の CTI コントロール (ユーザー インターフェイス) に関して接続済みのイベントを提供し、ベンダー固有のカスタマイズの基本実装と機能拡張のポイントを提供します。

CTI デスクトップ マネージャー コンポーネントの定義

CTI デスクトップ マネージャーは、次のインターフェイスを実装します。

  • ICtiAgentStateManager

  • ICtiCallStateManager

    CTI デスクトップ マネージャー コンポーネントは、USD CTI コネクタプロジェクト テンプレートを使用して CTI コネクタを定義するために使用するプロジェクトと同じプロジェクトで定義します。 このテンプレートの使用の詳細については、CTI コネクタの作成 を参照してください。

    USD CTI コネクタプロジェクト テンプレートの BaseCtiDesktopManagerControl.cs ファイルを使用して CTI デスクトップ マネージャーを構成し、AgentStateManager.cs および CallStateManager.cs ファイルを使用してコールとエージェントの状態を構成します。 これらのファイルでは、CTI デスクトップ マネージャー コンポーネントの作成に役立つように、接続済みのメソッドおよび (コメント形式の) 指示を提供します。

    CTI デスクトップ マネージャーの管理。

コールが到着したときに検索要求を発生させる

新たな呼び出しが来た際には、検索リクエストを呼び出して Microsoft Dataverse リポジトリ内の自動番号識別 (ANI) 番号を調べ、名、姓などの追加情報を取得し、セッションを作成することができます。 User Interface Integration (UII) には、CTI システムが顧客の検索プロバイダーに送信する顧客の検索要求を記述する CtiLookupRequest クラスが用意されています。 このクラスでは、CTI システムが提供する共通のデータ要素を記述します。 要求にカスタム データを追加する機能も提供します。

顧客の検索は、Unified Service Desk または UII のどちらで検索するかに応じて実装されます:

  • Unified Service Desk: 検索要求は、グローバル マネージャーにホストされたコントロールによって処理されます。

  • User Interface Integration (UII): 検索要求は ICustomerSearch に送信され、検索コントロールを実装する方法は自由に決定できます。 String) メソッドを使用して検索要求に追加のデータを送信することもできます。 UII は、CTI 検索要求が接続済みの Windows フォームベースまたは WPF ベースの顧客検索コントロールを作成するプロジェクト テンプレートを提供します。

コール データとイベントへのアクセス

UII デスクトップ (Unified Service Desk など) で処理中のコールに関する情報にアクセスするには、CallInfoData クラスを使用します。 次の例は、このクラスの構文を示しています。

CallInfoData calldata = GetCallInfoData(ctiCallRefCallId);  

コール アクションの有効化または無効化

コール アクションを有効または無効にするには、CtiCallActionOptions クラスを使用します。 次のコード例は、このクラスを使用してコールを処理する方法を示しています。

public override void OnCallStateChanged(CtiCoreEventArgs e)  
{  
   CallEventArgs CallArgs = (CallEventArgs)e.EventInfo;  
  
   // Set the state of the call in the call list.   
   CallInfoData calldata = GetCallInfoData(CallArgs.Call.CallID.ToString(CultureInfo.CurrentUICulture));  
   if (calldata != null)  
      calldata.CurrentCallState = string.IsNullOrEmpty(CallArgs.State.ToString()) ? string.Empty : CallArgs.State.ToString();  
  
   UpdateCallInfoItemEntry(calldata); // update call data..   
  
   CtiCallEventArgs args = null;  
   switch (CallArgs.State)  
   {  
      case CallClassProvider.CallState.Connected:  
      args = new CtiCallEventArgs(calldata.GetCtiCallRefId, CtiCallStates.OFFHOOK, new CtiCallActionOptions());  
      break;  
  
      case CallClassProvider.CallState.Disconnected:  
      args = new CtiCallEventArgs(calldata.GetCtiCallRefId, CtiCallStates.DISCONNECTED, new CtiCallActionOptions());  
      break;  
  
      case CallClassProvider.CallState.Hold:  
      args = new CtiCallEventArgs(calldata.GetCtiCallRefId, CtiCallStates.ONHOLD, new CtiCallActionOptions());  
      break;  
  
      case CallClassProvider.CallState.Idle:  
      args = new CtiCallEventArgs(calldata.GetCtiCallRefId, CtiCallStates.DISCONNECTED, new CtiCallActionOptions());  
      break;  
  
      case CallClassProvider.CallState.Incoming_Call:  
      args = new CtiCallEventArgs(calldata.GetCtiCallRefId, CtiCallStates.PICKUPPENDING, new CtiCallActionOptions());  
      break;  
  
      case CallClassProvider.CallState.Ringing:  
      args = new CtiCallEventArgs(calldata.GetCtiCallRefId, CtiCallStates.RINGING, new CtiCallActionOptions());  
      break;  
  
      default:  
      System.Diagnostics.Trace.WriteLine(ResourceStrings.UNSUPPORTEDEVENT + CallArgs.State.ToString());  
      break;  
   }  
   // Raise status change event.   
   RaiseCallStateChangeEvent(args);  
}  
  

Unified Service Desk で CTI デスクトップ マネージャーにホストされたコントロールを構成する

CTI デスクトップ マネージャーを CTI コネクタと共に作成した後に、Unified Service Desk でこれらをホストされたコントロールとして構成する必要があります。 Unified Service Desk は、Unified Service Desk で CTI デスクトップ マネージャーを構成するために使用できる、CTI デスクトップ マネージャー タイプのホストされたコントロールを提供します。 CTI コネクタは、UII のホストされたコントロールとして構成する必要があります。 詳細: Unified Service Desk で CTI コネクタのホストされたコントロールを構成する

  1. Unified Service Desk 管理者にサインインします。

  2. 基本設定で、ホストされたコントロールを選択します。

  3. + 新規を選択します。

  4. 新しいホストされたコントロールページで、次の値を指定します。

    フィールド
    名前 好みで名前を付けます。
    USD コンポーネントの種類 CTI デスクトップ マネージャー
    表示グループ HiddenPanel
  5. ホスティング タブを選択し、以下の値を指定します

    フィールド
    アセンブリ URI これは、以前の手順で作成したアセンブリ (.dll) ファイルの名前です。
    アセンブリの種類 これは、後ろにドット、次に CTI コネクタのクラス名が付いたアセンブリの名前です。 たとえば、アセンブリ名が MyCtiManager で、CTI プロジェクトのクラス名が DesktopManager である場合、このフィールドには MyCtiManager.DesktopManager と入力する必要があります。
  6. 保存を選択して、ホストされたコントロールを作成します。

重要

CTI デスクトップ マネージャーにホストされたコントロールを Unified Service Desk で構成したら、以下を構成する必要があります:

  • CTI デスクトップ マネージャーにホストされたコントロールの操作。 詳細: 電話サービス機能をサポートする操作
    • CTI 検索要求を適切にルーティングし、セッションを作成して Unified Service Desk で検索結果を表示するウィンドウ ナビゲーション ルール詳細: CTI 検索

参照

汎用リスナー アダプターに対して CTI デスクトップ マネージャーのホストされたコントロールを構成する
CTI コネクタの作成
CTI コントロールの作成
チュートリアル: CTI デスクトップ マネージャーを使用して CTI アダプターを作成する
UII コンピューター テレフォニー統合 (CTI) フレームワーク