コラボレーション : Cisco Unified Intelligent Contact Management Enterprise

アプリケーション固有の処理をする Blended Agent に対するデータベース トリガーの使用

2013 年 8 月 21 日 - 機械翻訳について
その他のバージョン: PDFpdf | 英語版 (2006 年 6 月 29 日) | フィードバック


目次


概要

このホワイト ペーパーでは、Blended Agent(BA)のプライベート データベースの連絡先レコードが BA Campaign Manager により終了または更新された場合に、アプリケーション固有の処理を実行するために SQL Server データベースのトリガーを使用する方法について説明します。

前提条件

要件

次の項目に関する知識があることが推奨されます。

  • Cisco Intelligent Contact Management(ICM)

  • Cisco ICMソフトウェア Blended Agent

  • Microsoft SQL データベース

使用するコンポーネント

この白書の情報はこれらのソフトウェア および ハードウェア バージョンに基づいています:

  • Cisco ICM バージョン 4.6.x 以降

  • Microsoft SQL 7

この白書の情報は特定のラボ 環境のデバイスから作成されました。 この白書で使用された初期 (デフォルト) 設定からデバイスすべては開始しました。 ネットワークが稼働中の場合は、コマンドが及ぼす潜在的な影響を十分に理解しておく必要があります。

表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

概要

BA は Microsoft SQL Server データベースでダイヤルされるべきコンタクトレコードを保存します。 標準のデータベース アプリケーションの使用は、SQL サーバのような、BA とシステムおよびアプリケーションを統合ためにサード・ パーティおよびユーザ向けにもっと簡単にします。

この白書は BA 選挙事務所長がのステータスを接続するデータベースのレコードを閉じるか、またはアップデートするときアプリケーション特有の処理を行うのに SQL サーバ データベーストリガを使用する方法を記述します。

Dialing_List およびPersonal_Callback_List

BA は Dialing_List 表でコンタクトレコードを保存します。 それは Personal_Callback_List 表で個人的なコールバック レコードを保存します。 これらの表は BA 私用 データベースcustomer_inst_baAにあります。 この表では、CallStatus および CallResult はコンタクトレコードの状態を識別します。

名前 タイプ サイズ 説明
CallStatus 文字 1 バイト CallStatus はレコードの状態を示します: p — コンタクトレコードは保留中呼出されるためにです。 c —レコードは終了されました。 CallStatus すべての値および意味の完全な記述のためのこれらの文書を参照して下さい:
CallResult SMALLINT 2 バイト CallResult は BA ダイヤラによって BA 選挙事務所長に戻されるようにコールの結果を示します。 従って連絡先の電話番号がダイヤルされるときダイヤラが使用中音声か返事を表示するかどうか、示します。 CallResult すべての値および意味の完全な記述のためのこれらの文書を参照して下さい:

BA 選挙事務所長が Dialing_List または Personal_Callback_List のレコードをアップデートする時はいつでも、CallStatus および CallResult フィールドは更新済です。 従って、それはこれらのフィールドを監視するために SQL サーバ データベーストリガを作成しやすいです。

BA データベーステーブルのトリガーの使用は無限数のアプリケーション特有の目標を達成することを可能にします。 この白書はトリガーが役立ちますいくつかのサンプルシナリオを示します。

トリガの例

注: この白書のトリガの例すべては架空表を、CRM_DB データベースの CRM_Table 示します。

SQL サーバ Enterprise Manager からのトリガーを作成するためにこれらのステップを完了して下さい:

  1. BA データベースへのドリルダウン。

  2. データベースの下で、Table アイコンをクリックして下さい。

    これはデータベースと関連付けられる表を表示する。

  3. トリガーを作成したいと思う表を選択して下さい。

  4. 選択された テーブルを右クリックし、All Tasks > Manage Triggers の順に選択 して下さい。

    /image/gif/paws/19091/blendedagent-a.gif

外部 データベースに行を追加して下さい

このセクションのトリガの例は表で BA 選挙事務所長が Dialing_List のコンタクトレコードをアップデートする時はいつでも行を、CRM_Table 追加します(CRM_DB データベースで)。

トリガー insert_crm_data を作成して下さい
CREATE TRIGGER insert_crm_data ON Dialing_List FOR UPDATE AS
/* Proceed only if EXACTLY ONE Record is updated */

!--- See next Note for an explanation.

IF (SELECT COUNT (*) FROM INSERTED) = 1
BEGIN

     INSERT CRM_DB..CRM_Table
     SELECT
     inserted.AccountNumber,
     GETDATE (),
     inserted.CallStatus
     FROM inserted

END

注: アップデート コンタクトレコード以外連絡先が電話で問い合わせられるとき、選挙事務所長はまたいくつかの一括更新を行います。 これらはトリガーによってフィルタ・アウトする必要があります。 詳細についてはこの白書の Recommended Practices セクションを参照して下さい。

外部 データベースの連絡先 情報をアップデートして下さい

このセクションのトリガの例は連絡先の課金番号の一致を通して表 CRM_Table のレコードを(CRM_DB データベースで)アップデートします。 たとえば BA 選挙事務所長が課金番号 1A2B3C4 が付いている Dialing_List のレコードをアップデートすれば、そして同じ課金番号が付いている CRM_Table のレコードは同時にアップデートされます。

トリガー updt_customer_by_acctnum を作成して下さい
CREATE TRIGGER updt_customer_by_acctnum ON Dialing_List FOR UPDATE AS
/* Proceed only if EXACTLY ONE Record is updated */
IF (SELECT COUNT (*) FROM INSERTED) = 1
BEGIN

     DECLARE @CS CHAR (1)
     DECLARE @ACCTNUM VARCHAR (25)
     SELECT
     @CS = inserted.CallStatus,
     @ACCTNUM = inserted.AccountNumber
     FROM inserted
     UPDATE Northwind..CRM_Table
     SET Status = @CS
     Where Northwind..CRM_Table.AccountNumber = @ACCTNUM

END

外部 データベースから行を削除して下さい

このセクションのトリガの例は表 CRM_Table から連絡先の課金番号の一致を通してそのコンタクトレコードが Dialing_List で終了される場合、レコードを(CRM_DB データベースで)削除します。 たとえば BA 選挙事務所長が課金番号 1A2B3C4 が付いている Dialing_List のレコードを終了すれば、そして同じ課金番号が付いている CRM_Table のレコードは削除されます。

トリガー del_customer_by_acctnum を作成して下さい
CREATE TRIGGER del_customer_by_acctnum ON Dialing_List FOR UPDATE AS
/* Proceed only if EXACTLY ONE Record is updated */
IF (SELECT COUNT (*) FROM INSERTED) = 1
BEGIN

     DECLARE @CS CHAR (1)
     DECLARE @ACCTNUM VARCHAR (25)
     SELECT
     @CS = inserted.CallStatus,
     @ACCTNUM = inserted.AccountNumber
     FROM inserted
     IF @CS = 'C'
     BEGIN
          DELETE Northwind..CRM_Table
          WHERE Northwind..CRM_Table.AccountNumber = @ACCTNUM
     END
END

トリガーから外部実行可能プログラムを実行して下さい

このセクションのトリガの例はプログラム C:\MYAPP.EXE を実行します。 トリガーは MYAPP.EXE にコマンド・ライン引数として更新されたレコードの AccountNumber および CallStatus を渡します。 これによっては BA 選挙事務所長が丁度 1 つのレコードのステータスをアップデートする時はいつでもが発生します。

run_executable トリガーを作成して下さい
CREATE TRIGGER run_executable ON Dialing_List FOR UPDATE AS
/* Proceed only if EXACTLY ONE Record is updated */
IF (SELECT COUNT (*) FROM INSERTED) = 1
BEGIN
     DELCARE *CMD VARCHAR (100)
     SELECT
     @CMD = 'C:\MYAPP.EXE ' + inserted.AccountNumber + ' ' + inserted.CallStatus
     FROM inserted
     EXEC master ..xp_cmdshell @CMD
END

注: 上記の表では、よりもむしろ実行可能モジュールを開始するために xp_cmdshell 保存された手順をトリガーまた他のどの保存された手順も実行できます呼出して下さい。

パフォーマンスに関する考慮事項

  • SQL サーバ トリガーは同期で実行されます。 これはトリガーの実行が終了するまで表に更新トリガーがあれば、その表の更新コマンド戻りません意味します。 トリガーが最上に設計されていない場合、BA データベースアップデートは遅れます。 また、BA 選挙事務所長は表をアップデートするためにそれが SQL 文を実行している間開放型データベース接続 (ODBC)タイムアウトに出会うかもしれません。 一般に、トリガーは最小可能な処理をし、実行 速度のために最適化する必要があります。

  • トリガーの実行の結果はオリジナル SQL オペレーションの結果に影響を与えるかもしれません。 たとえば更新トリガーが Dialing_List で定義されると、仮定して下さい。 更新トリガーが壊れた場合、Dialing_List の更新操作はまた失敗するかもしれないし、レコード疑わしいの不正確な CallStatus を Dialing_List で残すことができます。

  • トリガーが入り込む場合、SQL オペレーションはすべてのネスト化した トリガーが動作するまで完了しません。 従って、あらゆるトリガーの失敗は失敗するかもしれませんオリジナル SQL オペレーション。

  • トリガーが外部アプリケーションか別の保存された手順を実行する場合、トリガーの実行は外部アプリケーションまで完了しませんでしたまたは保存された手順は終了します。

  • トリガーのカーソルの使用はパフォーマンスの悪影響が理由で、可能性としては推奨されません。

  • トリガーは CPU かメモリに負荷をかけるタスクを行うべきではありません。

  • トリガーすべては配備の前によくテストされ、重点を置く必要があります。

推奨される操作

  • 続行する前に 1 つのレコードだけ更新済であることを常に確認して下さい。 これはトリガーが選挙事務所長によってできていた一括更新で機能することを防ぎます。 これらはトリガーによって一般にフィルタ・アウトされる一括更新の例です:

    • アクティブのダイヤラが選挙事務所長からの切断を記録する時、U への A (アクティブ)からのレコードの CallStatus の変更(未知)。

    • P への U CallStatus の定期的に 選挙事務所長更新レコード(迄)。

    注: コンタクトレコードがコールの結果として更新済のとき、レコードは常に一つずつアップデートされます。 従って、丁度レコード 1 つが不必要なトリガー アクションに対するほとんどの場合更新済セーフガードだったかどうか見る確認。 このケースへの例外は一括操作が 1 つの行だけアップデートすると発生します。

  • 続行する前に CallStatus 値があるように確認して下さい。 たとえば、選挙事務所長が BA ダイヤラにレコードを送るとき、選挙事務所長は A (アクティブ)に CallStatus を設定 します。 トリガーは CallStatus があるように確認できます。 更新済 CallStatus が A である場合、促進することを続行しません。

  • パフォーマンスを BA データベースアップデートの間に最適化するために、時間およびリソース集中型 オペレーションはトリガーで実行されたなりません。 キューとして動作するために別のデータベースのアプリケーション 固有 の テーブルを作成できます。 これはトリガーの実行を高速化します。 そのアプリケーション 固有 の テーブルでデータを挿入するか、アップデートするか、または削除するのにトリガーを使用できます。 それから、別のアプリケーションはこと変更のための表ポーリングでき、必要に応じてそれ以上のタスクを行います。

関連するシスコ サポート コミュニティ ディスカッション

シスコ サポート コミュニティは、どなたでも投稿や回答ができる情報交換スペースです。


関連情報


Document ID: 19091