2

現在、Cisco IP Phoneシステムを使用して、コールセンターのエージェントに「インテリジェントな発信者ID」を提供するTAPIベースのアプリケーションを開発しています。電話がかかってきて、エージェントがワークステーションの「実際の」電話でそれを拾うと、ワークステーションのシステムトレイにあるアプリケーションが、電話のリモート側の番号を取得し、中央データベースを介して実行します。その番号がクライアント企業またはその担当者のいずれかに属していることがわかっているかどうかを確認します。その場合、エージェントが現在話している相手に関する情報(個人またはクライアントの場所の名前、会社、役職など)が表示されます。

Julmarの優れたATAPIライブラリを使用して、自分のキュービクルの電話を監視する概念実証を開発し、それをうまく機能させました。ただし、エージェントの電話には大きな違いがあります。それらは、1-800ハントラインに接続された追加の14のエクステンションを備えたサイドカーモジュールに接続します。

私が今抱えている問題は、通話が接続されているときだけでなく、アプリケーションが実行されているワークステーションの下に座っている、監視している単一の電話に接続されているときを知る必要があることです。現在、800回線すべてで回線状態の変化を確認できますが、監視している電話デバイスのアクションの直接の結果としてどの回線状態の変化があったかはわかりません。明らかに、電話の状態と回線の状態の変化を監視できますが、800ブロックで鳴っている2つの通話が、ほぼ同時に2人のエージェントによって受信された場合、どちらの電話がどちらの通話を受信したかわかりません。

この情報は、ATAPIでラップされていない場合でも、TAPIインターフェイスのどこかで利用できる必要があります。うまくいけば、以前にこれを行ったことがある人から、私が何を見るべきかについてのヒントをいただければ幸いです。

4

1 に答える 1

4

修正を見つけました。

ATAPIライブラリは、プラグインして行きたいだけの人には少し不誠実です。TapiLineのCallStateChangedイベントは、接続された呼び出しの通知を受け取るためにフックすると、EventArgsパラメーターとしてCallStateEventArgsを受け入れるデリゲートを使用します。ただし、CallStateEventArgsは基本クラスであることがわかります。機能しますが、すべての場合に完全ではありません。

呼び出しが接続されたときに実際にイベントに渡されるのは、ConnectedCallStateEventArgsインスタンスです。この派生クラスは、基本クラスの新旧のCallStateだけでなく、ConnectModes列挙型のMode読み取り専用フィールドを使用してCiscoドキュメントで参照されている「callstatemode」も公開します。

Ciscoドキュメントから、共有回線(800ブロックなど)を監視していて、その回線上の通話が、監視している回線インスタンスに関連付けられた電話によってピックアップまたは参加された場合、通話状態モードは次のようになります。 「LINECONNECTEDMODE_ACTIVE」。お使いの電話が通話の相手でない場合は、「LINECONNECTEDMODE_INACTIVE」です。回線が共有されていない場合、回線上の接続されたコールの接続モードはゼロになります(ATAPIライブラリでは「なし」。この値を取得した場合は、電話機がコールの当事者であると想定します)。

この追加情報を使用すると、回線に関連付けられている電話が実際に通話中であることを知ることができます。回線にアクセスできるTAPIインスタンスを使用して、監視しているすべての電話に対して、その特定の800ブロック回線に対して1つの回線インスタンスを取得するため、監視している2、3、または10台の電話のどれが電話を受けたかを知ることができます。1台のコンピュータ/TAPIインスタンスで複数の電話を監視していない場合、および/または監視している電話で通話がアクティブになっていない場合、どの電話に通話があるかわかりませ。お使いの携帯電話がそうではないということだけです。

私にはそれで充分です; エージェントは、誰と話しているのかを知る必要があるだけで、他の誰と話しているのかを知る必要はありません。800ブロックの電話20台すべてを監視するフロアマネージャーのデスクのアカウントが必要な場合は、後で処理できます。

于 2012-12-13T18:18:49.980 に答える