Unified Service Desk の拡張 : CTI イベントルーティングにおける汎用リスナーアダプターの利用
みなさん、こんにちは。前回まで全 7 回にわたる Unified Service Desk の構成チュートリアルをご紹介いたしました。今回は拡張編として、Unified Service Desk と CTI システムを連携する仕組みについてご紹介いたします。なお、今回紹介する内容は基本的に以下のチュートリアルの内容に沿っています。
Walkthrough: Use the generic listener adapter for CTI event routing
事前準備
- USD のインストールが完了している必要があります。以下の記事を参考にしてインストールを完了しておいてください。
Unified Service Desk のインストール - インストール時に展開されるサンプルパッケージの機能を一部利用します。前回までの全 7 回の Unified Service Desk の構成 Part 1 ~ Part 7 で使用したユーザーと同じユーザーを使うときは、 Unified Service Desk の構成 Part 1 ステップ 3 でユーザーに割り当てた構成を解除してください。
- サンプル CTI シミュレーター アプリケーションの Visual Studio プロジェクトを以下からダウンロードします。
https://go.microsoft.com/fwlink/p/?LinkId=519007
プロジェクトをビルドし、サンプル アプリケーション プロジェクトの bin\debug フォルダの USDCTICallTester.exe を実行します。USD CTI シミュレーターは USD クライアントを実行している同じコンピューター上で実行する必要があります。
今回の内容
コールセンターでは、既存のお客様からの電話の受電にともない CRM の顧客情報を自動的にエージェントのデスクトップ画面に表示させるような Computer Telephony Integration (CTI) 連携機能が求められることがあります。今回は USD の拡張機能として、顧客からの入電のような CTI イベントが発生したときに Microsoft Dynamics CRM の顧客レコード をポップアップさせるスクリーンポップの仕組みをご紹介いたします。
CTI イベントを USD と連携させるために、CTI デスクトップマネージャータイプのホストされたコントロールと汎用リスナーアダプターを利用することができます。今回の記事では、USD に CTI リクエストを送信するサンプル CTI シミュレーターを使用しています。また、CTI イベントが発生した際、どのような情報が汎用リスナーアダプターによって渡されてくるかをデバッガーによって確認します。
汎用リスナーアダプターの説明
USD では Web サービスや各種 API 経由でイベントや CTI アクションにアクセスするためにカスタム CTI アダプターを構築できます。また、CTI イベントが発生した際にエージェントのコンピューターの URL を開く機能を持ったCTI ミドルウェア向けに汎用リスナーアダプターを提供しています。
汎用リスナーアダプターは既知のポート (5000) : https://localhost:5000/ でHTTPリクエストを受け付けます。汎用リスナーアダプターは URL からクエリ・ストリングを抽出して CTI イベントのパラメーターとして文字列の値を使用し、次に USD において CTI スクリーンポップを発生させます。一旦汎用リスナーアダプターが指定のポートで起動すると、CTI ミドルウェアから以下のような URL が呼ばれるのを待ちます。
https://localhost:5000/?ani=1234&dnis=4355&type=phonecall&customerid=49383433
このURLの例では、クエリ・ストリングは分割され、以下のパラメーターとして USD の Global Manager のホストされたコントロールに渡されます。
パラメーター |
説明 |
値 |
ANI |
自動番号識別用。着信コールの電話番号(発信者番号) |
ANI=1234 |
DNIS |
ダイアル番号識別サービス用。顧客が電話をした電話番号(着信番号) |
DNIS=4355 |
Type |
これはコールをルーティングするためのウィンドウナビゲーションルールの開始活動の情報を表します。詳細は CTI Search をご参照ください |
type=phonecall |
Key=value のペア |
Key-value のペアは、顧客レコードを検索するために Global Manager のホストされたコントロールから CTILookUpRequest に渡されます |
customerid=49383433 |
CTI 検索の際、これらのパラメーターは置換パラメーターとして利用できます。セッションが開始されると、これらのパラメーターは以下のように cti 接頭辞を使ってアクセスできます。
[[cti.ani]]
汎用リスナーアダプターの詳細は以下も併せてご参照ください。
Use the generic listener adapter in Unified Service Desk
この後のステップで利用しているサンプル CTI シミュレーターでは、CTI イベントを擬似的に発生させて上記で説明したようなパラメーターを汎用リスナーアダプターの URL に対して渡しています。
ステップ1:Unified Service Desk で CTI デスクトップ マネージャのホストされたコントロールを構成
- Microsoft Dynamics CRM にサインインします。
- ナビゲーション バーで Microsoft Dynamics CRM をクリックし、設定 を選択します。
- 設定 > Unified Service Desk > ホストされたコントロール をクリックします。
- 新規 をクリックします。
- 新規ホストされたコントロールページで次の値を指定します。
フィールド |
値 |
名前 |
CTITest |
USD コンポーネントの種類 |
CTI デスクトップ マネージャー |
表示グループ |
HiddenPanel |
アセンブリ URL |
Microsoft.Crm.UnifiedServiceDesk.GenericListener |
アセンブリの種類 |
Microsoft.Crm.UnifiedServiceDesk.GenericListener.DesktopManager |
※アセンブリ URL とアセンブリの種類フィールドで指定された値は、CTI デスクトップ マネージャータイプのホストされたコントロールの汎用リスナーの値です。
- 上書き保存 をクリックします。
ステップ2:Unified Service Desk に CTI イベントが発生した場合のテスト
- USD クライアントを起動し、Microsoft Dynamics CRM インスタンスに接続します。クライアント起動後、デバッガーコントロールを起動する右上隅の歯車アイコン(設定)を選択し、 ✖ アイコンを選択してデバッガーの出力内容をクリアにします。
- USD CTI シミュレーター アプリケーションを起動し、Send To USD をクリックします。
- CTI イベントが公開されるクライアントアプリケーションにてスクリーンポップが発生します。この場合、CTILookUpRequest は USD CTI シミュレーター アプリケーションで指定された値ともに開始されます。まだウィンドウ ナビゲーション ルールを設定していないため、何も起きません。
ステップ3:CtiLookUpRequest をルーティングするウィンドウナビゲーションルールを定義
一致が見つかった場合にセッションを作成するウィンドウ ナビゲーション ルールを作成し、一致した取引先担当者レコードを USD のセッションに表示します。
- Microsoft Dynamics CRM にサインインします。
- 取引先担当者を検索する高度な検索に移動し、勤務先電話番号 または 勤務先電話番号 2 が ”次の値と等しい” 条件で値にランダムな値(例:"111")の検索条件を作成します。
- Fetch XML のダウンロード をクリックし、FetchXML として検索条件を保存します。
- ナビゲーションで Microsoft Dynamics CRM > 設定 > Unified Service Desk > ウィンドウ ナビゲーション ルール をクリックします。
- 新規 をクリックし、新規ウィンドウ ナビゲーション ルールページで次の値を指定します。
フィールド |
値 |
名前 |
CTIRoute |
受注 |
50 |
開始 |
CTITest |
方向 |
両方 |
- ウィンドウナビゲーションルールを保存します。
- このルールに先ほど保存した FetchXML クエリを追加します。CTI 検索領域で追加 + をクリックします。
- 新規 CTI 検索ページにて、以下の値を指定します。
フィールド |
値 |
名前 |
CTIContactSearch |
受注 |
1 |
FetchXML |
<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false"> <entity name="contact"> <attribute name="fullname" /> <attribute name="parentcustomerid" /> <attribute name="telephone1" /> <attribute name="emailaddress1" /> <attribute name="contactid" /> <order attribute="fullname" descending="false" /> <filter type="and"> <condition attribute="statecode" operator="eq" value="0" /> <filter type="or"> <condition attribute="telephone1" operator="eq" value="[[ANI]]" /> <condition attribute="business2" operator="eq" value="[[ANI]]" /> </filter> </filter> </entity></fetch> |
※Unified Service Desk CTI シミュレーターの ANI キーに指定された値を元に検索が実行されるように、電話番号 "111" のようなランダム値を [[ANI]] のように変更します。
- CTI 検索ルールを保存し、ウィンドウナビゲーションルールに戻ります。
- ウィンドウナビゲーションルール ページで次の値を指定します。
フィールド |
値 |
1つの一致項目領域の決定 |
セッションの作成、一致項目の読み込み後、アクション実行 |
宛先 |
タブ |
対象のタブ |
Contact |
タブの表示 |
Contact |
ナビゲーション バーの非表示 |
はい |
- ウィンドウナビゲーションルールを保存します。
ステップ4:CTI アダプターのテスト
- USD クライアント起動後、デバッガーコントロールを起動するために右上隅の歯車アイコン(設定)を選択し、 ✖ アイコンを選択してデバッガーの出力内容をクリアにします。
- USD CTI シミュレーターアプリケーションを起動し、ANI フィールドの値に検索する取引先担当者の有効な勤務先電話番号を指定します。Send To USD をクリックします。
- USD のセッションに、電話番号が一致した取引先担当者レコードが表示されます。
- CTI 検索の結果として発生したイベントをデバッガーのホストされたコントロールで確認できます。また、データパラメータータブにて、 $Context 変数とcti 変数にてコンテキスト情報をチェックできます。
結論
いかがでしたでしょうか。汎用リスナーアダプターを利用することで容易にスクリーンポップアップを実装することができます。今回利用した USD CTI シミュレーターは汎用リスナーアダプターの仕様に基づき、URL でパラメーターを渡しています。汎用リスナーアダプターの仕様の詳細は以下に記載されていますので、いろいろ試していただければと思います。
Use the generic listener adapter in Unified Service Desk
今回は比較的お問い合わせが多かった CTI 連携の仕組みをご紹介いたしましたが、拡張編は今後も定期的にご紹介していきたいと思います。
- 小澤 英紀