説明

適応型通信アプリケーション・プログラミング・インタフェース

【課題】モジュール間のマルチメディア通信のための方法及び装置を提供する。
【解決手段】ファックスを転送することに適合された第1通信チャネルと電子メールを転送することに適合されている第2の通信チャネルにそれぞれ接続されている第1チャネルドライバー及び第2チャネルドライバーと、通信キューイング・システムとをインタフェースすることを可能にするコマンドを含むコマンド定義を定義することによって、モジュール間のマルチメディア通信を行うようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、適応型通信アプリケーション・プログラミング・インタフェースに関するものである。
【背景技術】
【0002】
現代の発展しつつある技術及び情報の世界では、多種多様の通信チャネルを通して、企業が自分達の顧客、潜在的な顧客、及びその他の交渉相手と相互接続されている。そのような通信チャネルには、フェース・ツー・フェース(face-to-face)、電話、ファックス、e−メール、ボイス・メール、無線通信、「call me now」及び「call me later」を介したインターネット情報問合せ、インターネット連携セッション、ページング及びショート・メッセージ・サービス等が含まれる。これら全ての通信チャネルに対して、企業は、各顧客の対話(インタラクション)を管理しながら、サービス・レベルを満たし、且つ顧客を最大限満足させる作業に直面する。更に、企業は、社員を最適に配置及び教育して、これらの通信チャネルを通して、顧客サポート・センタ、テレビジネス組織、若しくはそれらの販売、マーケティング、サービスの本職のいずれかを通して、顧客を処理する作業に直面する。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許出願第09/823,678号
【特許文献2】特許出願第09/823,531号
【発明の概要】
【発明が解決しようとする課題】
【0004】
現在、多くの企業は、着信自動分配装置だけでなく、個々のビジネス分野毎に設けられた専用のe−メール受信箱、ファックス受信箱、及びボイス・メール受信箱を備えている。エージェントと呼ばれる従業員は、各通信チャネルに対して顧客からのサポート要求をポーリングし、且つ処理するように割当てられている。従来式の着信電話呼出の呼出待ち行列と相なって、各エージェントは、全てのこれら通信チャネルを用いて自身の仕事を処理するという過酷な負担が課せられる一方で、待ち行列(キュー)の状態、各顧客のサポート要求及び/又は通信チャネルの優先順位を視認する手立てを有していない。
【0005】
従って、要求に応じる適切な技術を備えているエージェントに、複数の通信チャネルからワーク・アイテム(作業項目)の割当て、ルーティング、及びキューイングを行うことが可能な汎用キュー・ストラテジを含むシステムを提供することが望まれる。このシステムによって、エージェントは全ての通信チャネルに対して自身のワーク・アイテムを視認し、且つ処理することが可能にされる必要がある。そのようなシステムによって、反応時間が減少され、且つ顧客の満足度が増大される。同時に、複数の通信チャネル内にあるワーク・アイテムの間での優先順位が調整される。
【課題を解決するための手段】
【0006】
一実施例では、モジュール間の通信が開示されている。この方法は、コマンド定義を定義するステップを含んでいる。このコマンド定義は、複数チャネル、複数メディア(マルチメディア)、通信キューイング・システムとのインターフェースをとるためのコマンドを有する。
【0007】
一態様では、この実施例は、メディア形式リスト及びコマンド・イベント・リストの要求、ドライバ・オブジェクトの生成、サービスの要求、及びドライバ・オブジェクトの解放のためのドライバ・オブジェクト・コマンドを含む。
【0008】
別態様では、この実施例は、サービス・オブジェクトの解放、イベントの処理が完了した際の通知、コマンドの呼出し、ワーク・アイテムの解放、ワーク・アイテムの保留、ワーク・アイテムの再開、キューされているイベントの処理、及びキューされているイベントの取消しのためのサービス・オブジェクト・コマンドを含む。
【0009】
別態様では、この実施例は、ワーク・アイテムの開始、ワーク・アイテムの解放、ワーク・アイテムの状況(context)の保存、ワーク・アイテムの状況の復旧、ワーク・アイテムのシリアル化、ワーク・アイテム・ストレージの解放、バッチ処理の開始、及びバッチ処理の終了のためのコマンドを含む。
【0010】
別の実施例では、モジュール間の通信の定義が開示されている。この定義は、コマンド定義を含んでおり、このコマンド定義は、複数チャネル、複数メディア、通信キューイング・システムとのインタフェースをとるためのコマンドを有する。
【0011】
この実施例の一態様では、コマンド定義は、メディア形式リスト及びコマンド・イベント・リストの要求、ドライバの生成、サービスの要求、及びドライバの解放のためのコマンドを含む。
【0012】
この実施例の別態様では、コマンド定義は、サービス・オブジェクトの解放、イベント処理が完了した際の通知、コマンドの呼出し、ワーク・アイテムの解放、ワーク・アイテムの保留、ワーク・アイテムの再開、キューされているイベントの処理、及びキューされているイベントの取消しのためのサービス・オブジェクト・コマンドを含む。
【0013】
この実施例の別態様では、コマンド定義は、ワーク・アイテムの開始、ワーク・アイテムの解放、ワーク・アイテムの状況の保存、ワーク・アイテムの状況の復旧、ワーク・アイテムのシリアル化、ワーク・アイテム・ストレージの解放、バッチ処理の開始、及びバッチ処理の終了のためのクライアント・オブジェクト・コマンドを含む。
【0014】
前記は概要であり、それゆえに必然的に、詳説が単純化され、一般化され、且つ省略されたものが含まれている。従って、当業者は、この概要が例示だけが目的であり、何ら制限を目的としたものでないことを理解するであろう。当業者には明らかであろうが、本明細書に開示されている動作は、多種多様な方法で実行されてよく、且つこの発明及びその広範な態様から外れることのない変更及び修正がなされてもよい。請求項だけによって規定される、本発明の別の態様、発明の特性、及び利点は、以下で示される制限されていない詳述によって明らかになるであろう。
【図面の簡単な説明】
【0015】
【図1−A】図1−Aは、種々のメディア形式から成る複数の通信チャネルを介して、エージェントがサポート要求及び/又は情報要求に応答することが可能であり、且つそのスケジューリングが可能であるシステムの一実施例の線図である。
【図1−B】図1−Bは、種々のメディア形式から成る複数の通信チャネルを介して、エージェントがサポート要求及び/又は情報要求に応答することが可能であり、且つそのスケジューリングが可能であるシステムの一実施例の線図である。
【図1−C】図1−Cは、種々のメディア形式から成る複数の通信チャネルを介して、エージェントがサポート要求及び/又は情報要求に応答することが可能であり、且つそのスケジューリングが可能であるシステムの一実施例の線図である。
【図1−D】図1−Dは、種々のメディア形式から成る複数の通信チャネルを介して、エージェントがサポート要求及び/又は情報要求に応答することが可能であり、且つそのスケジューリングが可能であるシステムの一実施例の線図である。
【図1−E】図1−Eは、種々のメディア形式から成る複数の通信チャネルを介して、エージェントがサポート要求及び/又は情報要求に応答することが可能であり、且つそのスケジューリングが可能であるシステムの別実施例の線図である。
【図1−F】図1−Fは、通信アプリケーション・プログラミング・インターフェースの実装において含まれる構成要素の線図である。
【図1−G】図1−Gは、通信アプリケーション・プログラミング・インターフェースの別の実装において含まれる構成要素の線図である。
【図1−H】図1−Hは、通信アプリケーション・プログラミング・インターフェースの別の実装において含まれる構成要素の線図である。
【図1−I】図1−Iは、通信アプリケーション・プログラミング・インターフェースの別の実装において含まれる構成要素の線図である。
【図1−J】図1−Jは、通信アプリケーション・プログラミング・インターフェースの別の実装において含まれる構成要素の線図である。
【図1−K】図1−Kは、通信アプリケーション・プログラミング・インターフェースの別の実装において含まれる構成要素の線図である。
【図2】図2は、図1−A乃至図1−Kのシステムに対するデータベース・スキーマの一例である。
【図2−a】図2−aは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−b】図2−bは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−c】図2−cは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−d】図2−dは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−e】図2−eは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−f】図2−fは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−g】図2−gは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−h】図2−hは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−i】図2−iは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−j】図2−jは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−k】図2−kは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−l】図2−lは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−m】図2−mは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−n】図2−nは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−o】図2−oは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−p】図2−pは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−q】図2−qは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−r】図2−rは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−s】図2−sは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−t】図2−tは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−u】図2−uは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−v】図2−vは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−w】図2−wは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−x】図2−xは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−y】図2−yは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−z】図2−zは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−aa】図2−aaは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−bb】図2−bbは、図2でのテーブル名に対応するテーブルの例を示している。
【図2−cc】図2−ccは、図2でのテーブル名に対応するテーブルの例を示している。
【図3】図3は、本発明による汎用キューイング・システムの一実施例を示している。
【図4−a】図4−aは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−b】図4−bは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−c】図4−cは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−d】図4−dは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−e】図4−eは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−f】図4−fは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−g】図4−gは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−h】図4−hは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−i】図4−iは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−j】図4−jは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−k】図4−kは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−l】図4−lは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−m】図4−mは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−n】図4−nは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−o】図4−oは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図4−p】図4−pは、本発明による汎用キューイング・データベース内のテーブルの例を示している。
【図5】図5は、本発明の実施例に従ってエージェントを利用可能にして、且つスケジューリング可能にするシステムを実施し得るネットワーク環境が図示されているブロック図である。
【図6】図6は、本発明の実施例を実施するのに適切なコンピュータ・システムが図示されているブロック図である。
【図7】図7は、図6のコンピュータ・システムとクライアント及びホスト・システムとの相互接続が図示されているブロック図である。
【発明を実施するための形態】
【0016】
別個の図面で類似の参照番号が用いられている場合には、類似若しくは同一のアイテムであることを示している。
【0017】
図1−A乃至図1−Dは、異なるメディア形式から成る複数の通信チャネルを介して、エージェントが顧客サポート要求及び/又は情報要求に応答するのを可能にするクライアント/サーバ・システムの一実施例の図である。これらのメディア形式には、電話、e−メール、ファックス、web連携、インターネット「call me now」及び「call me later」、webチャット、無線アクセス・プロトコル、ページング、ショート・メッセージ・サービスが含まれる(但し、これらだけに制限されるわけではない)。本明細書で用いられている用語「顧客」は、ビジネスでの交渉相手及び個人を含んでおり、それらは、企業の顧客、潜在的な顧客、及び顧客サポート・エージェントが通信するその他の相手である。
【0018】
図1−Aには、4人の顧客がクライアント/サーバ・システム100に顧客サポート要求を提出しており、1人のエージェントが顧客サポート要求に応答している様子が示されている。これら4人の顧客は、通信チャネル130A、130B、130C、130D等の4つの通信チャネル130を介して顧客サポート要求を提出している。一実施例では、これら4つの通信チャネルのうちの少なくとも2つが異なるメディア形式をサポートしている。
【0019】
本発明によれば、クライアント/サーバ・システム100は、複数の通信チャネルから、顧客サポート要求に応答する適切な技能を備えているエージェントに、仕事項目の割当て、ルーティング、及びキューイングを行うことが可能な汎用キューイング(UQ)システム102を含んでいる。この用語「ワーク・アイテム」は、電話呼出し、e−メール、ファックス、若しくは別のメディア形式から成るその他の通信の形態である顧客サポート要求への応答等の、クライアント/サーバ・システム100によって割当てられたエージェントからの応答を要求する顧客からの要求のことを指している。ワーク・アイテムは、入力顧客サポート要求等のイベントが到着したときに、若しくはエージェントがクライアント/サーバ・システム100へのインタフェースを利用することによって開始されてよい。
【0020】
クライアント/サーバ・システム100は、更に、エージェントが顧客との通信に異なるメディア形式の通信チャネルを利用することを可能にする通信サーバ109を含む。通信サーバ109は、例えば、チャネル・ドライバ120A、120B、及び120Cのうちの1つであるチャネル・ドライバ120からの入力顧客サポート要求の到着等のイベントを処理する。各チャネル・ドライバ120は、例えば、通信チャネル130A、130B、130C、及び130Dのうちの1つである通信チャネル130と通信する。
【0021】
UQシステム102と通信サーバ109とのインタラクションは、例えば、通信サーバ109が、入力顧客要求を受信して、エージェントへの割当てのためにワーク・アイテムとしてUQシステムにルーティングを行う際に生じる。UQシステム102は、このワーク・アイテムにエージェントを割当てて、その割当てエージェントとの通信のために、ワーク・アイテムを通信サーバ109に送り返す。
【0022】
Webブラウザ・クライアント104Aは、クライアント・コンピュータ・システム(図示せず)上で実行される、Microsoft社のInternet Explorer等のwebブラウザ・プログラムを含む。このwebブラウザ・クライアント104Aは、webサーバ188と通信する。クライアント/サーバ・システム100内のアプリケーション・サーバ126は、情報のための機能を実行し、且つ情報をwebサーバ188を介してwebブラウザ・クライアント104Aに送信して、それにより、表示するためのwebページをwebブラウザ・クライアント104Aに提供する。Webサーバ188によって、Javaアプレット(Java(登録商標))116等のプログラム命令をwebブラウザ・クライアント104Aにダウンロードすることが可能であり、それにより、ユーザ・インタフェース等の付加機能が提供される。
【0023】
Webブラウザ・クライアント104Aは、ツール・バー105を含んで示されている。当業者は、本発明の範囲内にある種々のメディア形式から成る複数の通信チャネルとインターフェースをとる多種多様な表示フォーマットが利用されている、ツール・バー105の機能性を提供する他のユーザ・インタフェースが実装されてもよいことを理解するであろう。ツール・バー105は、ユーザ・インタフェースの一部として存在している。
【0024】
一実施例では、クライアント/サーバ・システム100のアプリケーション・サーバ126は、オブジェクト・マネージャ107、セッション・モード通信サーバ110、要求モード通信サーバ140、着信通信受信機170、UQシステム102、webサーバ188、webサーバ146、エンタープライズ・アプリケーション・インタフェース(EAI)オブジェクト・マネージャ190、及びワークフロー・プロセス144を含んでいる。一実施例では、アプリケーション・サーバ126内の構成要素の間の通信は、当技術分野で公知の伝送制御プロトコル/インターネット・プロトコル(TCP/IP)と共に、適切なプロセス間通信プロトコルを利用して可能にされる。
【0025】
UQビジネス・サービス106によって、通信サーバ109が、UQシステム102から情報を要求することが可能にされている。UQシステム102は、webサーバ146、及びEAIオブジェクト・マネージャ190を介してその情報を返す。一実施例では、セッション・モード通信サーバ110及び着信通信受信機170が共にUQシステム102と通信することが可能である。別の実施例では、ワーク・アイテムキューの保守、及びエージェントのワーク・アイテムへの割当てのために、サードパーティ・キューイング・システムと通信することが可能である。
【0026】
通信サーバ109は、セッション・モード通信サーバ110を含む。通信サーバ109は、所望に応じて、要求モード通信サーバ140及び着信通信サーバ170のうちの一方、若しくは両方を含んでいてよい。サーバ110、140、及び170によって提供される機能が、単一のサーバ・コンピュータ・システム上に実装することも可能であり、或いは、2以上のサーバ・コンピュータ・システムに分散させることも可能であるということに留意するのは重要である。通信サーバ109によって、1以上のメディア形式の通信チャネル130を介した、エージェントと顧客との間の全ての通信の処理が行われる。通信サーバ109は、メディア特異性を有しておらず、且つ通信チャネル若しくはメディアの知識を有していない。
【0027】
種々のメディア形式の複数の通信チャネルと通信するために、通信サーバ109は、例えば、チャネル・ドライバ120A、120B、及び120Cのうちの1つであるチャネル・ドライバ120と通信するように設計されている。チャネル・ドライバ120は、通信アプリケーション・プログラム・インターフェース(API)に従って書かれている。通信装置及び通信ソフトウェアのサードパーティ・ベンダ(例えば、通信装置に対するミドルウェア・ベンダ)がチャネル・ドライバ120を提供できるように、通信API125によってインタフェースが提供されて、それにより、それらの製品がアプリケーション・サーバ126と互換性を有する。チャネル・ドライバ120を実装することによって、ベンダは,アプリケーション・サーバ126の顧客サポート・センタ管理機能及びマルチ・メディア通信チャネル能力を活用することが可能になる。
【0028】
通信API125は、サードパーティ・ベンダの製品が組込めるようにサードパーティ・ベンダに対してフレキシビリティを提供するように設計されている。チャネル・ドライバを実装する際に、ベンダは、そのベンダの通信チャネル130が理解するコマンドを規定して、それにより、通信サーバ109は、その通信チャネル130が実行されるようにコマンドを発行することが可能になる。通常、これらのコマンドは、セッション・モード通信サーバ110がエージェントへのユーザ・インタフェースを有している際に発行されるが、場合によっては、着信通信受信機170がコマンドを送信することも可能である。
【0029】
更に、ベンダによって、特定の通信チャネル130の関連するアクティビティを提供するイベントが規定される。最終的に、各コマンドを実行するための、且つ各イベントを生成及び提供するための、ダイナミック・リンク・ライブラリ(.DLLファイル)等のチャネル・ドライバの実装がベンダによって提供される。このチャネル・ドライバ120の実装において、ドライバ・オブジェクト及び少なくとも1つのサービス・オブジェクトのインスタンス生成を行うコードを含むことが、通信API125によって必要とされる。
【0030】
ベンダに対して、そのベンダの通信チャネル130にコマンドが発行できるように、且つそのベンダの通信チャネル130から情報を受信できるように、通信サーバ109のための設備を提供することを要求することによって、通信API125は、通信サーバ109が通信チャネル130のメディア形式及び特定プロトコルに依存せずに動作して、そのベンダの通信装置及び通信ソフトウェアと通信することを可能にしている。
【0031】
図2を参照すると、チャネル・ドライバ情報、メディア・アクセス上のエージェント制限、コマンド及びイベント、着信タスク管理、エージェント成績、エージェント・ステータス、メディア・ステータス、通信チャネル構成、複数キュー・サポート、並びにエージェント管理の記憶及び通信を行うためにクライアント/サーバ・システム100(図1−A)によって利用可能であるデータベース・スキーマ200の一例が示されている。データベース・スキーマ200は、構成ベース202、コマンド及びイベント204、システム・ベース206、応答グループ208、及びe−メール・プロフィール・アクセス制御210に対するデータ構造を含んでいる。
【0032】
図2−a乃至図2−ccは、図2におけるテーブル名に対応しているテーブルの例を示している。単純化のために図2はテーブル間の全ての関係を示しておらず、又、許可された通信チャネルの数及び種類に応じて、特定の構成に対して多数のテーブルの例が存在し得ることに留意されたい。更に、当業者ならば、各テーブルがパラメータを含み、且つそれらのパラメータに対して記憶空間が許可されているテーブルのこのコレクションは、データベース・スキーマがどのようにして構成されるかの一例であり、本発明に従って、別の適切な配置を用いることも可能であることを理解するであろう。
【0033】
図2−a、図2−b、図2−c、及び図2−dのテーブルは、システム・ベース206の一部であり、チャネル・ドライバ情報及びチャネル・ドライバ・パラメータが記憶されている。図2−a及び図2−bのテーブルは、例えば、チャネル・ドライバ120A、120B、及び120C等のチャネル・ドライバに対する一般的な情報を記憶しており、任意の顧客サポート・センタ構成に用いられてよい。これらのテーブルに記憶される典型的なデータは、チャネル・ドライバDLLのファイル名、関連通信チャネル130のメディア形式(例えば、eメール、ファックス等)、チャネル・ドライバに対するメディア・サービスを呼出すように実行時に通信サーバ109によって用いられるメディア・ストリング、チャネル・ドライバ・パラメータの完全なリスト、及び各チャネル・ドライバ・パラメータに対するデフォルト値である。テーブルCNCTR(図2−a参照)のパラメータINBOUND_FLG及びOUTBOUND_FLGは、チャネル・ドライバ120が着信及び/又は発信の通信をサポートするかどうかを示している。
【0034】
類似の通信要求を有し、それにより、同じ通信チャネル130へのアクセスを要求するエージェント・グループを規定するような構成で、顧客サポート・センタが構築されてよい。例えば、企業内の販売員は、無線アクセス・プロトコルを介して通信する能力が必要であるのに対して、電話オペレータにそのような能力は不要である。企業内の各グループに対して1つの構成が構築されてよい。付加的なチャネル・ドライバ・プロフィールの各々がチャネル・ドライバDLLの位置等の何らかのチャネル・ドライバ・パラメータの値をオーバーライドすることによって、チャネル・ドライバ・プロフィールが、1以上の顧客サポート・センタ構成が単一のチャネル・ドライバ120を共有することを可能にする。例えば、企業のネットワーク・アーキテクチャが原因で、フェニックス(Phoenix)にある企業の販売員は、パロアルト(Palo Alto)の販売員とは異なるチャネル・ドライバ120を用いる可能性がある。チャネル・ドライバ・プロフィールによって、異なるDLLが指示される以外は、フェニックスの販売員とパロアルトの販売員とが同一のチャネル・ドライバを利用することが可能になる。本明細書中では、用語「チャネル・ドライバ120」は、チャネル・ドライバ・パラメータに対するデフォルト値を提供する、少なくとも1つのチャネル・ドライバ・プロフィールを含むものとして用いられている。
【0035】
図2−c及び図2−dのテーブルは、特定の顧客サポート・センタ構成に対するチャネル・ドライバ・プロフィールを記憶しており、このチャネル・ドライバ・プロフィールは、他の顧客サポート・センタ構成によって共有若しくは利用はさない。通常、管理者はテーブルCNCTR_PARMを用いて、特定の顧客サポート・センタ構成のために、チャネル・ドライバ・パラメータに対するデフォルト値をオーバーライドする。図2−aを参照すると、可変なCNCTR_MEDIA_STRに記憶されるストリングは、チャネル・ドライバ120によってサポートされる通信メディア名のリストに基づいている。管理者は、メディア名をこのCNCTR_MEDIA_STRフィールドに文字列形式で入力する。このフィールドに記憶されたストリングは、そこにコマンドを発行する、若しくはそこからイベントが生じる、チャネル・ドライバ120を決定するのに用いられる。1つのチャネル・ドライバ120によって複数の種類の通信メディアがサポートされている場合、管理者は、各メディア形式毎に1レコードを生成する。以下の例は、電話、eメール、及びwebチャット・メディアに対してのCNCTRテーブルのパラメータを示している。
【0036】
{"XYZ Phone Driver", "Telephone", "xyz.dll", "Y", "Y", "XYZ Phone Implementation", "N"},
{"XYZ Email Driver", "Email", "xyz.dll", "Y", "Y", "XYZ Email Implementation", "N"},
{"XYZ Web Chat Driver", "Web Chat", "xyz.dll", "Y", "Y", "XYZ Web-Chat Implementation", "N"}
エージェント割当てのためにワーク・アイテムがUQシステム102(図1−A参照)に提出されると、そのメディア形式を利用する技術を備えたエージェントがUQシステム102により特定されるのを助けるように、このワーク・アイテムと共にCNCTR_MEDIA_STRも渡される。
【0037】
特定のエージェントに対するチャネル・ドライバ120のリストを決定するためのアルゴリズムの一例は以下の通りである。
【0038】
1.AGENTテーブル(図2−j参照)を探索することによって、エージェントに対する構成IDを決定する。
【0039】
2.その構成IDに関して、この構成に関連するチャネル・ドライバ・プロフィールのリストのためにCFG_PROFテーブル(図2−o参照)を探索する。
【0040】
3.チャネル・ドライバ120の各々に関して、CNCTR、CNCTR_PARM、PROF、及びPROF_PARM(図2−a乃至図2−dの各々を参照)テーブルからチャネル・ドライバ情報及びチャネル・ドライバ・パラメータをロードする。
【0041】
エージェントがクライアント/サーバ・システム100にログインするのに応じて、チャネル・ドライバ120のリストをロードするためのアルゴリズムの一例は、以下の通りである。
【0042】
1.チャネル・ドライバ120の各々に対して、
a.DLLがまだロードされていない場合、DLLをロードする。
【0043】
b.チャネル・ドライバ・パラメータを渡して、チャネル・ドライバにドライバ・オブジェクトの処理を依頼する。
【0044】
c.エージェントと関連しているものとして、CFG_PROF(図2−o参照)で特定されるチャネル・ドライバのメディア形式を渡すことによって、サービス・オブジェクトの処理を要求する。
【0045】
2.ループを終了する。
デフォルト設定では、エージェントはそのエージェントが属する構成に関連付けられている全てのチャネル・ドライバ120へのアクセスが許可されている。例えば、エージェントが「Customer support center 1」に属する場合には、「Customer support center 1」に設定されている全てのチャネル・ドライバ・プロフィールに対してデフォルトでアクセス可能である。更に、管理者は、エージェントがアクセス不可能なチャネル・ドライバ・プロフィールをリストにしたテーブルAGENT_LIM(図2−m参照)を用いて、そのエージ(ェントのチャネル・ドライバ120へのアクセスを制限することも可能である。
【0046】
エージェントの優先度が、中央データベース内のテーブルAGENT_PREF(図2−e参照)に記憶されて、それにより、エージェントの設定が、用いられるクライアントの種類若しくは通信チャネルとは無関係に利用可能になる。更に、設定を修正するためのユーザ・インタフェースも本発明の一実施例で提供される。
【0047】
本発明の実施例によって、UQシステム102(図1−A参照)を用いたエージェント割当て及び複数の通信メディア・チャネルが支援される。テーブルAGENT_STAT(図2−f参照)は、特定のエージェントの、そのエージェントが利用を許可されている全てのメディア形式に対しての現在の作業ステータスを記憶する。このテーブルから、管理者は、エージェントが現在アクセスが許可されているメディア形式と、各メディア形式のステータスとのリストを見ることが可能である。
【0048】
テーブルAGENT_STAT(図2−f参照)内のパラメータ「NOT_READY_FLG」によって、エージェントがワーク・アイテムを受取る準備がまだ整っていないことが示されている場合、UQシステム102(図1−A参照)は、そのエージェントに、いずれのワーク・アイテムも割当てない。「BUSY_FLG」パラメータは、そのエージェントが取込み中であることを示す。
【0049】
テーブルAGENT_STATは、主として実行時間中に更新される。エージェントがユーザ・インタフェースを用いて最初にログインした際に、そのエージェントがアクセスを許可されているメディア形式の各々に対して1レコードずつ生成される。例えば、
{"agent_emp_id","Phone Control","","","1234",""},
{"agent_emp_id","Email/Fax","","","1234",""},
{"agent_emp_id","Web Chat","","","1234",""}
これらのレコードは、エージェントの作業ステータスによって更新される。例えば、
{"agent_emp_id","Phone Control","Y","","1234","Y"}は、そのエージェントの準備は整っていないが、電話で話し中であることを示しており、
{"agent_emp_id","Email/Fax","Y","","1234",""}は、そのエージェントがEmail/Fax形式の作業を受入れる準備が整っていないことを示しており、
{"agent_emp_id","Web Chat","N","","1234","Y"}は、そのエージェントがwebチャット形式の作業を受入れる準備ができており、且つ彼若しくは彼女はwebチャット・セッション上で現在作業をしていることを示している。
【0050】
テーブルMEDIA_STAT(図2−d参照)を参照すると、電話に対するパラメータ「MEDIA_OBJECT_STR」は、エージェントの内線番号である。ファックスの場合には、ファックス番号となる。MEDIA_OBJECT_STRの内容の形式は、チャネル・ドライバ120の各々に対して規定される。
【0051】
「WORKING_SINCE_DT」は、エージェントが電話での話を開始した時間、若しくはe−メール若しくはファックス等のワーク・アイテムへの取組みを開始した時間である。
【0052】
「WORK_ITEM_STR」は、通信サーバ109によって決定されるフィールドの値及びワーク・アイテムを識別するための固有のストリングである。MEDIA_STATテーブルは、エージェントの現在の作業ステータスを反映させるように、実行時間中に更新される。実行時間中のエージェントのデータ・レコードの一例は、以下の通りである。
【0053】
{"agent_id","Phone Control","Ext.5216","6/25/2000 12:34:45",
"phone_item_str","1-1S2-X7E"},
{"agent_id","Email","info@company.com","6/25/2000 11:34:00",
"email_item_str","1-1S2-X7D"}
上記のレコードは、エージェントが内線5216で現在話し中であり、且つinfo@company.comに送信されるe−メールに取組んでいることを示している。
【0054】
複数の内線及び複数のキューが、図2−h、図2−i、及び図2−jで各々示されているテーブルTELESET、EXTENSION、及びAGENT_QUEを用いてクライアント/サーバ・システム100(図1−A)内でサポートされている。以下の用語は、図2−h、図2−i、及び図2−jで参照される。用語「自動着信分配(ACD)内線」は、ACDスイッチ130E等のACDスイッチに関連付けられているACDキューへのログインに利用される内線形式を示している。一度、内線がACDキューにログインすると、ACDスイッチによって、顧客の呼出しがその内線に転送される。1つのACD内線は、1以上のACDキューにログインすることが可能である。
【0055】
用語「標準内線(standard extension)」は、ACDキューへのログインが許可されていない電話内線形式を示している。標準内線は、主として外に電話するために、若しくは内部の呼出しに応答するために利用される。ACDスイッチによって、顧客の呼出しが標準内線に転送されることはない。
【0056】
用語「エージェントID」は、エージェントを識別するためにクライアント/サーバ・システム100によって用いられる識別子を示している。クライアント/サーバ・システム100がエージェントの利用可能性(availability)を認識できるように、各顧客サポート・センタのエージェントにはエージェントIDが割当てられている。エージェントがACDスイッチ130Eを備えている通信チャネルにログインする際に、このエージェントIDがACDスイッチ130Eに提供される。システムの構成に応じて、ACDスイッチ130E若しくはUQシステム102が、ワーク・アイテムに対して利用可能なエージェントIDを決定する。次に、ACDスイッチ130Eが顧客の呼出しをそのエージェントIDのACD内線に転送するか、若しくはエージェントの割当てにUQシステム102が利用されている場合には、通信サーバ109がチャネル・ドライバ120のうちの1つを用いて顧客の呼出しをそのエージェントIDのACD内線に転送する。
【0057】
「複数DN」は、1つの電話端末に対して構成された、1以上の内線がACD内線である複数の内線を示している。
【0058】
「複数キュー」は、1つのACD内線が複数のキューにログイン可能であることを意味している。概して、ACDキューはエージェントIDのリストであるので、このエージェントIDがACDキューに受入れられる限り、任意のACD内線を用いてACDキューにログインすることが可能である。
【0059】
一実施例では、エージェントに対する内線リストを決定するための方法には、そのエージェントによって用いられる第1端末が特定される、ACTIVE_TELESET_IDパラメータ内にある第1Teleset IDをみつけるために、AGENTテーブル(図2−j参照)内のエージェントIDを探索するステップが含まれる。次に、内線リストが、EXTENSIONテーブル(図2−i参照)内にあるDN_EXTパラメータから決定される。一度、この内線リストがみつかってしまえば、このエージェントが利用する全ての内線が、その特定のエージェントに対してAGENT_QUEテーブル(図2−l参照)内で規定されている全てのACDキューにログインすることが可能になる。
【0060】
上述のように、類似の通信要件を備えていて、同じ通信チャネル130にアクセスすることが必要とされるエージェントのグループが、顧客サポート・センタによって規定され得る。構成ベース202は、構成に関するテーブルを含んでいる。CFGテーブル(図2−n参照)は、構成に関する情報を含んでいる。構成データは、構成名と、この構成が着信応答グループのためのものであり、着信通信受信機170で用いられるかどうかを示すINGRP_FLAGとを含む。CFG_PROFテーブル(図2−o参照)は、各構成にいずれのチャネル・ドライバ・プロフィールが属するかが示されている構成/チャネル・ドライバ・プロフィールの関連テーブルである。各構成は、単一のチャネル・ドライバ・プロフィールを有する。
【0061】
AGENT_CFGテーブル(図2−p参照)は、各構成にいずれのエージェントが属するかが示されているエージェント/構成の関連テーブルである。
【0062】
CFG_PARMテーブル(図2−q参照)は、構成パラメータ・テーブルである。各構成パラメータに対して名前及び値が提供される。ACTIVE_FLGフィールドは、この構成パラメータの値がアクティブであるかどうかを示しているフラグである。
【0063】
コマンド及びイベントのデータ構造204は、チャネル・ドライバ120によって実行されるコマンド及びイベントを説明する情報も含んでいる。この情報は、各コマンドをチャネル・ドライバ120と関連付ける情報、及び各イベントをチャネル・ドライバ120と関連付ける情報を含んでいる。
【0064】
CMDテーブル(図2−r参照)は、各チャネル・ドライバ120に対するコマンドを含んでいる。上述のように、チャネル・ドライバ120を提供するベンダは、そのベンダがサポートするコマンドを特定している。通信チャネル130を用いてコマンドを実行するように、通信サーバ109によって、コマンドがチャネル・ドライバ120に発行される。ツール・バー105のボタンをクリックする度に、コマンドが呼出されて、チャネル・サーバ120に発行される。
【0065】
コマンドは、サブコマンドとして機能する関連コマンドのグループを有する。グループ・コマンドは、サブコマンド・キーワードを用いて別のコマンドを含む。
【0066】
以下は、交信相手への電話呼出しをする際の単一コマンドの一例である。
[Command: MakeCalltoContact] コマンド定義
CmdData = "MakeCalltoContact" コマンド・パラメータ
DeviceCommand = "MakeCall" コマンド・パラメータ
Description = "Make Call to Contact" コマンド・パラメータ
Hidden = TRUE コマンド・パラメータ
[CmdData: MakeCalltoContact] コマンド・データ定義
BusComp = "Contact" コマンド・パラメータ
RequiredField.’Work Phone#’ ="?*" コマンド・パラメータ
Param.PhoneNumber = "{Work Phone#: Lookup}" コマンド・パラメータ
以下は、交信相手への電話呼出しをする際のグループ・コマンドの一例である。
【0067】
[Command: MakeCallGroup]
Hidden = TRUE
SubCommand = MakeCalltoPhone
SubCommand = MakeCalltoSRContact
SubCommand = MakeCalltoSROwner
SubCommand = MakeCalltoEmployeeHome
以下の例のコマンドは、単一コマンドにもサブコマンドにもなり得る。
【0068】
[Command: MakeCalltoPhone] コマンド定義
CmdData = "MakeCalltoPhone" コマンド・パラメータ
DeviceCommand = "MakeCall" コマンド・パラメータ
Description = "Make Call to {@Phone}" コマンド・パラメータ
Hidden = TRUE コマンド・パラメータ
[CmdData: MakeCalltoPhone] コマンド・データ定義
[CmdData: MakeCalltoPhone] コマンド・データ定義
RequiredField.’Work Phone #’ = "?*"
Param.PhoneNumber = "{@Phone:PhoneTypeLookup}"
コマンドは、チャネル・ドライバ120と通信するように、データ・パラメータを特定するためのCmdDataキーワードを備えたコマンド・データ・セクションを有していてよい。
【0069】
顧客サポート・センタ構成が複数のチャネル・ドライバ120を含む場合、通信サーバ109は、各チャネル・ドライバ120によっていずれのコマンド及びイベントが処理されるかを決定することが可能である。更に、この構成は、異なる機能が実行されるコマンドに対して同一の名前を用いている、異なるベンダからのチャネル・ドライバ120を区別する助けになる。
【0070】
以下は、CmdDataキーワードを有するデータ・セクションを備えたコマンドの一例である。
【0071】
[Command: MakeCalltoContact]
CmdData = "MakeCalltoContact"
DeviceCommand = "MakeCall"
Description = "Make Call to Contact"
Hidden = TRUE
[CmdData: MakeCalltoContact]
BusComp = "Contact"
RequiredField.’Work Phone #’ = "?*"
Param.PhoneNumber = "{Work Phone # : Lookup}"
イベント・テーブルは、チャネル・ドライバ120から通信サーバ109に送信されるイベントを含んでいる。ベンダによって、チャネル・ドライバ120に送信されるイベントが特定されている。イベント応答によって、各メディア・イベントの受信に応じて通信サーバ109がどのように反応するかが決定される。イベントを処理するプロセスには、以下の:イベントに対するイベント・ハンドラを探索するステップ、適切なイベント応答を決定するために顧客サポート・センタ・データベースに照会をするステップ、及びイベントをロギングするステップが含まれる。
【0072】
InboundCallイベントに対するイベント、イベント・ハンドラ、イベント応答、及びイベント・ログの一例が下記に示されている。
【0073】
[EventHandler: OnInboundCall] 第1段階、イベント・ハンドラ定義
Device = "EventRinging" メディア・イベント定義
Response = "OnInsideCallReceived" イベント応答宣言
Filter.Call = "?*" イベント・ハンドラ・パラメータ
Order = "1" イベント・ハンドラ・オーダ
[EventResponse: OnInboundCallReceived] 第2段階、イベント応答定義
QueryBusObj = "Contact" イベント応答パラメータ
QueryBusComp = "Contact"
QuerySpec = "’Work Phone #’=’{ANI}’"
SingleView = "Service Contact Detail View"
MultiView = "Contact List View"
FindDialog = "Service Request"
FindField.CSN = "Ask Caller"
FindLog = "LogIncomingCallContactNotFound" イベント・ログ宣言
SingleLog = "LogIncomingCallContactFound" イベント・ログ宣言
Log = "LogIncomingCallContactNotFound" イベント・ログ宣言
[EventLog: LogIncomingCallContactFound] βイベント・ログ宣言
Display = "TRUE" βイベント・ログ・パラメータ
BusObj = "Action"
BusComp = "Action"
LogField.Type = "Call-Inbound"
LogField.’Account Id’ = "{Contact.’Account Id’}"
LogField.’Contact Id" = "{Contact.Id}"
LogField.Description = "Inbound call"
LogField.’Call Id’ = "{ConnID}"
AfterCall.’ACD Call Duration’ = "{@CallDuration}"
各イベント・ハンドラは、チャネル・ドライバ120によって提供されるイベントと対応しており、イベントに対するイベント・ハンドラの間で順序が付けられている。各イベント・ハンドラは、イベント応答を有している。イベント応答は、イベント・ハンドラの間で共有可能である。1つのイベント応答が、複数のイベント・ログを有していてよいし、更に、1つのイベント・ログが複数のイベント応答の間で共有されてもよい。
【0074】
セッション・モードで動作する場合には、通信サーバ109は、セッション・モード通信サーバ110の制御下にある。セッション・モード通信サーバ110は、顧客サポート要求等の入力イベントの受信を行い、且つそのエージェントが有するユーザ・インタフェースを制御することによって、エージェントとインタラクティブに通信する。好適には、入力顧客サポート要求は、通信サーバがその顧客サポート要求を受信したのと概ね同時にエージェントに送信される。その際の中断は、その顧客サポート要求を転送するための処理及び転送だけが可能な非常に短時間である。これによって、顧客の待機時間、特に、エージェントとの生の対話を求める顧客の要求に対する待機時間が確実に最小化される。
【0075】
入力電話呼出しの到着等のイベントが発生すると、ユーザ・インタフェースは、エージェントの注意を喚起するように、ユーザ・インタフェースを変更する通知機能を用いて、エージェントへの通知を行う。例えば、エージェントに電話呼出しを通知するように、通知機能によってボタンの点滅が生じてもよい。更に、通知機能によって、別の情報、例えば、エージェントが電話に出る前に呼出している人に関する情報等が表示されてもよい。電話呼出しを受取るために、電話を保留にするために、若しくは電話を切るために、エージェントがツール・バー105を利用すると、ユーザ・インタフェースによって、セッション・モード通信サーバ110にコマンドが送信される。このセッション・モード通信サーバは、電話を制御する通信チャネルにコマンドを発行するために、チャネル・ドライバ120のうちの1つと通信する。
【0076】
更に、セッション・モード通信サーバ110は、通信チャネル130A乃至130D等の1以上の通信チャネル130への接続の確立及び保持の処理も行っている。セッション・モード通信サーバ110は、接続を確立するために、チャネル・ドライバ120A等のチャネル・ドライバ120のうちの1つを利用している。通信チャネルへの接続を有することによって、エージェントは、そのエージェントに対して特に指定されている、e−メール等の入力ワーク・アイテムをリアルタイムに受信することが可能になる。その接続は、ミドルウェア・サーバへの接続であってもよいし、webサーバへの接続であってもよいし、メディア・デバイスへの直接的な接続であってもよいし、若しくは顧客がそこから通信を受けることが可能な任意のその他の通信手段への接続であってもよい。この接続は、ミドルウェア・サーバへのTCP/IPソケット接続として、IadviseSinkインタフェース等のOLEインタフェースとして、若しくはその他の任意の適切なプロセス間通信スキーマとして、確立されてもよい。チャネル・ドライバ120の各々は、通信チャネル130との接続を確立するのに必要な全ての情報を含んでおり、それにより、通信サーバ109は、通信チャネル130を別々に作動させる。
【0077】
図1−Bは、セッション・モード通信サーバ110の一実施例の詳細図を示している。セッション・モード通信サーバ110は、接続されているクライアント104(この場合は、webブラウザ・クライアント104A)の知識を保持している。ACDスイッチ130E等の通信チャネル130からの通信を受取ると、通信サーバ109は、実行のためにクライアント/サーバ・システム内の適切なサーバ構成要素に要求を発信する。
【0078】
セッション・スレッド122は、エージェントがwebブラウザ・クライアント104Aを用いてクライアント/サーバ・システム100と対話する際のセッションを表している。顧客は、通信チャネルにアクセスするのに顧客の通信装置(ここでは、電話)を用いる。同様にして、エージェントは、通信チャネルにアクセスするために電話ヘッドセット等の通信装置を用いる。
【0079】
セッション・スレッド122は、webブラウザ・クライアント104Aからの入力を待って(listen)、ACDスイッチ・ドライバ120Dからwebブラウザ・クライアント104Aへのイベント通知を発信する。セッション・スレッド122は、ACDスイッチ・ドライバ120Dと対話するのに通信チャネル・マネージャ124等の通信チャネル・マネージャを利用する。各チャネル・ドライバ120は、クライアントと関連の通信チャネルとの間に、例えば、アクティブな接続133等のアクティブな接続を提供する。チャネル・ドライバ120は、クライアント104と通信チャネル130Eとの間にインタラクティブな通信のために持続的な接続を確立するように実装されてよいが、持続的な接続を設けることを通信APIが必要としているわけではない。
【0080】
以下の例は、開始、初期化、及び動作の際に、webブラウザ・クライアント104Aが従うプロセスを説明している。webブラウザ・クライアント104Aに対するこのプロセスは、以下で更に詳しく説明がされる他の種類のクライアントに適用することも可能である。
【0081】
webブラウザ・クライアント104Aが実行を開始する場合には、
1.Webブラウザ・クライアント104Aは、webサーバ188から、ツール・バー105(ここでは、Javaアプレット116を利用して実装されているのが示されている)等のwebブラウザのディスプレイ上のユーザ・インタフェースを生成するために、プログラム命令をダウンロードする。更に、webサーバ188が連続的にwebブラウザ・クライアント104Aに情報を提供できるように、Javaアプレット116は、Javaアプレット116とwebサーバ188との間に持続的なHTTP接続を確立する。
【0082】
2.Webブラウザ・クライアント104Aは、webエンジン・セッション・スレッド166を介して、セッション・モード通信サーバ110とインターフェースをとる。オブジェクト・マネージャ107は、webエンジン・プラグイン185及びwebエンジン115を利用して、webブラウザ・クライアント104Aとインターフェースをとるためのwebエンジン・セッション・スレッド166を生み出す。通信クライアント・サービス160によって、webブラウザ・クライアント104Aのユーザ・インタフェースに関連する全ての通信が提供される。
【0083】
3.通信クライアント・サービス160は、オブジェクト・マネージャ107に通信サービスを要求する。ユーザ・インタフェースに関連しない通信の全てを提供する通信サービス113が提供される。
【0084】
4.通信サービス113は、コマンド、イベント、エージェントの情報及び優先度、チャネル・ドライバ情報、並びにチャネル・ドライバ・パラメータ等の構成情報をロードする。
【0085】
5.通信サービス113は、非同期のイベントを続けて受信した際に呼出される非同期イベント受信関数をオブジェクト・マネージャ107に登録する。この非同期イベント受信関数は、コールバック関数とも呼ばれる。非同期イベントの受信は、以下で更に詳しく説明される。
【0086】
6.通信サービス113は、オブジェクト・マネージャ107とwebエンジン・プラグイン185との間のアクティブな接続135A、及び通信サービス113とセッション・モード通信サーバ110との間のアクティブな接続135Bを要求する。持続的なHTTP接続131と、アクティブな接続135A及び135Bとによって、セッション・モード通信サーバ110がJavaアプレット116を利用しているツール・バー105にユーザ・インタフェースの変更を継続的に転送することが可能にされる。
【0087】
7.セッション・モード通信サーバ110は、通信要求に応じて、例えば、セッション・スレッド122等のセッション・スレッドを生み出す。
【0088】
8.セッション・スレッド122は、通信チャネル・マネージャ124を実行する。
9.通信チャネル・マネージャ124は、ACDスイッチ・ドライバ120Dをロードして、通信サービス113によって決定されたチャネル・ドライバ・パラメータを渡す。
【0089】
10.ACDスイッチ・ドライバ120Dは、ACDスイッチ130Eへのアクティブな接続133を確立する。チャネル・ドライバ120を実装するベンダによって、電話接続に関して、アクティブ接続133等の通信チャネル130への持続的な接続を提供するということが選択されてもよい。しかしながら、通信API125が持続的な接続を必要としているわけではない。
【0090】
エージェントが、webブラウザ・クライアント104Aを利用して、ツール・バー105上のボタンをクリックする等のコマンド実行を必要とする作業を実行する場合には、
1.通信クライアント・サービス160は、コマンドを呼出すために予めロードされているコマンド構成データを探索する。更に、それは、そのコマンドに関連するデータを収集して、通信サービス113にそのコマンド及びデータを渡す。
【0091】
2.通信サービス113は、通信チャネル・マネージャ124にそのコマンド及びデータを渡す。
【0092】
3.通信チャネル・マネージャ124は、次に、いずれのチャネル・ドライバ120がクライアントに要求されたコマンドを実行するかを決定して、実行のためにACDスイッチ(・ドライバ120D等のチャネル・ドライバ120にコマンド及びデータを渡す。
【0093】
4.ACDスイッチ・ドライバ120Dは、通信チャネル130にコマンドを発行する。この例では、ACDスイッチ・ドライバ120Dは、ACDスイッチ130Eにコマンドを発行している。
【0094】
ACDスイッチ・ドライバ120D等のチャネル・ドライバ120が、webブラウザ・クライアント104Aにイベント(ステータス・データ若しくは顧客呼出し等の入力イベント)を転送する必要がある場合には、
1.ACDスイッチ・ドライバ120Dは、イベントを受信して、そのイベントを通信チャネル・マネージャ124に転送する。このため、イベント転送のためにセッション・スレッド122での非同期の割込みが必要となる。
【0095】
2.通信チャネル・マネージャ124は、そのイベントを通信サーバ113に転送する。
【0096】
3.通信サービス113は、イベントを受信して、登録されている非同期イベント受信関数を実行する。
【0097】
4.登録されている非同期イベント受信関数は、ACDスイッチ・ドライバ120Dから送信されたイベントをオブジェクト・マネージャ107の内部に格納されているイベント・キューの中に挿入する。
【0098】
5.セッション・スレッド122内で実行されているフレーム・マネージャ(図示せず)が、イベント・キューからイベントを取出して、通信クライアント・サービス160を利用して登録されている非同期イベント受信関数を呼出す。
【0099】
6.通信クライアント・サービス160は、通信サービス113にそのイベントを処理するように依頼する。
【0100】
7.通信サービス113によってそのイベントが処理された後、通信クライアント・サービス160は、Javaアプレット116を用いて通信を継続して、ユーザ・インタフェースを変更するために、webブラウザを制御する。
【0101】
図1−Cは、要求モード通信サーバ140の一実施例に含まれる構成要素を示している。要求モード通信サーバ140は、要求に従った、通信チャネルを介した情報の配信処理を行っている。要求モード通信サーバ140の動作の一例としては、例えば、セッション・モード通信サーバ110が要求モード通信サーバ140に、代わりに多数のeメールを送信してくれるように要求を送信するといったのがあげられる。これによって、セッション・モード通信サーバ110は、自身ののリソースをユーザ・インタフェースの制御、コマンドの発行、及びイベントの処理に充てることが可能になる。
【0102】
サーバ・スレッド142等の要求モード・サーバ・スレッドは、要求モード通信サーバ140が実行を開始すると生成される。通信マネージャ152は、その要求に対するデータを収集するためにロードされる。要求モード通信サーバ140は、その要求を処理するための適切なチャネル・ドライバを決定して、通信チャネル・マネージャ156にeメール・ドライバ120Eをロードするように指示する。通信チャネル・マネージャ156は、要求及びデータをeメール・ドライバ120Eに発信して、eメール・ドライバ120Eは、その情報をeメール通信チャネル130Fに送信する。図1−Cに示されている実施例では、eメール・ドライバ120Eは、eメール・サーバ132を介してeメール・クラ(イアント134にeメールを送信する。
【0103】
要求モード通信サーバ140の動作の別の例として、オブジェクト・マネージャ107が、1以上のワーク・アイテムをUQシステム102から要求モード通信サーバ140に送信することが可能である。前の例と同様に、要求モード・サーバ・スレッドが生成されて、その要求に対するデータを収集するように通信マネージャ152がロードされる。要求モード通信サーバ140は、その要求を処理するための適切なチャネル・ドライバを決定して、通信チャネル・マネージャ156にeメール・ドライバ120E等の適切なドライバをロードするように指示する。通信チャネル・マネージャ156は、その要求及びデータをドライバに発信して、そのドライバは、その情報を通信チャネルに送信する。
【0104】
図1−Dは、着信通信受信機170の実装の一例を示している。着信通信受信機170の一実施例は、クライアントと接続せずに、若しくはクライアントの知識なしに、着信顧客サポート要求に対して機能するように設計されている。これは、少なくとも1のエージェントにユーザ・インタフェースを提供するように、クライアントと通信するセッション・モード通信サーバ110とは対照的である。一実施例では、着信通信受信機170が、後で処理するようにキューに保持可能であるファックス及びeメール等の顧客サポート要求を処理するのに対して、セッション・モード通信サーバ110が、可能な限り早急に処理する必要のある電話呼出し等の優先度の高いサポート要求を処理して、顧客応答時間を向上させている。別の実施例では、着信通信受信機170及びセッション・モード通信サーバ110が共に優先度の高いサポート要求を処理することが可能である。
【0105】
着信通信受信機170は、共通のソースから特定の種類の顧客サポート要求を「聞き取る(listen)」ために、eメール/ファックス・チャネル・ドライバ120F等のチャネル・ドライバ120を利用している。eメール・チャネル・ドライバ120Fは、特定のeメール・アドレス向けの全てのeメール・メッセージ、及び特定のファックス番号に送信された全てのファックスを処理する。エージェント間での重複を回避するために、着信通信受信機170は、UQシステム102と共に作動するように構成されてもよく、それにより、エージェントが着信顧客サポート要求(eメール173若しくはファックス175)に割当てられて、顧客サポート要求がクライアント等の割当てエージェントと関連のある構成要素、若しくは割当てエージェントを示す構成要素にルーティングされる。
【0106】
更に、着信通信受信機170は、初期化の際に、顧客サポート要求を受信した等のイベントを認識して、且つ認識したイベントを処理するべく対応するチャネル・ドライバ情報及びバックグラウンド・プロフィールを含むように、構成される。バックグラウンド・プロフィールは、eメール・アドレス、ファックス番号、及びwebチャット・エンドポイントのリスト等の1以上の監視メディア・オブジェクト(monitored media objects)を含んでいる。例えば、eメール通信チャネル130Gは、info@company.comに対するバックグラウンド・プロフィールを示しており、ファックス通信チャネル130Hは、ファックス番号1−800−123−4567に対するバックグラウンド・プロフィールを示している。
【0107】
着信通信受信機170は、顧客サポート要求等の着信イベントを処理するように、サーバ・スレッド174等のサーバ・スレッドを生成する。これは、セッション・モード通信サーバ110が、エージェントによって利用される各クライアント104に対して、セッション・スレッド122等のセッション・スレッドを生成するのと対照的である。次に、通信チャネル・マネージャ177が、指定されたバックグラウンド・プロフィールを用いてファックス・サービス・オブジェクト183A、eメール・サービス・オブジェクト183B、若しくは電話サービス・オブジェクト183C等のサービスを初期化する。
【0108】
eメール/ファックス・チャネル・ドライバ120Fが、例えば、新規のファックス175等の着信顧客サポート要求を受信すると、ファックス・チャネル・ドライバ120Fは、そのイベントを通信チャネル・マネージャ177に転送する。この転送によって、サーバ・スレッド174のアイドル状態が中断されて、そのイベントを処理するために、サーバ・スレッド174が、通信チャネル・マネージャ177を呼出す。通信チャネル・マネージャ177は、EVTRESPテーブル等のイベント応答テーブル内に含まれるイベント応答に基づいて、そのイベントにどのように応答するかを決定して、ファックス・サービス・オブジェクト等183A等の適切なメディア・サービスを呼出す。イベント応答によって、UQシステム102へのイベント通知が指定されている場合、このイベントは、UQビジネス・サービス106を介してUQシステム102に渡される。イベント通知への応答は、UQビジネス・サービス106を介して着信通信受信機170に返される。
【0109】
代替実施例では、クライアント/サーバ・システム100が、webブラウザ・クライアント104Aとは異なるハードウェア/ソフトウェア構成を備えている多種類のクライアント104をサポートしていてよい。図1−Eは、webブラウザ・クライアント104A、シン・クライアント104B、及び専用クライアント104Cをサポートしている一代替実施例を図示している。
【0110】
シン・クライアント104Bは、エージェントが利用するクライアント・コンピュータ・システム上にインストールされて、実行される1以上のクライアント・ソフトウェア・モジュールを含んでいる。シン・クライアント104Bによって提供されるのは最低限の機能性であり、シン・クライアント104Bの機能の大部分は、アプリケーション・サーバ126で実行される。たいていの場合は、アプリケーション・プログラムの更新を、各シン・クライアント104Bに対して複数回行う代わりに、中央部分で一度で行ってしまうように、シン・クライアントを利用するのが望ましい。
【0111】
シン・クライアント104Bは、webブラウザ・クライアント104Aよりも、より多くの機能をクライアント側に提供して、例えば、オブジェクト・マネージャ107のいくつかの機能を実行する等ということが可能である。更に、シン・クライアント104Bは、ツール・バー105を含むユーザ・インタフェースを制御することも可能である。クライアント側で実行される機能を変更する必要がある場合には、個々のエージェントのコンピュータ・システムの各々にシン・クライアント104Bの新規のコピーがインストールされる必要がある。
【0112】
専用クライアント104Cは、エージェントを支援するのに必要な機能を実行するほとんどの部分を実行するソフトウェア・モジュールを含んでいる。専用クライアントは、「シン・クライアント」という名称と対照的に「ファット・クライアント」と呼ばれる場合もある。専用クライアント104Cによって提供される機能性に変更が必要な場合には、専用クライアント・ソフトウェア・モジュールの新規のコピーは、通常、クライアント・コンピュータ・システム上にインストールされる必要がある。
【0113】
専用クライアント104Cによって提供される機能性は、シン・クライアントによって提供されるものよりもさらに多く、例えば、オブジェクト・マネージャ107、webサーバ188、通信クライアント・サービス160(図1−B参照)、及び通信サービス113により提供される全ての機能性が含まれる。専用クライアント104Cは、ユーザ・インタフェース及びツール・バー105に対する負担を全て引受けているので、専用クライアント104Cと、通信サーバ109、webサーバ188、webエンジン・プラグイン185、及びwebエンジン115(図1−B参照)との間で通信は行われない。専用クライアント104Cは、UQシステム102とのインタフェースをとることが可能なwebサーバ149と、及びチャネル・ドライバ130と通信するオブジェクト・マネージャ151とを含んでいる。
【0114】
クライアント104A、104B、及び104Cとは異なるハードウェア及びソフトウェアの構成要素を備えた別の種類のクライアントも、同様にしてクライアント/サーバ・システム100に組込むことが可能であることに留意する必要がある。
【0115】
(通信API)
次に、図1−F乃至図1−Jを参照すると、通信サーバ109と通信するためのチャネル・ドライバ120に対する本発明の一実施例において、通信APIが提供されている。通信サーバ109は、以下の通信API125の説明で、セッション・モード・サーバ110、要求モード通信受信機サーバ140、若しくは着信通信受信機170を示して用いられていることに留意されたい。
【0116】
図1−Fに示されているように、通信APIの一実施例では、3種類のオブジェクト:ドライバ・オブジェクト189、サービス・オブジェクト183、及びクライアント・オブジェクト179を含んでいる。ドライバ・オブジェクト189及びサービス・オブジェクト183は、チャネル・ドライバ120でインスタンス生成がなされるが、クライアント・オブジェクト179は、通信サーバ109でインスタンス生成がなされる。通信サーバ109は、ドライバ・オブジェクト189及びサービス・オブジェクト183とのインタフェースをとるが、サービス・オブジェクト183だけがクライアント・オブジェクト179と通信する。
【0117】
ドライバ・オブジェクト189は、サービス・オブジェクト183のインスタンシエーションを保持する。ドライバ・オブジェクト189内で、サービス・オブジェクト183を構築(construct)及び破棄(destruct)するために任意の特定ステップが実行されてもよい。異なる種類のメディアを管理するために、複数のドライバ・オブジェクト189が含まれてもよい。更に、単一のドライバ・オブジェクト189によって、1種類のサービス・オブジェクト183が管理されてもよいし、或いは多種類のサービス・オブジェクト183が管理されてもよい。例えば、単一のドライバ・オブジェクト189によって、電話、eメール、及びファックスのメディアを管理することが可能である。
【0118】
ドライバ・オブジェクト189の動作の一例では、通信サーバ109が起動されると、チャネル・ドライバ120データ・リンク・ライブラリ(DLL)がロードされる。通信サーバ109によって、ドライバ・オブジェクト189の構築を依頼するために、チャネル・ドライバ120内にCreateISCSDriverInstance()が呼出される。チャネル・ドライバ120は、通信サーバ109にドライバ・ハンドルを返す。チャネル・ドライバ120によって、ドライバ・オブジェクト189をどのようにして生成するかが決定される。ドライバ・オブジェクト189が既に存在している場合には、例えば、このチャネル・ドライバ120は、新規のドライバ・オブジェクトを生成する代わりに、単に既存のドライバ・オブジェクト189を渡すということも可能である。
【0119】
一実施例では、ドライバ・オブジェクト189によってサービス・オブジェクト183が生成されて、関連するメディア形式と対話するように、デバイス・コマンド形式の機能性が提供される。例えば、外部への呼出し、若しくは外部へのeメール送信が、サービス・オブジェクト183で実行される。サービス・オブジェクト183は、通常、単一の種類のメディアと関連付けられている。例えば、電話メディアに対するサービス・オブジェクト183があってもよいし、eメール・メディアにに対する別のサービス・オブジェクト183があってもよい。通信サーバ109は、デバイス・コマンドを呼出すために、直接的にサービス・オブジェクト183とのインタフェースをとる。
【0120】
通信サーバ109は、ドライバ・ハンドルの取得後、RequestService()関数を利用して特定のメディア形式に対するサービス・オブジェクト183を要求する。ドライバは、対応するサービス・オブジェクト183のハンドルを通信サーバ109に返す。次に、通信サーバ109は、このハンドルを直接的にInvokeCommand()関数に用いて、対応するサービス・オブジェクト183呼出し、特定の種類の機能を実行させる。
【0121】
通信サーバ109は、サービス・オブジェクト183のハンドルの取得後、サービス・オブジェクト183と対話するのにこのサービス・ハンドルを直接利用する。サービス・オブジェクト183は、ドライバ・オブジェクト189から機能を継承すること、及び/又はドライバ・オブジェクト189とリソースを共有することが可能である。例えば、ドライバ・オブジェクト189が、通信チャネル130のミドルウェア・サーバへの物理的なTCP/IP接続を確立及び保持することが可能である場合に、サービス・オブジェクト183は、その接続をドライバ・オブジェクト189と共有することが可能である。
【0122】
クライアント・オブジェクト179は、通信サーバ109によってインスタンス生成されて、実行される。クライアント・オブジェクト179のハンドルは、サービス・オブジェクト183に渡される。サービス・オブジェクト183は、このクライアント・ハンドルを利用して、通信サーバ109で実行される関数を呼出すことが可能である。
【0123】
一実施例では、全てのサービス・オブジェクト183は、対応するクライアント・オブジェクト179を有している。それゆえに、各クライアント・オブジェクト179は、その対応するサービス・オブジェクト183が利用するメディア形式の知識を有している。サービス・オブジェクト183は、種々のメディアに対して、種々のドライバDLLから各々、インスタンス生成されてよいので、この1対1の関係によって、クライアント・オブジェクト179が、サービス・オブジェクト183から通知を受信した際に、通知を開始するドライバ・オブジェクト189及びサービス・オブジェクト183を認知することが可能になる。
【0124】
図1−Gは、チャネル・ドライバ120によってインスタンス生成されたドライバ・オブジェクト189に対するアーキテクチャの一例を示している。ドライバ・オブジェクト189によって、eメール等の同一メディア形式の3つのサービス・オブジェクト183A−1、183A−2、及び183A−3が生成される。各サービス・オブジェクト183A−1、183A−2、及び183A−3は、自分専用のクライアント・オブジェクト179A−1、179A−2、及び179A−3を各々、有している。
【0125】
図1−Hは、異なるメディア形式に対して3つのサービス・オブジェクト183A、183B、及び183Cを生成するドライバ・オブジェクト189に対する代替的なアーキテクチャを示している。各サービス・オブジェクト183A、183B、及び183Cは、対応するメディア形式のイベントを処理するように、自分専用のクライアント・オブジェクト179A、179B、179Cを各々、有している。このアーキテクチャの一例が図1−Dに示されており、それは、ファックス・メディアを処理するためのクライアント・オブジェクト179A、eメール・メディアを処理するためのクライアント・オブジェクト179B、電話メディアを処理するためのクライアント・オブジェクト179Cを含む着信通信受信機170に関するものである。クライアント・オブジェクト179A、179B、及び179Cは、ファックス・サービス・オブジェクト183A、eメール・サービス・オブジェクト183B、及び電話サービス・オブジェクト183Cに各々、対応している。
【0126】
図1−Iは、チャネル・ドライバ120内でインスタンス生成される2つのドライバ・オブジェクト189A、189Bを示している。各ドライバ・オブジェクト189A及び189Bは、異なるミドルウェア・サーバに対して指定されており、ミドルウェア・サーバに依存したリソースを含んでいる。例えば、ドライバ・オブジェクト189Aが、ミドルウェア・サーバAへの接続にTCP/IP接続を利用していてもよいし、ドライバ・オブジェクト189Bが、ミドルウェア・サーバに直接接続されていてもよい。各ドライバ・オブジェクト189A、189Bの下で生成されるサービス・オブジェクト183は、ドライバ・オブジェクト189A、189Bが関連しているミドルウェア・サーバに依存する。
【0127】
ミドルウェア・サーバからドライバ・オブジェクト189への非同期イベント通知の実装に関しては、以下を含む複数の代替実施例が存在する。
【0128】
1.従来式のTCP/IPソケット。ドライバ・オブジェクト189は、ミドルウェア・サーバのTCP/IPポートに接続する。イベントは、TCP/IP接続を通して送信される。
【0129】
2.OLEインタフェース。一例としては、OLEのIAdviseSinkインタフェース。
3.その他の任意のプロセス間通信スキーム。
【0130】
代替実施例1では、ドライバ・オブジェクト189がDLLとして実装可能であるので、ドライバ・オブジェクトDLLによって、イベントが到着するまでselect()の呼出しをブロックするリスニング・スレッド、若しくはイベント到着に関してミドルウェア・サーバを周期的にポーリングするポーリング・スレッドのいずれかが構築される。ポーリング周期は、何秒間若しくは何分間かに及ぶので、ポーリング・スレッドは、優先度の低いメディア形式(例.eメール、ファックス等)に対して有効である。ポーリング・スレッドは、電話呼出し等の優先度の高いメディア・イベントを検知するのには有効でない。なぜならば、着信呼出しの到着は、随時、報告されるのが望ましいからである。リスニング・スレッドは、発生するネットワーク・トラフィックがポーリング・スレッドよりも少なく、通常は、優先度の高いメディア及び優先度が低いメディアのいずれに対しても効果的であるが、ミドルウェア・サーバによっては、リスニング・スレッドをサポートしていないことがある。
【0131】
ポーリング・スレッド及びリスニング・スレッドを共に実行させるには、ドライバ・オブジェクトDLL内に「タスク」スレッドが必要となる。このタスク・スレッドは、図1−Jで示されているようなドライバ・オブジェクト189、若しくは図1−Kで示されているようなサービス・オブジェクト183の内部で実行され得る。
【0132】
図1−Jを参照すると、ドライバ・オブジェクト189内で実行されるタスク・スレッド(若しくはリッスン・スレッド)は、全てのサービス・オブジェクト183によって「共有」されてよい。例えば、このリッスン・スレッドは、全てのサービス・オブジェクト183に対する全ての着信イベントをリッスンすることが可能である。一度、リッスン・スレッドがイベントを受信すると、このリッスン・スレッドは、サービス・オブジェクト183に実装されているイベント処理関数を呼出して、実行する。
【0133】
図1−Kを参照すると、リッスン・スレッドがサービス・オブジェクト183の領域で実行されている場合には、全てのサービス・オブジェクト183が自分のリッスン・スレッドを構築しており、リッス・スレッドは共有されていない。リッスン・スレッドの各々は、異なるターゲットをリッスンしている。例えば、ユーザ1に対するリッスン・スレッドが第1内線(内線番号1234)上のイベントをリッスンしているのに対して、ユーザ2に対するリッスン・スレッドは第2内線(内線番号5678)上のイベントをリッスンしている。
【0134】
一実施例では、クライアント・オブジェクト179は、通信サーバ109によって実装されている関数ポインタの集合であり、非同期イベント通知のためにサービス・オブジェクト183に渡される。一実施例では、チャネル・ドライバ120内のリッスン・スレッドがイベントを受信すると、以下のプロセスが実行される。
【0135】
1.サービス・オブジェクト183が、対応するクライアント・オブジェクト179内に実装されているHandleEvent()関数を呼び出す。
【0136】
2.クライアント・オブジェクト179は、このイベントをメモリ・キャッシュにキューイングする。
【0137】
3.クライアント・オブジェクト179は、イベント到着を示すために、通信チャネル・マネージャ177に対するサーバ・スレッド174(図1−D参照)を中断するか、若しくは信号を送信する。一度、このプロセスが完了してしまえば、リッスン・スレッドは次のイベントを待つことになる。
【0138】
4.サーバ・スレッド174の次の周期の際に、メイン・スレッドによってメモリ・キャッシュ内に利用可能なイベントが認識される。それにより、メモリ・キャッシュからイベントがデキューされて取出され、プロセスが継続される。
【0139】
通信APIコマンド
通信API125は、クライアント/サーバ・システム100に組込み得るアプリケーションをサードパーティが開発することを可能にするコマンド及びデータの構造を含んでいる。このデータ構造は、エージェント・キー値要素、キー値パラメータ、及びストリング・パラメータ・リスト等のデータ要素を渡すための配列を含んでいる。
【0140】
以下は、通信API125で利用可能なランタイム・ステータス・フラグの例である:
NOTSUPPORTED = 1; コマンドはサポートされていない
DISABLED = 2; コマンドはこの時点で使用不可能である
CHECKED = 4; コマンドは「チェックされている」状態である。例えば、
エージェントが取込み中の状態である場合に、「取込み中」コマンドが「チェックされている」
BLINKING = 8; これは、「応答呼出し」コマンドの点滅(blinking)を可能にする特別な効果のフラグである
NOPARAMSOK = 16; コマンドは実行するのにいずれのパラメータも必要としない
STRPARMSOK = 32; コマンドは不特定のストリング・パラメータを1つ提供することによって実行可能である。そのようなコマンドは、エージェントが通信ツール・バー105のエディット・コントロール内に何かをタイプして対応するボタンをクリックすると呼出される。
【0141】
以下は、通信API125の一実施例で利用可能なコマンドの例である:
MediaType:MediaTypeコマンドは、チャネル・ドライバ120からメディア形式を提供するために利用される。以下の例のメディア形式ストリングのように、メディア形式のインジケータがCreateISCDriverInstance()関数でチャネル・ドライバ120に渡される。
【0142】
PHONECONTROL = 1
CALLROUTING = 2
EMAIL = 3
FAX = 4
WEBCALL = 5
WEBCHAT = 6
CommandTypeEx:チャネル・ドライバ120は、通信サーバ109から呼出しを行う、若しくはメッセージを送信する等の種々のサービスを要求するために、このCommandTypeEx関数を用いる。
【0143】
ObjectType:このObjectType関数は、以下のパラメータ値で示され得る通信オブジェクトのモニタリングに用いられる。
【0144】
OB_LINK = 1
SWITCH = 2
QUEUE = 3
TELESET = 4
DN = 5
AGENT = 6
CALL = 7
CALLROUT = 8
EMAIL = 9
FAX = 10
WEBCALL = 11
WEBCHAT = 12
OTHERS = 1000
ObjectProperty:この関数ObjectPropertyは、下記のようなモニタリングされる通信オブジェクトの特性を提供するのに用いられる。
【0145】
ONOFF = 1
AGENTID = 2
NOTREADY = 4
BUSY = 5
DESCRIPTION = 7
TIMEINQUEUE = 9
QUEUEID = 12

チャネル・ドライバ関数
一実施例では、各チャネル・ドライバ120内のドライバ・オブジェクト189は、以下の関数を含み得る:
FreeSCStrParamListは、最初にチャネル・ドライバ120によって割当てられたメモリを解放するために、通信サーバ109によって呼出される。
【0146】
RequestMediaTypeListは、チャネル・ドライバ120によってサポートされるメディア形式ストリングのリストを照会するために、通信サーバ109によって呼出される。それはメディア形式ストリングのリストであるmediaTypleListパラメータを含んでいてよい。
【0147】
FreeSCStrParamListは、メモリを解放するために、通信サーバ109によって呼出される。
【0148】
RequestCommandEventListは、チャネル・ドライバ120によってサポートされている特定のメディア形式に対して実行されるコマンド及びイベントのリストを生成するために呼出される。パラメータには、メディア形式を特定する入力パラメータ、及びコマンド及びイベントのリストを含む出力パラメータが含まれる。
【0149】
CreateISCDriverInstanceは、チャネル・ドライバ120を生成するために呼出される。以下のパラメータが利用されてよい。
【0150】
mediaTypeStr:特定のドライバの実装によって定義されるメディア・ストリング
languageCode:言語ストリング。例えば、英語は「ENU」、フランス語は「FRA」、ドイツ語は「DEU」、ブラジル系ポルトガル語は「Portuguese-Brazilian」、スペイン語は「ESN」、イタリア語は「ITA」、及び日本語は「JPN」。
【0151】
connectString:チャネル・ドライバ120に対する接続ストリング
datasetParams:構成(コンフィギュレーション)から収集されるパラメータ・リスト
handle:チャネル・ドライバ120によって返されるチャネル・ドライバ120のハンドル
RequestServiceは、チャネル・ドライバ120からサービス・オブジェクト183を要求する。以下のパラメータが利用されてよい。
【0152】
clntInterface:クライアント・オブジェクト179でのインタフェース
connectString:サービス・オブジェクト183に対する接続ストリング
datasetParams:構成(コンフィギュレーション)に基づいて収集されるパラメータ・リスト
serviceHandle:ドライバ120によって返されるサービス・オブジェクト183のハンドル
ReleaseISCDriverInstanceは、パラメータとして供給されるドライバ・ハンドルで特定されるドライバ・オブジェクト189を解放するために、通信サーバ109によって呼出される。
【0153】
サービス・オブジェクト関数
一実施例では、各チャネル・ドライバ120内のサービス・オブジェクト183は、以下の関数を含み得る:
ReleaseISCServiceInstanceは、サービス・オブジェクト・ハンドルを解放するために呼出される。
【0154】
NotifyEventHandlingFinishedは、イベント処理が完了したこと、及びドライバ・オブジェクト189によるプロセスの移動若しくは継続が可能であることをドライバ・オブジェクト189に通知するために、通信サーバ109によって呼出される。この関数は、HandleEventのnotifyWhenDoneパラメータに応答するのに呼出される。以下のパラメータが利用されてよい。
【0155】
Handle:サービス・オブジェクト183の識別子
trackingID:通信サーバ109がイベント処理を行っていたワーク・アイテムに対する識別子
result:チャネル・ドライバ120によってサポートされるメディア形式ストリングのリストのイベント処理照会の結果
InvokeCommandは、ドライバ・コマンドを呼出すために通信サーバ109によって呼出される。以下のパラメータ・リストが利用されてよい。
【0156】
Handle:サービス・オブジェクトの識別子
clntCmdTrackID:InvokeCommand要求に対する固有のID
name:呼出すためのコマンド名
stringParam:ツール・バー105上の「Phone#」エディット・ボックスからのストリング
datasetParam:構成(コンフィギュレーション)に基づいて収集されたパラメータ・リスト
InvokeCommandExは、所定の種類のコマンドを呼出すために通信サーバ109によって呼出される。以下のパラメータ・リストが利用されてよい。
【0157】
Handle:サービス・オブジェクトの識別子
clntCmdTrackID:このInvokeCommand要求に対して通信サーバ109によって決定される固有のID
commandType:通信サーバ109が実行を望んでいるコマンドの種類
datasetParam:通信サーバ109によって設定されている所定のパラメータ・リスト・セット
ReleaseWorkItemは、ワーク・アイテムの解放を要求するために、通信サーバ109によって呼出される。パラメータには、以下のものが含まれてよい。
【0158】
Handle:サービス・オブジェクトの識別子
TrackingID:ワーク・アイテムの識別子
SuspendWorkItemは、ワーク・アイテムを保留するようにサービス・オブジェクト183に要求するために、通信サーバ109によって呼出される。パラメータには、以下のものが含まれてよい。
【0159】
Handle:サービス・オブジェクト183の識別子
TrackingID:ワーク・アイテムの識別子
ResumeWorkItemは、ワーク・アイテムを再開するようにサービス・オブジェクト183に要求するために、通信サーバ109によって呼出される。パラメータには、以下のものが含まれてよい。
【0160】
Handle:サービス・オブジェクト183の識別子
TrackingID:ワーク・アイテムの識別子
HandleQueuedEventは、UQシステム102内に予めキューイングされているイベントを処理のためにサービス・オブジェクト183に渡すために、通信サーバ109によって呼出される。チャネル・ドライバ120は、これをミドルウェア・サーバからの入力メディア・イベントとして処理することが可能である。パラメータには、以下のものが含まれてよい。
【0161】
Handle:サービス・オブジェクトの識別子
name:イベント名(元のHandleEvent()呼出しから)
field:イベント属性リスト(元のHandleEvent()呼出しから)
trackingID:メディア・アイテムに対する固有のID
CancelQueuedEventは、メディア・イベントがUQシステム102によって取消し、解放、若しくは転送されたことをチャネル・ドライバ120に通知するために、通信サーバ109によって呼出される。この関数は、HandleQueuedEvent()の関連関数である。以下のパラメータが利用されてよい。
【0162】
Handle:サービス・オブジェクトの識別子
name:イベント名(元のHandleEvent()呼出しから)
trackingID:メディア・アイテムに対する固有のID

クライアント・オブジェクト関数
以下は、クライアント・オブジェクト179に含まれ得る関数の例である。これらの関数へのインタフェースは、ドライバ・オブジェクト189を通信サーバ109内のいずれのライブラリにもリンクする必要がないように、関数ポインタを用いて実装されてよい。
【0163】
ReleaseClientInstanceは、クライアント・オブジェクト189に、クライアント・オブジェクトのハンドルの解放をさせる。
【0164】
BeginBatch及びEndbatchは、ネットワーク・オーバヘッドを節約するように設計されている。BeginBatch及びEndBatchの間に呼出された関数は、キャッシュされて、EndBatch呼出しで送出することが可能である。これらの2つの関数は、ドライバ・オブジェクト189が自己の判断で利用することが可能である。例えば、
BeginBatch_Helper(clientInterface);
CacheCommandInformation_Helper(clientInterface,...);←キャッシュされる
;;;//何らかの処理
if(error)
HandleError_Helper(clientInterface,...);←キャッシュされる
HandleEvent_Helper(clientInterface,...);←キャッシュされる
EndBatch_Helper(clientInterface,...);←全ての要求が1つの要求で送出される
*/
HandleEventは、所定のフィールドを用いて、チャネル・ドライバ120から受信した名前の付けられているイベントを処理するのに利用される。このメソッドを呼出すことによって、チャネル・ドライバ120は、モニタリングしているテレセット上に呼出しが生じた等のイベントを、クライアント・オブジェクト179に通知する。以下は、パラメータ・リストである。
【0165】
Handle:サービス・オブジェクト183の識別子
name:イベント名
fields:イベント属性リスト
notifyWhenDone:TRUEに設定されている場合、イベント処理が行われるとすぐに、ドライバ120への通知のためにクライアント・オブジェクト179によってnotifyEventHandlingFinished()が呼出される。
【0166】
trackingID:例えば、呼出しID、eメールID、若しくはwebチャット・セッションID等の、このイベントが関連するワーク・アイテムを一意的に識別するID
ShowStatusTextは、クライアント・オブジェクト179のステータス・ラインにテキスト形式のステータス情報を表示する。以下のパラメータ・リストが利用されてよい。
【0167】
Handle:サービス・オブジェクト183の識別子
text:クライアントのステータス・バーに表示されるテキスト
HandleErrorは、非同期のエラーを処理して、それらをエラー・ログファイルに記録する。以下のパラメータが利用されてよい。
【0168】
Handle:サービス・オブジェクト183の識別子
clntCmdTrackID:0でない場合、InvokeCommand()の要求によって生じたエラーをそのまま反映するように、InvokeCommand()に渡されるのと同じ「clntCmdTrackID」の値である。0である場合には、原因不明(out of context)のエラーが生じている。
【0169】
error:エラー・テキスト
CacheCommandInformationは、クライアント・オブジェクト179にコマンド・ステータス・キャッシングに関する通知を行うのに用いられる。以下のパラメータが利用されてよい。
【0170】
commandNames:コマンド名のリスト
commandDescriptions:各コマンドに対する説明テキストのリスト
commandStatuses:各コマンドに対するステータス(CommandFlag)のリスト
UpdateObjectInformationは、クライアント・オブジェクト179にオブジェクトのステータス変更に関する通知を行うのに用いられる。以下のパラメータが利用されてよい。
【0171】
trackingID:この情報更新を生じさせた呼出しを一意的に識別するID
objectType:列挙されたObjectType値
objectID:このオブジェクトに対する固有のID。電話の場合は内線。eメールの場合はメール・ボックス。ファックスの場合はファックス番号。
【0172】
datasetInfo:更新するためのObjectProperty値のリスト。例えば、リスト{{"4","TRUE"},{"9", "33"}}は、ISNOTREADYの値がTRUEであり、TIMEINQUEUEの値が33秒であることを示している。
【0173】
IndicateNewWorkItemは、ドライバ若しくはミドルウェアがワーク・アイテムIDの変更機能をサポートしている場合に、クライアント・オブジェクト179に、新規の着信ワーク・アイテム(例えば、呼出し、eメール、若しくはファック)に関する通知を行う。以下のパラメータが利用されてよい。
【0174】
trackingID:新規のワーク・アイテムを特定するための固有のID
oldTrackingID:旧IDを特定するためのID
WorkItemStartedは、エージェントが1つの特定のワーク・アイテムに対して作業を開始したことをクライアント・オブジェクト179に通知する。これは、(1)エージェントが呼出しに応答して、その呼出しが接続された場合、若しくは(2)エージェントがeメール/ファックスのワーク・アイテムを受信した場合に発生する。それに応じて、クライアント・オブジェクト179が「trackingID」によって識別されるワーク・アイテムをアクティブなワーク・アイテムとして設定して、このワーク・アイテムのトラッキングを開始する。エージェントは、話し中若しくは作業中として扱われる。この作業の開始時間が、クライアント・オブジェクト179によって記録されてよい。以下のパラメータが利用されてよい。
【0175】
trackingID:このワーク・アイテムを特定するための固有のID
oldTrackingID:関数IndicateNewWorkItem()の説明を参照されたい。
【0176】
objectType:オブジェクトの種類
objectID:このワーク・アイテムに対するメディア・オブジェクト。電話の場合には、内線。eメールの場合には、メール・ボックス。
【0177】
description:ワーク・アイテムの説明。実装ドライバは、ワーク・アイテムの説明を変更するのにUpdateObjectInformationを利用することが可能である
startTime:ワーク・アイテムが開始された時間
WorkItemReleasedは、特定のワーク・アイテムが解放されたことをクライアント・オブジェクト179に通知する。これは、(1)エージェントが呼出しを解放して、呼出しの接続が切られた場合、若しくは(2)エージェントがeメール/ファックスのワーク・アイテムを完了した場合に発生する。それに応じて、クライアント・オブジェクト179は、このワーク・アイテムのトラッキングを停止して、このワーク・アイテムを除去する。
以下のパラメータが利用されてもよい。
【0178】
trackingID:解放されたワーク・アイテムを特定するための固有のID
stopTime:ワーク・アイテムが解放/停止された時間
CleanAllWorkItemsは、記憶されている全てのワーク・アイテムを除去する必要があることをクライアント・オブジェクト179に通知する。
【0179】
WorkItemSuspendedは、ワーク・アイテムが保留されたことをクライアント・オブジェクト179に通知する。これは、例えば、(1)エージェントが呼出しを保留にした場合、若しくは(2)エージェントがeメール/ファックスのワーク・アイテムを保留にした場合に発生する。実装ドライバは、保留が実行された際にこの関数を呼出す。それに応じて、クライアント・オブジェクト179は、この特定のワーク・アイテムの状況(context)を保存する。ワーク・アイテムを特定するために、trackingIDのパラメータが用いられてもよい。
【0180】
WorkItemResumedは、保留されていたワーク・アイテムが再開されたことをクライアント・オブジェクト179に通知する。これは、例えば、(1)エージェントが保留を解除して呼出しが再開された場合、若しくは(2)エージェントがeメール/ファックスのワーク・アイテムを再開した場合に発生する。ドライバ・オブジェクト189は、再開が完了した際に、この関数を呼出す。それに応じて、クライアント・オブジェクト179によって、作業状況(スクリーン+worktrackingオブジェクト)が復旧されて、アクティブなワーク・アイテムに「trackingID」によって識別されるワーク・アイテムが設定される。trackingIDのパラメータは、ワーク・アイテムを特定するのに利用されてもよい。
【0181】
本明細書でリストにされている関数の代わりに、若しくは付加的に、通信API125の中に別の関数及びパラメータが含まれてよいことに留意されたい。
【0182】
(汎用キューイング・システム)
UQシステム102によって、全ての形式のメディアに対する要求が、その要求がエージェントに割当てられるまで、キューイングされる。エージェントのログイン、タスクの完了、若しくはステート又は割当ての変更のいずれかによって、エージェントが利用可能になると、UQシステム102によって通信チャネルからエージェントにワーク・アイテムが転送され、且つ各キューからワーク・アイテムが除去される。一実施例では、複数のワーク・アイテムがエージェントにルーティングされた場合には、最初に到着したワーク・アイテムがそのエージェントに提出される。他のワーク・アイテムは各キューに返されて、その特定のワーク・アイテムを処理することができる次に利用可能なエージェントに再ルーティング/転送される。
【0183】
UQシステム102は、UQサーバ308を介してUQエンジン306とのインタフェースをとるUQリクエスタ304及びUQ受信機302を含んでいる。Webサーバ146は、UQシステム102を介してメッセージを受信するように、システム100の中に含まれていてよい。一実施例では、webサーバ146は、メッセージを受信して、それをEAIオブジェクト・マネージャ190に送信する。EAIオブジェクト・マネージャ190は、そのメッセージをパッケージ化して、それをUQビジネス・サービス106に転送する。EAIオブジェクト・マネージャ190を含んでいない別実施例では、このメッセージが直接的にUQビジネス・サービス106に送信され得る。
【0184】
UQビジネス・サービス
UQシステム102は、UQアプリケーション・プログラミング・インタフェース(UQ API)314を介してUQビジネス・サービス106及びwebサーバ146とのインタフェースをとる。UQビジネス・サービス106は、UQシステム102から受信した情報を通信サーバ109によって利用されるデータ構造の中に配置する。更に、UQビジネス・サービス106は、通信サーバ109からの情報をUQ API314によって認識及び利用されるデータ構造、コマンド、及びパラメータの中に配置する。
【0185】
一実施例では、UQビジネス・サービス106は、UQシステム102の初期化及び通信を行うための、括弧で示された入力及び出力のパラメータを利用する、以下の関数を含んでいる。
【0186】
UQOpenConnection(UQConfigurationName, Return)
通信サーバ109からメッセージを受信するために、UQビジネス・サービス106に、必要なUQ構成パラメータを提供する。全てのUQビジネス・サービス関数において、パラメータ「Return」は、復帰の際の関数のステータスを示している(例えば、「0」は、正常終了を意味する)。
【0187】
UQAssign(Return)
通信サーバ109と通信するために、UQビジネス・サービス106に、必要なUQ構成パラメータを提供する。
【0188】
UQInitRules(Return)
UQOpenConnectionが呼出されると、UQビジネス・サービス106によって、エージェント規則、ワーク・アイテム・エスカレーション規則等の規則を更新するかが決定される。この関数は、通信サーバ109を開始する際に呼出される。規則が送信される場合には、この関数によって、データ・テーブルからルート規則及びエスカレーション規則が読出されて、それらがパッケージ化されてUQシステム102に転送される。一度、UQシステム102に規則がダウンロードされてしまえば、それらの規則を修正する際には、UQReplaceRules関数が呼出される。
【0189】
UQReplaceRules(Return)
この関数は、例えば、通信サーバ109の動作中に、エージェント若しくはエスカレーション規則のセットが変更された場合のように、UQ規則の更新が必要なときに呼出される。
【0190】
UQDisconnect(Return)
UQシステム102とwebサーバ146との間の接続、及びUQシステム102と通信サーバ109との間の接続を終了させるように、UQシステム102に対して命令する。この関数は、UQシステム102のサービスがもはや不要になった際に呼出される。
【0191】
一実施例では、UQビジネス・サービス106は、更に、エージェントの初期設定及び保守のための以下の関数を含む。
【0192】
AgentLogon(AgentLogin, Return, AgentState)
この関数によって、エージェントはUQシステム102へのログインが可能になる。一度、ログインが成功してしまえば、エージェントはワーク・アイテムを受信可能な状態になる。AgentLoginパラメータは、通信サーバ109に割当てられたエージェント識別番号である。AgentStateパラメータは、関数が実行された後のエージェントの状態(ステート)を示す値が設定される。
【0193】
AgentLogout(AgentLogin, Return, AgentState)
この関数によって、エージェントはUQシステム102からログアウトが可能になる。
一度、ログアウトが成功してしまえば、UQシステム102は、このエージェントに対してワーク・アイテムをそれ以上キューイングしない。
【0194】
AgentInitAuxwork(AgentLogin, Output)
この関数は、現在のワーク・アイテムが全て終了した後に、エージェントをAuxWorkモードに設定するように、UQシステム102に対して要求する。AuxWorkモードでは、エージェントは、それ以上の作業を受取りはしないが、UQシステム102にログインした状態でとどまっている。
【0195】
AgentAvailable(AgentLogin, Return, AgentState)
この関数は、エージェントを利用可能ステータスに設定するように、UQシステム102に対して要求する。この利用可能状態では、このエージェントは、ワーク・アイテムを受信可能な状態になっている。
【0196】
RequestAgentMediaMode(AgentLogin, MediaType, Return,
AgentMediaMode)
この関数によって、クライアント104がエージェント・ステートを要求することが可能になる。
【0197】
ChangeAgentMediaMode(AgentLogic, Return, AgentMediaMode)
この関数によって、クライアント104がエージェントに対するメディア・モードを変更することが可能になる。
【0198】
ChangeAgentSkil(AgentLogin, Return)
この関数によって、クライアント104がエージェントのスキルを更新することが可能になる。エージェントのスキルが変更された後には、新しいエージェント・スキルに対して、この関数を用いてUQシステム102が更新される必要がある。
【0199】
RequestAgentState(AgentLogin, Return, AgentState)
UQシステム102に現在のエージェントのステートを報告するように要求する。
【0200】
RequestAgentWorkItemList(AgentLogin, Return, WorkItemID, MediaType, IsScheduledTask, ScheduleStartTime, ScheduleEndTime, AgentID, WorkItemState, WorkItemDataProperty)
エージェントによって現在処理されている全てのワーク・アイテムのリストを返すように、UQシステム102に対して要求する。
【0201】
RequestAgentWorkableList(AgentLogin, Return, WorkItemID, MediaType, IsScheduledTask, ScheduleStartTime, ScheduleEndTime, AgentID, WorkItemState, WorkItemDataProperty)
この関数は、エージェントが可能なワーク・アイテムのリストを返すように、UQシステム102に対して要求する。この関数は、エージェントがUQシステム102によって割当てられたワーク・アイテムではなく、特定のワーク・アイテムを選ぶことを望む場合に用いられる。
【0202】
RequestWorkItemAssignment(AgentLogin, WorkItemID, Return)
この関数は、もし可能ならば、エージェントに特定のワーク・アイテムを発信するように、UQシステム102に対して要求する。ワーク・アイテムが利用可能な状態で残っていれば、Returnパラメータ・コードはSUCCESSとなり、このワーク・アイテムは、通信サーバ109を介して配信される。
【0203】
RequestAgentMediaState(AgentLogin, Return, MediaType, AgentState, NumWorkItems)
この関数は、エージェントが処理可能な各メディアに対するメディア(チャネル・ステート)を報告するように、UQシステム102に対して要求する。
【0204】
一実施例では、UQビジネス・サービス106は、更に、ワーク・アイテムの初期設定及び保守のための以下の関数を含む。
【0205】
AddWorkItem(WorkItemID, MediaType, IsScheduledTask,
ScheduleStartTime, ScheduleEndTime, WorkItemDataProperty, Return)
この関数は、将来の発信のために、UQシステム102に特定のワーク・アイテムを付加するように、UQシステム102に対して要求する。
【0206】
RequestWorkItemState(WorkItemID, Return, WorkItemState)
この関数は、ワーク・アイテムの現在のステートを要求する。
【0207】
AcceptWorkItem(WorkItemID, Return)
この関数によって、クライアント104が、割当てられたワーク・アイテムが受入れられたことをUQシステム102に通知することが可能になる。結果として、ワーク・アイテムが受入れられたことを反映するように、UQシステム102によってエージェント・ステート及びワーク・アイテム・ステートが更新される。
【0208】
RejectWorkItem(WorkItemID, AgentLogin, Reason, Return)
この関数によって、クライアント104が、割当てられたワーク・アイテムが拒否されたことをUQシステム102に通知することが可能になる。結果として、ワーク・アイテムはキューに返されて、チャネルに対するエージェント・ステートは、AuxWorkに設定される。
【0209】
CompleteWorkItem(AgentLoginm WorkItemID, Return)
この関数によって、ワーク・アイテムの完了がUQシステム102に通知される。エージェントに対する次のステートは、Auto−Wrap設定に依存し、それは、ツール・バー105等のユーザ・インタフェースを介して設定することが可能である。Auto−WrapがTRUEである場合、このエージェントは、Wrapモードであり、ワーク・アイテムはwrapモードにある。Auto−WrapがFALSEである場合、このエージェントは、元の利用可能(Available)モードに設定される。
【0210】
HoldWorkItem(AgentLogin, WorkItemID, Return, WorkItemState, NewAgentState)
この関数は、ワーク・アイテム102を保留ステータスに設定するように、UQシステムに対して要求する。
【0211】
UnHoldWorkItem(AgentLogin, WorkItemID, Return, WorkItemState, NewAgentState) この関数は、ワーク・アイテム102を保留ステータスから解除するように、UQシステムに対して要求する。
【0212】
BlindTransferWorkItemToAgent(AgentLogin, WorkItemID, Return)
この関数は、ワーク・アイテムを他のエージェントに転送する。そのエージェントが利用可能でない場合に、このワーク・アイテムはそのエージェントに対してキューイングされてもよい。
【0213】
TransferWorkItemToAgent(AgentLogin, WorkItmeID, Return)
この関数は、ワーク・アイテムをエージェントに転送するように、UQシステムに依頼する。そのエージェントが利用可能でない場合に、UQシステム102は、そのワーク・アイテムが配信されなかったことを、要求してきたエージェントに通知してもよい。
【0214】
TransferWorkItemToRoute(AgentLogin, RouteID, Return)
この関数は、エージェントを、システム100(図1−A参照)によって規定されるルートに転送する。ルートは、ワーク・アイテムを処理するための特別の方法を示している。ワーク・アイテムをルートに転送することによって、ワーク・アイテムの特性、及びワーク・アイテムを処理するべき方法が再定義される。例えば、ワーク・アイテムが、最初は、ある領域内での知識を有するエージェントによって処理されるのが最適であると考えられていたとする。次に、別の領域内での知識を有するエージェントによって処理されるべきであると判明する。それゆえに、このワーク・アイテムは、ワーク・アイテムを処理可能なルートに転送される。
【0215】
一実施例では、UQビジネス・サービス106は、性能の統計データを報告するための以下の関数を含む。
【0216】
SetChannelStatInterval(Interval, Return)
この関数は、チャネルの実時間統計データの供給間隔を設定するのに用いられる。例えば、60秒等の所定のデフォルト値を用いることが可能である。統計データは、UQビジネス・サービス106に転送されて、テーブル内に記録される。
【0217】
StartAgentStat(Interval, Return)
この関数は、エージェントの統計データの転送を開始するのに用いられる。データは、エージェント統計データ・テーブルに記録される。
【0218】
StopAgentStat(AgentLogin, Return)
この関数は、エージェントの統計データの転送を終了するのに用いられる。
【0219】
一実施例では、UQビジネス・サービス106は、ワーク・アイテムを処理するための以
下の関数を含む。
【0220】
HandleWorkItem(AgentLogin, WorkItemID, MediaType, IsScheduleTask,
ScheduleStartTime, ScheduleEndTime, AgentLogin, WorkItemState,
DataProperty, MediaType, IsScheduleTask, ScheduleStartTime,
ScheduleEndTime, AgentLogin, WorkItemState, DataProperty, Return)
この関数は、ワーク・アイテムがエージェントに割当てらていることをクライアントに通知するために用いられる。
【0221】
HandleWorkItemStatus(WorkItemID, MediaType, IsScheduleTask,
ScheduleStartTime, ScheduleEndTime, AgentLogin, WorkItemState,
DataProperty, Return)
この関数は、ワーク・アイテムに対するステータスが変更されており、その結果としてクライアント104が必要な動作を行うことが可能であることをクライアント104に対して通知するのに用いられる。例えば、他のパーティがワーク・アイテムを放棄したために、ワーク・アイテム・ステータスが、警告から終了に変更される可能性がある。この場合に、クライアント104は、実行するのに何らかの準備動作を必要とする可能性もある。
【0222】
HandleAgentStateChange(AgentLogin, AgentState, Return)
この関数は、エージェントのステータスが変更されたことをUQクライアントに通知するのに用いられる。
【0223】
HandleRouteStatisticsRequest(RouteStat, TotalWorkItems,
AverageWatiTime, AverageServeTime, NlongesWaitTime, OperationMode, Return)
この関数は、ルート統計データ情報の到着をクライアント104に通知するのに用いられる。このメソッドは、入力統計データ情報の処理を、例えば、それをデータベースへの書込み等によって行う。
【0224】
HandleAgentStatisticsRequest(AgentLogin, TotalWorkItems,
AverageServeTime, AverageWrapTime, TotalAuxTime, TotalServingTime,
TotalLoginTime, TotalServedWorkItem, Return)
この関数は、エージェント統計データ情報の到着をUQクライアントに通知するのに用いられる。このメソッドは、入力統計データ情報の処理を行う。ほとんどの場合、その情報はデータベースに書込まれる。
【0225】
HandleError(MessageCode, Return)
この関数は、エラーを受信したことをUQクライアントに通知するのに用いられる。
【0226】
HandleAlarm(MessageCode, Return)
この関数は、警告を受信したことをUQクライアントに通知するのに用いられる。
【0227】
HandleJournal(WorkItemID, WorkItemDataProperty, AgentStateHist,
AgentLogin, AgentState, StartTime, EndTime, UQReasonCode,
AgentReasonCode, EscHist, SzStep, StartTime, EndTime, UQReasonCode,
AgentReasonCode, Return)
ワーク・アイテムが完了した際に、UQクライアントに送信されるワーク・アイテムの実行記録。UQクライアントは、その実行記録をデータベースに記録する。
【0228】
前記のリストは、UQビジネス・サービス106に含まれてよい関数の例である。付加的に、若しくはこれらの例の代わりに、別の関数が含まれてもよい。関数によっては、要求された関数が正常終了したかどうかが示し、且つ/又はUQシステム102、ワーク・アイテム、若しくはエージェントのステートを示すような、復帰コード及び/又はステート・コードを含んでいる。以下のリストは、前記の関数において、パラメータとして用いられるコードの例である。
【0229】
復帰コード
0 Success
1 Success_More_Status
2 Error_Uq_Initialized
3 Error_Uq_Not_Initialized
4 Error_Failed
5 Error_System_Wrong_Api
6 Error_System_Initialization_Failed
7 Error_Agent_Setting_Invalid_State
8 Error_Agent_Undefined
9 Error_Agent_Unable_To_Change_Skill
10 Error_Queue_Not_Initialized
11 Error_Queue_Undefined
12 Error_Queue_Capacity_Exceeded
13 Error_Workitem_Adding_Failed
14 Error_Workitem_Failed_Change_State
15 Error_Unknown_Media
エージェント・ステート
1 Available
2 Logout
3 Busy
4 AuxWork
5 InitAuxWork
メディア・モード
1 Available
2 Unavailable
3 Busy
4 Wrap_Up
動作理由コード
1 Setting_Invalid_State
2 Agent_Not_Available
3 Route_Undefined
ワーク・アイテム・ステート
1 Active
2 Wrap_Up
3 Alerting
4 Completed
5 Queued
6 Scheduled
7 On_Hold
8 Received
UQ構成
図1−A乃至図1−E及び図3を参照すると、クライアント104は、UQビジネス・サービス106内のUQOpenConnection関数を介してUQ構成を選択する。UQシステム102は、「UQ受信機サーバ名」及び「UQ受信機ポート」等の情報を用いて、応答をどこに送信するかを決定する。一実施例では、EAIオブジェクト・マネージャ190内の複数の受信機サーバ(図示せず)が、UQシステム102からメッセージを受信するように接続されてもよく、それにより、UQシステム102と通信する各受信機によって、UQOpenConnection関数内のUQ構成パラメータが送信される。
【0230】
表1は、UQシステム102内に記憶されており、UQOpenConnection関数を介して、通信サーバ109との通信の確立、及び通信サーバ109により要求される関数の実行に用いられるUQ構成テーブル内のパラメータの例が示されている。例えば、表1は、UQシステム102に対するホストを識別し、それとの通信を確立するためのパラメータを含んでいる。更に、表1は、ログイン後にauto−readyステートになっているか、ログイン後にauto−auxworkステートになっているか等のエージェント優先度に関するデフォルト設定も含んでいる。
【0231】
【表1】

【0232】
表2は、プロパティ情報(PropertyInfo)パラメータと呼ばれる、表1内のUQ構成テーブル内のパラメータのサブセットを示しており、それらは、UQビジネス・サービス106内に含まれる別の関数に用いられる。
【0233】
【表2】

【0234】
Webサーバ146は、EAIオブジェクト・マネージャ190への出力メッセージに対して適切なデータ転送プロトコルを利用してパッキング情報の処理を行う。
一実施例では、例えば、UQ API314へのメッセージ、及びそこからのメッセージの通信にHTTPが用いられる。Webサーバ146は、HTTPフォーマットの情報を、EUQビジネス・サービス106で使用されるようにAIオブジェクト・マネージャ190によってアンパッキングされる別の適切な転送プロトコルに変換する。別の実施例では、HTTPの代わりに、若しくは付加的に、当技術分野で公知の別のプロトコルが用いられてよい。
【0235】
UQルーティング
UQエンジン306は、各ワーク・アイテムを処理するためのルートを定義する。例えば、ワーク・アイテムが、コンピュータ・ネットワーキングの知識を備えたエージェントからの応答を必要とするファックスであった場合、UQエンジン306によって、コンピュータ・ネットワーキングのスキルを備えたエージェントを特定するルートが定義される。エージェントは、そのワーク・アイテムに応答することが不可能な場合にはTrasnferWorkItemToRoute(Route configuration Name)関数若しくはBlindTransferWorkItemToAgent(agentID)関数を用いてルート・キューにそのワーク・アイテムを転送することが可能である。エージェントがそのワーク・アイテムに応答するためには別のスキルが必要であると判定した場合には、転送を呼出す前に、そのワーク・アイテムが必要とするスキルを変更することも可能である。
【0236】
一実施例では、各々のルート・ポイントが特定のスキル要求を有する、複数のルート・ポイントが生成される。ワーク・アイテムが別のポイントに転送される場合に、転送するエージェントによって、例えば、ポップ・アップ・リストからルート・ポイントが選択されてよい。このリストには、全てのエージェント、若しくは全てのルート・ポイントのいずれかをリストするオプションが含まれていてよい。
【0237】
UQシステム・シナリオ
以下の例では、クライアントからの要求が、システム100の一実施例を通して、どのように処理されるかが示されている。
【0238】
[初期設定及び規則のダウンロード]
通信サーバ・バックグラウンド・モード・サーバ170は、クライアントをUQシステム102と接続するのにUQビジネス・サービス106内のUQOpenConnection関数を用いる。一実施例では、UQビジネス・サービス106を初期化するのに、デフォルトの構成を含め、2以上の構成が用いられる。このデフォルトのUQ構成パラメータは、他の構成が1つも指定されなかった場合に用いられる。UQOpenConnectionのUQプロパティ情報パラメータには、webサーバ146内での第1受信機サーバの位置を特定するPrimaryReceiverName及びPrimaryReceiverPortが含まれている。
【0239】
UQOpenConnectionは、webサーバ146内の複数の受信機サーバをUQシステム102に接続するように、複数回呼出すことが可能である。又、UQシステム102は、接続された受信機サーバへの全ての接続のリストを保持する。UQOpenConnectionが正常終了した後、エージェント・スキル情報と、エージェントのエスカレーティング及びルートの特定のための規則とをダウンロードするためにUQInitRules関数が呼出されてよい。一実施例では、UQInitRulesは、初期化の際に一度だけ呼出され、UQReplaceRulesは、一度初期化された規則を更新するのに用いられる。パラメータERROR_UQ_INITIALIZEDは、UQInitRulesが連続的に呼出された場合のエラーを示している。初期化が正常終了したかどうかのインジケータは、UQInitRules関数に関連するReturnパラメータで提供される。
【0240】
[エージェント・ログオン]
新規のエージェントは、新規のエージェントが存在することをUQシステム102に通知するように、ビジネス・サービス106を通してUQOpenConnectionを呼出す。次に、AgentLogon関数が、そのエージェントをUQシステム102に記録するように、UQビジネス・サービス106によって呼出される。UQビジネス・サービス106は、エージェント・スキル情報を含むメッセージをUQシステム102に送信する。
【0241】
複数の受信機サーバが接続されている場合、関数AgentLogonの各呼出しは、そのエージェントが関連付けられている受信機サーバに関する情報を含んでいる。更に、エージェント情報は、auto−available設定及びauto−wrap設定を含む情報も含んでいる。UQシステム102は、AgentLogonの呼出しが失敗した場合のエラー、若しくはログオン動作が正常終了した場合の新規エージェントのステートのいずれかを返す。
【0242】
[Eメール到着]
通信サーバ109は、eメール・メッセージを受信すると、メッセージを、そのメッセージを送信したクライアントに関する関連情報と共にUQビジネス・サービス106に送信する。UQビジネス・サービス106は、AddWorkItem関数を用いて、eメール・メッセージ及び関連情報をUQシステムに転送する。UQシステム102は、ワーク・アイテムを受取とるかどうかを決定して、webサーバ146、EAIオブジェクト・マネージャ190、及びUQビジネス・サービス106を介して通信サーバ109に応答を発行して、それにより、HandleWorkItem関数内のステータス・パラメータを利用して、ワーク・アイテムが受取られたかどうかが示される。
【0243】
[UQによるワーク・アイテムの配信]
UQシステム102は、ワーク・アイテムに対するエージェントを決定して、ワーク・アイテムがエージェントに割当てられたというメッセージを、そのエージェントに関連付けられている受信機サーバを介して通信サーバ109に送信する。次に、UQシステム102は、HandleWorkItem関数によって、そのエージェントに関連付けられている受信機サーバにメッセージを送信する。エージェントにメッセージを転送するように、UQビジネス・サービス106内のProcessEvents関数が呼出される。エージェントは、ワーク・アイテムを受信したことをUQシステム102に通知するために、WorkItemAccept関数を呼出す。
【0244】
[UQシステムによる警告若しくはエラーの発行]
UQシステム102が、通信サーバ109にエラー若しくは警告を通知するための1つのメソッドの一例として、通信チャネルの1つにより処理され得る要求の数が所定の閾値を超過してしまったとUQシステム102が判定した場合を仮定する。UQシステム102は、HandleError関数によって受信機サーバに復帰コードを送信して、それにより、キューの容量が超過してしまったことが示される。Webサーバ146は、メッセージを受信して、UQビジネス・サービス106内の「ProcessEvents」関数を呼出す。このエラー・メッセージは、記録されてもよく、又、要求を発行していた構成要素にブロードキャストされる。警告メッセージも同様の方法で処理される。エラー/警告は、視覚的に、聴覚的に、テキスト形式で、及び/又は当技術分野で公知の任意のその他の適切な手段を用いてブロードキャストされてよい。
【0245】
[UQシステムによる通信サーバへの統計データの送信]
システム100(図1−A参照)内のクライアント若しくは構成要素は、SetChannelStatInterval関数、StartAgentStat関数、及び/又はStopAgentStat関数によって、UQシステム102から通信チャネル、エージェント、及び/又はエージェントのルーティングに関する統計データを要求することが可能である。UQシステム102は、要求された統計データを生成して、それらをWebサーバ146に転送する。EAIオブジェクト・マネージャ190内の受信機サーバがそのメッセージを受信すると、その統計データの記録をとって、当技術分野で公知であるメッセージ・バー機構等のインタフェースを通してそれらをブロードキャストすることが可能である。連続的に、統計データを要求するようにエージェント構成を設定することも可能である。この統計データには、完了したワーク・アイテム、及びエージェント・キュー内にあるワーク・アイテムに関する情報が含まれ得る。
【0246】
[エージェントによるワーク・アイテムの受入れ]
エージェントがAuxWorkモードである場合、このエージェントは、ツール・バー105等のユーザ・インタフェースを通して、キューからワーク・アイテムを選択することが可能である。ワーク・アイテムが選択されると、UQシステム102は、ビジネス・サービス106内のRequestWorkableItemList関数によって通知される。そのワーク・アイテムが利用可能である場合には、この関数によって、復帰パラメータを通して選択に問題がないことが示されて、そのワーク・アイテムはHandleWorkItem関数によって配信される。そのエージェントに対して利用可能であるワーク・アイテムが存在しない場合には、このRequestWorkableItemList関数によって、エラー・インジケータが返される。
【0247】
[ルーティングの呼出し]
UQシステム102は、ルート要求を受信すると、ワーク・アイテムに割当てるエージェントを決定して、EAIオブジェクト・マネージャ190内のそのエージェントの受信サーバにその割当てエージェント及びワーク・アイテムが含まれるメッセージを送信する。UQシステム102が時間内に割当てるエージェントをみつけられなかった場合には、その要求は、UQエンジン306により実装されている待ちキューの中に配置される。市販されている多種多様のキューイング・エンジン306がUQシステム102内で利用されてよいことに留意する必要がある。
【0248】
[自動着信分配装置(ACD)とUQシステムとの対話]
図1−A乃至図1−D及び図3を参照すると、エージェントは、UQシステムと対話することなく、直接的にACDスイッチ130Eから呼出しを受信するように接続されてもよい。更に、エージェントは、ACDスイッチ130Eから呼出しを受信し、且つUQシステム102を介してその他のワーク・アイテムを受信するように接続されてもよい。この形式の構成は、補助作業モード(AuxWorkモード)と呼ばれる。エージェントが、ツール・バー105等のインタフェースを介して自分をAuxWorkモードに設定することも可能であるし、或いは、管理者が、そのエージェントをAuxWorkステートになるように構成することも可能である。
【0249】
AuxWorkモードの一実施例では、ACDスイッチ130Eによって、エージェントに呼出しが転送されて、そのエージェントは、その呼出しに応答する際にセッション・モード通信サーバ110に通知を行う。次に、セッション・モード通信サーバ110によって、その通知がUQシステム102に中継される。この時点で、UQシステム102は、例えば、本明細書で説明されているAgentInitAuxwork関数を用いて、セッション・モード通信サーバ110に、エージェントが呼出しを完了した後に、そのエージェントをAuxWorkステートに設定するように依頼する。
【0250】
エージェントが呼出しを完了すると、エージェントによって、セッション・モード通信サーバ110にその呼出しの完了が通知されて、次に、そのセッション・モード通信サーバ110によって、その呼出しの完了がUQシステム102に通知される。次に、UQシステム102は、エージェント構成内にあるメディア・チャネルに基づいてエージェントに割当てる適切なワーク・アイテムが存在するかどうかを決定する。ワーク・アイテムが利用可能である場合、そのワーク・アイテムは、EAIオブジェクト・マネージャ190内のエージェント受信機サーバを通してエージェントに送信される。エージェントは、そのワーク・アイテムが完了するとUQシステムに通知する。UQシステム102によって、エージェントに対するワーク・アイテムが1つも存在しないと判定されると、UQシステム102は、ACDスイッチ130Eを介して、エージェントのACDモードを呼出しの受信の継続が可能であると設定するように、セッション・モード通信サーバ110に通知する。
【0251】
エージェントをAuxWorkステートに設定するために、複数の代替実施例を利用することが可能である。例えば、エージェントは、AuxWorkステートをデフォルトにしてよい。そのエージェントによって処理される必要のある呼出しをACDスイッチ130Eが受信すると、UQシステム102が通知されて、次に、そのエージェントは、eメール要求への応答等のワーク・アイテムの処理を保留にして、その呼出しを受けるように通知される。その呼出しが完了すると、エージェントは、UQシステム102に通知を行い、保留中のワーク・アイテムの処理に戻る。
【0252】
[エージェント・ステートの変更]
ワーク・アイテムがエージェントに転送されると、このエージェントは、そのワーク・アイテムを受入れるように、AcceptWorkItem関数を呼出す。AceeptWorkItem関数の出力パラメータによって、新規のエージェント・ステート及びワーク・アイテム・ステートが、UQシステム102に通知される。エージェントがこのワーク・アイテムを完了させると、UQシステム102に新規のエージェント・ステート及びワーク・アイテム・ステートを通知するように、CompleteWorkItem関数が呼出される。
【0253】
完了の際に、エージェントがワーク・アイテムをまとめる(wrap up)ための時間を可能にするauto−wrapオプションがエージェントの構成テーブルに設定されてもよい。エージェントは、自分がwrap−upモードから抜けており、別のワーク・アイテムを受入可能であることを示すために、AgentAvailable関数を呼出すインタフェース・オプションを選択することが可能である。UQシステム102によって、ワーク・アイテムのステータスが完了に変更されて、AgentInitAuxWork関数が呼出されている場合には、エージェントがAuxworkステートに設定される。AgentInitAuxWork関数が呼出されておらず、そのエージェントが処理可能な別のワーク・アイテムがキュー内に存在していれば、エージェント・ステートは、BUSY(取込み中)に設定される。そうでない場合には、このエージェントは、Available(利用可能)ステートに設定される。
【0254】
[ワーク・アイテムの取消し]
エージェントにワーク・アイテムが割当てられた後で、且つエージェントがそのワーク・アイテムを受入れる前に、ワーク・アイテムが取消される場合が生じ得る。そのような状況は、例えば、呼出している人が待機中に電話を切ってしまった場合等に発生する。この場合に、UQシステム102は、HandleWorkItemStatusによって、クライアントにそのワーク・アイテムの取消しを通知して、且つそのワーク・アイテムが除去されたことを示すように、エージェントのユーザ・インタフェース・ディスプレイ上のボタンを点滅させる等のように信号が変更され得る。
【0255】
[PBX及びEメールではPBXに高い優先度を与える]
用語「機内交換機(PBX)」は、通常、公衆交換回線網へのアクセスを含む、加入者が所有する通信交換機のことを示している。eメール及びPBXワーク・アイテムがキューイングされると、UQシステム102は、ルート規則に規定される優先度を用いていずれのメディアが他のものよりも高い優先度を有しているか決定する。通常、クライアント構成は、PBXワーク・アイテムにeメールよりも高い優先度を与える。
【0256】
[ワーク・アイテム実行記録]
ワーク・アイテムが完了すると、UQシステム102は、HandleJournal関数によって、通信サーバ109にワーク・アイテム実行記録エントリを送信する。この実行記録エントリは、エージェント・ステート・ヒストリ及び/又はワーク・アイテムのワーク・アイテム・エスカレーション・ヒストリに関連しているかどうかを識別するための情報を含む。
【0257】
[システム障害]
UQシステム102とセッション・モード通信サーバ110との間の接続に障害が発生すると、UQシステム102は、セッション・モード通信サーバ110に関連付けられている全てのエージェントを除去して、且つ全てのワーク・アイテムを障害エラー・コードと共に「完了」に設定する。
【0258】
[複数の要求及び受信機]
UQビジネス・サービス106は、インスタンスが生成されると、送信側サーバ構成要素名及びワーク・フロー名を含むUQ構成をロードする。一実施例では、送信側サーバ構成要素は、クライアント104側からは見えない、EAIオブジェクト・マネージャ190である。EAIオブジェクト・マネージャ190のインスタンスが複数存在する場合、通信サーバ109は、その要求を通信サーバ109内の適切な構成要素にルーティングする。EAIオブジェクト・マネージャ190の複数のインスタンスの間の負荷を調整するように、ロード・バランサが含まれてもよい。
【0259】
UQクライアントによって送信される各ワーク・アイテムは、ワーク・アイテムと関連付けられているログイン及びクライアントのキーが含まれる。ワーク・アイテムの問題若しくはエージェント割当てのいずれかが原因でUQシステム102から同一のワーク・アイテムが返された場合には、その結果を所定のクライアントにルーティングするように、ログイン及びクライアントのキーが用いられる。
【0260】
[エージェントへのワーク・アイテムのブラインド転送]
エージェントは、ワーク・アイテムに応答することが不可能な場合に、若しくは別のエージェントによる応答がより適切であるとみなした場合に、BlindTransferWorkItemToAgent関数を用いて、そのワーク・アイテムを別のエージェントに転送することが可能である。転送相手のエージェントが転送されたワーク・アイテムを受取ることが不可能である場合、このワーク・アイテムはそのエージェントが利用可能状態になるまでキューイングされる。
【0261】
[エージェントへのワーク・アイテムの協議転送]
エージェントは、ワーク・アイテムに関して別のエージェントと協議するために、TransferWorkItemToAgent関数を呼出してワーク・アイテムを転送することが可能である。そのエージェントが協議不可能である場合、UQシステム102によって、そのエージェントに別のエージェントが利用可能な状態にないことを通知する。そのエージェントは、そのワーク・アイテムを保留にするか、再試行するか、若しくはそのワーク・アイテムをルートに送信するか選択することが可能である。
【0262】
[ルートへのワーク・アイテムの転送]
エージェントは、ワーク・アイテムをルートに沿って別のエージェントに転送することが可能である。これは、例えば、他のスキルを備えたエージェントによってより効果的に処理されるワーク・アイテムをエージェントが受信した場合等に、非常に効果的である。
【0263】
UQ API
一実施例では、本発明に従ったクライアント・サーバ・システム100(図1−A乃至図1−E参照)は、UQシステム102と通信するためのUQ API314を含んでいる。例えば、インタフェースは、UQビジネス・サービス106によって利用されているシンプリファイド・オブジェクト・アクセス・プロトコル(SOAP)から、UQシステム102で利用されている拡張可能なマークアップ言語(XML)フォーマットへ等のように、情報を1つのフォーマットに変換することが可能である。更に、UQ API314は、UQビジネス・サービス106及びUQシステム102で利用されている別の適切なフォーマットの間で情報の変換を行うことも可能である。或いは、システム100全体で同一のフォーマットを用いることも可能であり、それにより、UQ API314の必要性が除去される。UQ APIは、本願と同一日に提出され、同一の譲受人に譲渡された「Extensible Interface For Intermodule Communication」と題された、同時係属中の特許文献1(代理人整理番号M−11538)に説明されている。前記文献は、ここでの言及を以って本明細書の一部とする。
【0264】
一実施例では、エージェント・スキルの入力及び編集のためのユーザ・インタフェースが提供されている。エージェント・スキルのグラフィカル・ユーザ・インタフェース(GUI)は、本願と同一日に提出され、同一の譲受人に譲渡された「Communication Toolbar Supporting Muliple Communicaiton Channels of Different Media Types」と題された、同時係属中の特許文献2(代理人整理番号M−11528)に説明されている。前記文献は、ここでの言及を以って本明細書の一部とする。このエージェント・スキルGUIには、名前、従業員番号、ジョブ名、ログイン名、連絡先、スキル、及び各スキル・アイテムに関する専門技術レベル等を含むエージェント情報を選択、入力、及び編集するためのフィールドが含まれている。エージェント・スキルGUIを通して、クライアントによってエージェントのスキルが更新された後、UQシステム102内のエージェント情報を更新するのに、UQビジネス・サービス106内のChangeAgentSkill関数が用いられてよい。
【0265】
[UQ APIデータ構造]
図4−a乃至図4−mは、UQシステム102と通信サーバ109との間で情報を通信するためのUQ API314の一実施例で用いられるデータ構造が表現されたテーブルを示している。
【0266】
図4−aは、UQサーバ名、サーバ・ポート、受信機名、及び受信機ポート等のUQシステム102の構成パラメータが規定されるテーブルUQ_CFGを示している。図4−bは、構成の識別子、構成の名前等のUQシステム102に対する構成パラメータを含むテーブルUQ_CFG_PARAMを規定している。
【0267】
図4−cは、異なるメディア形式、優先度、及びその他の特性に対して規定された異なるルートに関連する情報に対して用いられる。更に、図4−dは、ルートのデータ優先度を規定している。ルートのこの特性は、1以上のルート特性によって規定され得る。例えば、e−メールは、「受信者」、「主題」、及びカテゴリを有し得る。ファックス・メールの場合は、「DNIS」及び「ANI」である。これらの特性は、スキルに変換可能である。例えば、「受信者」=「販売」は、「部門」=「販売」と変換することが可能である。別の例として、「DNIS」=「8000」は、「製品」=「NT」と変換可能である。
【0268】
図4−eは、ワーク・アイテムが所定時間、機能していない場合に、ワーク・アイテムの処理がどのようにエスカレートされ得るかが規定されている。各エスカレーション処理によって、ワーク・アイテムの処理方法が規定されている。概して、このエスカレーション処理は、ワーク・アイテムが機能する機会を増加させるように、必要なスキルを一般化する。
【0269】
図4−fは、各エスカレーション規則で必要なスキルを規定している。各規則によって、ワーク・アイテムに必要なスキルが一般化される。
【0270】
図4−gは、ルート・プロパティとスキルとの間のマップである。例えば、「DNIS」=「8000」は、「製品」=「NT」と変換可能である。これは、基本的には、各メディアに対して有り得るプロパティのリストである。例えば、eメールは主題、CC、及び受信者を有している。PBXはANI及び言語を有する。
【0271】
図4−hは、エージェントが可能な各メディア形式に対するエンド・ポイントの数(セッションの最大数とも呼ばれる)を示している。
【0272】
図4−i乃至図4−kは、各々、ルート、メディア、及びエージェント統計データ情報が格納されている。一実施例では、この統計データは、UQシステム102に渡されるUQ構成で特定される所定の時間間隔で、UQシステム102から通信サーバ109に送信される。エージェント若しくは管理者も、所望に応じて、通信サーバ109を介して統計データを要求することが可能である。「平均待機時間」等の、時間に依存する統計データもあるので、時間周期もデータの一部として含まれる。
【0273】
図4−Iでは、エラー・ログが格納されている。
図4−m乃至図4−pでは、各ワーク・アイテムの処理履歴が格納されている。
【0274】
その他のテーブルが、UQシステム102の一実施例に付加的に、若しくは図4−a乃至図4−pで示されるテーブルの代わりに含まれてよい。
【0275】
模範的なコンピューティング及びネットワーク環境
図5は、本発明に従ったクライアント/サーバ・システム100が実行されるネットワーク環境が図示されているブロック図である。図5に図示されているように、プライベート・ワイド・エリア・ネットワーク(WAN)若しくはインターネット等のネットワーク45は、クライアント35(1)乃至35(N)によってアクセス可能な多数のネットワーク化されたサーバ25(1)乃至25(N)を含む。通常、クライアント・コンピュータ35(1)乃至35(N)とサーバ25(1)乃至25(N)との間の通信は、公衆交換電話網(PSTN)、DSL接続、ケームル・モデム接続、若しくは広帯域中継線(例えば、T1若しくはOC3サービスを提供する通信チャネル)等の公的にアクセス可能なネットワークの上で行われる。クライアント・コンピュータ35(1)乃至35(N)は、例えば、サービス・プロバイダ等を通してサーバ25(1)乃至25(N)にアクセスする。これは、例えば、American OnLine(登録商標)、Prodigy(登録商標)、CompuServe(登録商標)等、若しくは同様のインターネット・サービス・プロバイダ(ISP)であってよい。通常、アクセスは、クライアント・コンピュータ35(1)乃至35(N)のうちの所定の1つの上で、ソフトウェア特定用途向けソフトウェア(例えば、ネットワーク接続ソフトウェア及びブラウザ)を実行することによって行われる。
【0276】
関連する、若しくは類似する一連の要素(例えば、サーバ及びクライアント・コンピュータ)の最後の要素をより単純に示すために(例えば、サーバ25(1)乃至25(N)、及びクライアント・コンピュータ35(1)乃至35(N))、図5のいくつかの例において、不定の識別子「N」が用いられていることに留意されたい。そのように不定の識別子を繰返し用いるのは、要素のそのようなシリーズのサイズの間に相関性があることを意味してのものではないが、そのような相関性が存在してもよい。不定の識別子をそのように用いているので、要素の各シリーズは、同じ不定識別子によって区切られている別のシリーズの要素と数が同じである必要はない。むしろ、各使用例では、「N」によって特定される不定は、同一の不定識別子が用いられている別の例と、同一若しくは異なる値が保持されていよい。
【0277】
1以上のクライアント・コンピュータ35(1)乃至35(N)及び/又は1以上のサーバ25(1)乃至25(N)は、例えば、メイン・フレーム、ミニ・コンピュータ、若しくは個人のコンピュータ・システムを含む、任意の適切な設計のコンピュータ・システムであってよい。そのようなコンピュータ・システムは、通常、システム・プロセッサと関連する揮発性メモリ及び非揮発性メモリとを備えているシステム装置、1以上のディスプレイ・モニタ及びキーボード、1以上のディスク・ドライブ、1以上の固定ディスク式記憶装置、及び1以上のプリンタを含む。これらのコンピュータ・システムは、通常、ローカル若しくはリモートに、1以上のユーザにコンピューティング・パワーを提供するように設計されている情報処理システムである。更に、そのようなコンピュータ・システムは、システム・プロセッサに接続されており、且つ特定の機能を実行する、1つ若しくは複数のI/Oデバイス(即ち、周辺機器)も含んでいる。I/Oデバイスの例には、モデム、音響及びビデオの装置、並びに特定用途向け通信デバイスが含まれる。ハード・ディスク、CD−ROMドライブ、及び光磁気ディスク・ドライブ等の大容量記憶装置も、組込式に、若しくは周辺装置として設けられてよい。クライアント・コンピュータ35(1)乃至35(N)に関する説明がなされている、そのようなコンピュータ・システムの一例が、図6において詳細が示されている。
【0278】
図6には、本発明を実行するのに適切であるコンピュータ・システム10のブロック図、及び1以上のクライアント・コンピュータ35(1)乃至35(N)の例が示されている。コンピュータ・システム10は、中央処理装置14、システム・メモリ16(通常は、RAMだが、ROM、フラッシュRAM、若しくは同様のものも含まれてよい)、入力/出力コントローラ18、オーディオ出力インタフェース22を介したスピーカ・システム20等の外部デバイス、シリアル・ポート28及び30、キーボード32(キーボード・コントローラ33とのインタフェースをとる)、ストレージ・インタフェース34、フロッピーディスク(フロッピー(登録商標))・ディスク38を受取る機能を有するフロッピー・ディスク・ドライブ36、並びにCD-ROM42を受取る機能を有するCD-ROMドライブ40等のコンピュータ・システムの主要なサブシステムを相互接続するバス12を含む。同様に、マウス46(若しくはシリアル・ポート28を介してバス12に接続されているポイント及びクリックを行うためのその他の装置)、モデム47(シリアル・ポート30を介してバス12に接続されている)、及びネットワーク・インタフェース48(バス12に直接接続されている)も含まれる。
【0279】
バス12は、前述のように、読出し専用記憶素子(ROM)又はフラッシュ・メモリ(いずれも図示せず)、及びランダム・アクセス・メモリ(RAM)の両方が含まれ得るシステム・メモリ16と中央処理装置14との間でのデータ通信を可能にする。通常、RAMは、その中にオペレーティング・システム及びアプリケーション・プログラムがロードされる主メモリであり、少なくとも16MBのメモリ空間の余裕がある。このROM若しくはフラッシュ・メモリは、いくつものコードの中でもとりわけ、周辺構成要素と対話する等の基本的なハードウェア動作の制御を行う基本入出力システム(BIOS)を含み得る。コンピュータ・システム10に常駐するアプリケーションは、概して、ハードディスク・ドライブ(例えば、固定ディスク44)、光学ドライブ(例えば、CD-ROMドライブ40)、フロッピー・ディスク装置36、若しくはその他の記憶メディア等のコンピュータによる読出しが可能なメディアを介して記憶及びアクセスがなされる。更に、ネットワーク・モデム47若しくはインタフェース48を介してアクセスがなされる場合には、アプリケーションは、アプリケーション及びデータ通信技法によって変調された電子信号の形態であってもよい。
【0280】
ストレージ・インタフェース34は、コンピュータ・システム10のその他のストレージ・インタフェースと同様に、固定ディスク・ドライブ44等の標準的なコンピュータによる読出し可能なメディアに接続して、情報を記憶及び/又は読出しすることが可能である。固定ディスク・ドライブ44は、コンピュータ・システム10の一部であってもよいし、若しくは分離していて別のインタフェース・システムを通してアクセスがされてもよい。シリアル・ポート28を介してバス12に接続されたマウス46、シリアル・ポート30を介してバス12に接続されたモデム47、及びバス12に直接接続されているネットワーク・インタフェース48等のように、その他の装置が多数、接続されてよい。モデム47によって、電話リンクを介したリモート・サーバへの直接的な接続、若しくはインタネット・サービス・プロバイダ(ISP)を介したインターネットへの直接的な接続が提供され得る。ネットワーク・インタフェース48によって、POP(point of presence)を用いたインターネットへの直接的なネットワーク・リンクを介して、リモート・サーバへの直接的な接続が提供され得る。ネットワーク・インタフェース48は、デジタル携帯電話接続、セルラー・デジタル・パケット・データ(CDPD)接続、デジタル衛星データ接続、若しくは同様のものを含む、無線技法を利用してそのような接続を提供することが可能である。
【0281】
多数のその他のデバイス若しくはサブシステム(図示せず)が同様の方法で接続されてよい(例えば、バーコード・リーダ、ドキュメント・スキャナ、デジタル・カメラ等)。逆に言えば、本発明を実施するのに、図6に図示されている全てのデバイスが存在している必要はない。図6に示されているようなコンピュータ・システムの動作は、当技術分野では公知であり、本願ではその詳細を説明しない。本発明を実行するためのコードは、1以上のシステム・メモリ16、固定ディスク44、CD−ROM42、若しくはフロッピー・ディスク38等のコンピュータ読出し可能メディア内に記憶されてよい。更に、コンピュータ・システム10は、任意の種類のコンピューティング装置であってもよく、パーソナル・データ支援(PDA)、ネットアプライアンス、Xウィンドウ端末若しくはその他のコンピューティング装置等が含まれる。コンピューティング装置上に提供されたオペレーティング・システム10は、MS−DOS(登録商標)、MS−WINDOWS(登録商標)、OS/2(登録商標)、UNIX(登録商標)、Linux(登録商標)、若しくはその他の公知のオペレーティング・システムであってよい。更に、コンピュータ・システム10は、例えば、NetscapeNavigator(登録商標)3.0、Microsoft Explorer(登録商標)3.0等のJavaスクリプト・インタラプタを備えたHTTP準拠webブラウザを含む、多数のインターネット・アクセス・ツールをサポートしている。
【0282】
更に、本明細書で説明されている信号に関して、当業者は、信号が第1ブロックから第2ブロックに直接的に転送されてもよいし、若しくは信号はブロックの間で変調(例えば、増幅、減衰、遅延、ラッチ、バッファ、反転、フィルタ、若しくはその他の変調)がなされてもよいことを理解するであろう。上述の実施例での信号は、1つのブロックから次のブロックに転送されるように特性が記述されているが、本発明の別の実施例では、信号の情報的な性状及び/又は機能的な性状がブロック間を転送される限りにおいては、そのような直接的な信号の転送の代わりに変調された信号が含まれてよい。第2ブロックでの信号入力は、含まれる回路の物理的な制限(例えば、回避不能な多少の減衰及び遅延等)に起因して、第1ブロックからの第1信号出力から生じる第2信号として、ある程度まではみなすことができる。それゆえに、ここで用いているように、第1信号から生じる第2信号は、第1信号を多少変化させたもの(回路の制限に起因するか、若しくは第1信号の情報的な性状及び/又は機能的な性状を変更しないその他の回路素子の通過に起因する)若しくは第1信号そのものを含んでいる。
【0283】
前記では、種々の構成要素が別の種々の構成要素(例えば、コンピュータ・システム10の構成要素として示されている種々の要素)の内部に含まれる実施例が説明された。そのようにして示されたアーキテクチャは、単に例にすぎず、同様の機能性を達成するその他多数のアーキテクチャによっても実施可能である点を理解されたい。要約して、且つ意味を明確にすると、同一の機能性を達成するための構成要素の任意の配置が効果的に「関連付け」られて、それにより、所望の機能性が達成される。それゆえに、特定の機能性を達成するように、本明細書で結び付けられている任意の2つの構成要素は、アーキテクチャ若しくは中間の構成要素には関わりなく、互いに「関連付け」られて、それにより所望の機能性が達成される。同様にして、そのように関連付けられた任意の2つの構成要素は、所望の機能性を達成するように、互いに「機能的に接続」されている、若しくは「機能的に結合」されていると見なすことができる。
【0284】
図7は、ネットワーク50が示されているブロック図であり、そこでは、コンピュータ・システム10がインターネット60に接続されており、インターネット60がクライアント・システム70及び80、及びサーバ90に接続されている。更に、インターネット60(例えば、インターネット(the Internet))によって、クライアント・システム70及び80と、サーバ90とを互いに接続することが可能である。コンピュータ・システム10に関して、コンピュータ・システム10からインターネット60への接続性を提供するのに、モデム47、ネットワーク・インタフェース48、若しくはその他の何らかの方法が用いられてよい。コンピュータ・システム10、クライアント・システム70、及びクライアント・システム80は、例えば、webブラウザ(図示せず)等を利用してサーバ90上の情報にアクセスすることが可能である。そのようなwebブラウザは、クライアント・システム70及び80と同様に、コンピュータ・システム10が、サーバ90をホストとするwebサイト・ページを表現する、サーバ90上のデータにアクセスするのを可能にする。インターネットを介したデータ交換に関するプロトコルは当業者には公知である。図7では、データ交換に関するインターネットの利用が示されているが、本発明は、インターネット若しくは何らかの特定のネットワーク・ベースの環境に制限されるものではない。
【0285】
図1、図2、及び図3を参照すると、コンピュータ・システム10上で実行されるブラウザは、例えば、HTTP「サービス」(例えば、WINDOWS(登録商標)オペレーティング・システムの下で)若しくは「デーモン」(例えば、UNIX(登録商標)オペレーティング・システムの下で)を実行可能なサーバ40に要求を渡すのにTCP/IP接続を利用している。そのような要求は、例えば、HTTPサーバとクライアント・コンピュータとの間で通信を行うのに用いることが可能なプロトコルを利用しているHTTPサーバとコンタクトをとることによって処理し得る。次に、このHTTPサーバは、通常、「webページ」をHTMLファイル形式で送信することによって、そのプロトコルに応答する。ブラウザは、そのHTMLファイルを翻訳して、ローカル・リソース(例えば、フォント及び色)を利用して、そのHTMLファイルの視覚的表現を形成し得る。
【0286】
前述の説明では、ブロック図、フローチャート、及び例示の使用を介して、本発明の種々の実施例が示されてきた。当業者には、各ブロック図の構成要素、フローチャートのステップ、並びに例を用いて図示された動作及び/又は構成要素が、多種多様のハードウェア、ソフトウェア、ファームウェア、若しくはそれらを任意に組合わせたものを用いて個別に且つ/又は集団で実行され得ることを理解するであろう。
【0287】
本発明は、完全な機能を有するコンピュータ・システムに関して説明されてきたが、当業者は、本発明が、種々の形態でプログラム製品として配布可能であり、本発明が、実際に配布を実行するのに用いられる特定の種類の単一ベアリング・メディアとは無関係に等しく適用されることを理解するであろう。単一ベアリング・メディアの例には、フロッピー・ディスク及びCD−ROM等の記録可能型メディア、デジタル及びアナログの通信リンク等の転送型メディア、並びに将来的に開発されるメディア記憶装置及び配信システムが含まれる。
【0288】
上述の説明は、本発明の例示が目的であり、制限することを意図したものではない。本発明の範疇に入る別の実施例も可能である。当業者は、本明細書に開示されている構成及び方法を提供するのに必要なステップを容易に実施することが可能であろう。又、当業者は、プロセスのパラメータ及びステップの手順が、例示のみを目的として提供されており、本発明の範疇内で所望の構成を達成するように変更及び修正がなされてもよいことを理解するであろう。本明細書に開示されている実施例の変更及び修正は、付随の請求項に記載されている本発明の精神及び範疇から外れずに、本明細書で示されている説明に基づいてなされてよい。

【特許請求の範囲】
【請求項1】
モジュール間通信のための方法であって、
各々が1つ以上のメディア形式による通信をサポートする複数のチャネルドライバのうちの第1チャネルドライバと、マルチチャネル・マルチメディア・通信キューイング・システムと通信するように構成された通信サーバとが、通信するステップを含み、前記通信サーバはコマンド定義を用いるように構成されており、前記第1チャネルドライバは、第1メディア形式としてのファクシミリを送信するように構成された第1通信チャネルに結合されており、
前記複数のチャネルドライバのうちの第2チャネルドライバと、前記通信サーバとが、通信するステップを含み、前記第2チャネルドライバは、第2メディア形式としての電子メールを送信するように構成された第2通信チャネルに結合されており、前記コマンド定義は、前記マルチチャネル・マルチメディア・通信キューイング・システムとインターフェイスするためのコマンドを含み、当該コマンドは、前記第1および第2通信チャネルの第1および第2メディア形式とはそれぞれ独立であり、前記第1および第2メディア形式は互いに異なり、
前記第1メディア形式による通信と前記第2メディア形式による通信とは、同一のチャネルドライバによってサポートされている、方法。
【請求項2】
各々が1つ以上のメディア形式による通信をサポートする複数のチャネルドライバのうちの第1チャネルドライバが通信サーバと通信するステップを含み、前記第1チャネルドライバは、第1メディア形式としてのファクシミリを送信するための第1通信装置とインターフェイスするように動作可能であり、
前記複数のチャネルドライバのうちの第2チャネルドライバが前記通信サーバと通信するステップを含み、前記第2チャネルドライバは、第2メディア形式としての電子メールを送信するための第2通信装置とインターフェイスするように動作可能であり、前記第1および第2メディア形式は互いに異なり、
前記通信サーバが、前記第1チャネルドライバと前記通信サーバとの間の、および、前記第2チャネルドライバと前記通信サーバとの間の通信をサポートするためのコマンド定義を用いるステップを含み、前記コマンド定義は、前記第1および第2チャネルドライバと前記通信サーバとをインターフェイスするためのコマンドを含み、前記コマンドは、前記第1および前記第2メディア形式から独立しており、
前記第1メディア形式による通信と前記第2メディア形式による通信とは、同一のチャネルドライバによってサポートされている、方法。
【請求項3】
更に、前記通信サーバが、メディア形式リストを要求するためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項4】
更に、前記通信サーバが、コマンド・イベント・リストを要求するためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項5】
更に、前記通信サーバが、ドライバ・オブジェクトを生成するためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項6】
更に、前記通信サーバが、サービス・オブジェクトを要求するためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項7】
更に、前記通信サーバが、ドライバ・オブジェクトを解放するためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項8】
更に、前記通信サーバが、イベント処理完了時に通知を発行するためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項9】
更に、前記通信サーバが、ワーク・アイテムを保留にするためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項10】
更に、前記通信サーバが、ワーク・アイテムを再開するためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項11】
更に、前記通信サーバが、キューイングされたイベントを処理するためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項12】
更に、前記通信サーバが、キューイングされたイベントを取消すためのコマンドを呼出すステップを有する、請求項1または2に記載の方法。
【請求項13】
更に、前記通信サーバが、キューイング・システムとのインタフェースをとるステップを有する、請求項1または2に記載の方法。
【請求項14】
更に、キューイング・システムが、通信サーバを検知するステップを有する、請求項1または2に記載の方法。
【請求項15】
更に、前記通信サーバが、第1または第2通信装置からの入力イベントを検知するステップを有する、請求項2に記載の方法。
【請求項16】
更に、前記通信サーバが、前記第1または第2通信チャネルからの入力イベントを検知するようにタスク・スレッドのインスタンスを生成するステップを有する、請求項1に記載の方法。
【請求項17】
更に、前記通信サーバが、前記第1または第2通信装置からの入力イベントを検知するようにタスク・スレッドのインスタンスを生成するステップを有する、請求項2に記載の方法。
【請求項18】
更に、
前記通信サーバが、前記第1または第2通信チャネルからの入力イベントを検知するステップと、
前記通信サーバが、前記イベントを処理するための関数を呼出すステップとを有する、請求項1に記載の方法。
【請求項19】
更に、
前記第1または第2通信装置のうちの1つからの入力イベントを検知するステップと、
前記イベントを処理するための関数を呼出すステップとを有する、請求項2に記載の方法。
【請求項20】
更に、前記通信サーバが、前記イベントをメモリ・キャッシュにキューイングするステップを有する、請求項18または19に記載の方法。
【請求項21】
更に、前記通信サーバが、前記イベントの到着を指摘するステップを有する、請求項20に記載の方法。
【請求項22】
更に、前記通信サーバが、前記イベントを前記メモリ・キャッシュからデキューイングして、前記イベントを処理するステップを有する、請求項21に記載の方法。
【請求項23】
請求項1〜22のいずれかに記載の方法を実現するためのコンピュータ命令を含む、コンピュータ読み取り可能な記録媒体。

【図1−A】
image rotate

【図1−B】
image rotate

【図1−C】
image rotate

【図1−D】
image rotate

【図1−E】
image rotate

【図1−F】
image rotate

【図1−G】
image rotate

【図1−H】
image rotate

【図1−I】
image rotate

【図1−J】
image rotate

【図1−K】
image rotate

【図2】
image rotate

【図2−a】
image rotate

【図2−b】
image rotate

【図2−c】
image rotate

【図2−d】
image rotate

【図2−e】
image rotate

【図2−f】
image rotate

【図2−g】
image rotate

【図2−h】
image rotate

【図2−i】
image rotate

【図2−j】
image rotate

【図2−k】
image rotate

【図2−l】
image rotate

【図2−m】
image rotate

【図2−n】
image rotate

【図2−o】
image rotate

【図2−p】
image rotate

【図2−q】
image rotate

【図2−r】
image rotate

【図2−s】
image rotate

【図2−t】
image rotate

【図2−u】
image rotate

【図2−v】
image rotate

【図2−w】
image rotate

【図2−x】
image rotate

【図2−y】
image rotate

【図2−z】
image rotate

【図2−aa】
image rotate

【図2−bb】
image rotate

【図2−cc】
image rotate

【図3】
image rotate

【図4−a】
image rotate

【図4−b】
image rotate

【図4−c】
image rotate

【図4−d】
image rotate

【図4−e】
image rotate

【図4−f】
image rotate

【図4−g】
image rotate

【図4−h】
image rotate

【図4−i】
image rotate

【図4−j】
image rotate

【図4−k】
image rotate

【図4−l】
image rotate

【図4−m】
image rotate

【図4−n】
image rotate

【図4−o】
image rotate

【図4−p】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2013−69336(P2013−69336A)
【公開日】平成25年4月18日(2013.4.18)
【国際特許分類】
【出願番号】特願2012−279285(P2012−279285)
【出願日】平成24年12月21日(2012.12.21)
【分割の表示】特願2008−118234(P2008−118234)の分割
【原出願日】平成14年3月29日(2002.3.29)
【出願人】(502320127)シーベル・システムズ・インコーポレイテッド (7)
【Fターム(参考)】