支援テレフォニーの概要

テレフォニーの重要な機能は、アシスト テレフォニーと呼ばれる機能の小さなセットです。 支援テレフォニーは、音声通話とメディア通話の確立を、テレフォニー機能専用のアプリケーションだけでなく、任意のアプリケーションで使用できるように設計されています。 言い換えると、Assisted テレフォニーを使用すると、アプリケーションは完全なテレフォニー API のサービスの詳細を知らなくても電話をかけられます。 テレフォニーは、ワープロ アプリケーション、スプレッドシート、データベース、個人情報マネージャー、およびその他の非テレフォニー アプリケーションに拡張されます。

基本的なテレフォニーの TAPI 2.x 支援テレフォニー機能の一覧については、「 TAPI クイック関数リファレンス」を参照してください。 TAPI 3.x では、 ITRequest インターフェイスを介した支援テレフォニーがサポートされています。

支援テレフォニーの有用性を次の例に示します。 スプレッドシート アプリケーションには、音声通話用に電話番号をダイヤルする機能を組み込むことができます。 アプリケーションが完全なテレフォニー API によって提供される詳細な呼び出し制御を必要としない限り、テレフォニー機能を提供する最も簡単で最も効率的な方法は、支援テレフォニーです。

スプレッドシート アプリケーションを使用した支援テレフォニー

支援テレフォニーと完全なテレフォニー API はさまざまな方法で使用および実装されるため、1 つのアプリケーション内で Assisted テレフォニー関数呼び出しとテレフォニー API 関数呼び出しを組み合わせて使用することはお勧めしません。

支援テレフォニーの使用

支援テレフォニー サービスを使用するアプリケーションは、TAPI によって一時的にキューに入れられている呼び出し要求のみを開始します。 要求受信者アプリケーションは、これらの要求を取得し、支援テレフォニー アプリケーションの代わりに実行します。 tapiRequestMakeCall 関数は、音声呼び出しの確立を要求します。 要求しているアプリケーションは、呼び出しを制御しません。

TAPI を使用すると、ユーザーは、これらのサービスごとに異なる、または同じ要求受信者アプリケーションを確立できます。 アプリケーションは lineRegisterRequestRecipient に登録することで要求受信者になり、パラメーター bEnable の値として TRUE が指定されます。 (FALSE を指定すると、アプリケーションは要求受信者として登録解除されます。これは、現在のセッションで受信者の職務が完了したと判断したときに実行する必要があります)。アプリケーションは、lineRegisterRequestRecipientdwRequestMode パラメーターで処理するサービスを選択します。 アプリケーションが tapiRequestMakeCall 要求を処理することを示すために、要求に使用できる値がLINEREQUESTMODE_MAKECALL。 複数のアプリケーションが同じサービスに登録されている場合は、優先度スキームを使用して、ユーザーが要求の処理に適したアプリケーションを選択できます。 この優先度スキームは、呼び出しのハンドオフと、レジストリの HandoffPriorities のファイル名の一覧に基づく着信呼び出しのルーティングに使用されるスキームと同じです。

呼び出し要求

支援テレフォニーは、テレフォニー対応アプリケーションに電話をかけるための使いやすいメカニズムを提供します。開発者がテレフォニーで十分に読み書きできるようにする必要はありません。

tapiRequestMakeCall 関数は、ユーザーと電話番号で指定されたリモート パーティとの間で音声通話を要求します。 要求は TAPI に対して行われ、そのような要求の受信者として登録されているアプリケーションに渡されます。 この受信者は、通話マネージャー アプリケーションです。

アプリケーションが要求を行った後、呼び出しは呼び出しマネージャー アプリケーションから完全に制御されます。これは、Assisted テレフォニー アプリケーションが呼び出しを管理できないためです。 テレフォニーとすべてのユーザー インターフェイス操作の複雑な側面はコール マネージャー アプリケーションによって処理されるため、テレフォニー対応アプリケーションを大幅に変更する必要はありません。 実際、この操作を組み込みのスクリプト言語から呼び出すことを許可するアプリケーションは、まったく変更する必要がない場合があります。

tapiGetLocationInfo 関数は、テレフォニー コントロール パネルの現在の場所パラメーターでユーザーが設定した国または地域コードと市区町村 (地域) コードをアプリケーションに返します。 アプリケーションは、この情報を使用して、電話帳のエントリまたはデータベース レコードに新しい番号が入力されたときに既定値としてこれらを提供するなど、適切な正規電話番号を作成するのに役立ちます。

受信者を要求する

支援テレフォニーを実行するには、2 種類のアプリケーションが必要です。 支援テレフォニー クライアント は、プレフィックス "tapi" を持つ関数を呼び出すことによって、支援テレフォニーを使用するアプリケーションです。このようなクライアント アプリケーションの例としては、 ダイヤル メニュー コマンドまたはツール バー ボタンを追加するスプレッドシートがあります。

支援テレフォニー サーバー は、"tapi" プレフィックス付き関数に対する別のアプリケーションの呼び出しに起因するテレフォニー API 関数を実行できるアプリケーションです。 このようなアプリケーションは、それ自体を支援テレフォニー サーバーと呼び、 lineRegisterRequestRecipient 関数を使用して 1 つとして登録します。

支援テレフォニーの機能 (プレフィックス "tapi" で始まる) は 、要求関数と呼ばれます。 これらの要求を処理する支援テレフォニー アプリケーション (支援テレフォニー サーバー) は、 要求受信者と呼ばれます。

支援されたテレフォニー要求の処理

要求が配信され、処理されるプロセスは次のとおりです。

  1. TAPI は、支援テレフォニー要求を受信すると、要求受信者 (つまり、その種類の要求を処理するために現在登録されているアプリケーション) をチェックします。 要求受信者が存在する場合、要求はキューに登録され、その要求のサービスに登録されている最も優先度の高いアプリケーションは LINE_REQUEST メッセージを送信します。 メッセージは、新しい要求が到着したことを要求受信者に通知し、要求のモードを示します。

  2. TAPI は、このような要求を処理する現在実行中のアプリケーションを見つけることができない場合は、それが可能として登録されているアプリケーションの起動を試みます。 この登録情報は、レジストリの HandoffPriorities に記録されます。 TAPI は、 HandoffPriorities セクションに一覧表示されている順序でアプリケーションの起動を試みます。 (次の手順を参照してください。

    現在登録されているアプリケーションがない場合、TAPI は HandoffPriorities の関連エントリで要求処理アプリケーションの一覧を調べます。 関連付けられた行がファイルに存在しない場合、そのファイルにアプリケーションがリストされていない場合、またはリスト内のどのアプリケーションも起動できない場合、要求はエラー TAPIERR_NOREQUESTRECIPIENTで拒否されます。

    要求受信者が起動されると (TAPI によって起動されたかどうかにかかわらず)、スタートアップ プロセス中に lineRegisterRequestRecipient を呼び出し、自身を要求受信者として登録することが義務付けられます。

  3. エントリに 1 つ以上のアプリケーションが一覧表示されている場合、TAPI は最初に一覧表示されたアプリケーション (最も優先度の高い) で始まり、 CreateProcess 関数を使用して起動を試みます。 アプリケーションの起動が失敗した場合、TAPI はリスト内の次のアプリケーションを起動しようとします。 アプリケーションが正常に起動すると、TAPI は要求をキューに入れ、要求がまだ要求受信者に通知されていない場合でも、アプリケーションに成功を示すメッセージを返します。

    要求受信者アプリケーションが起動されると、 lineRegisterRequestRecipient が呼び出され、 LINE_REQUEST メッセージが送信され、要求がキューに登録されていることを通知します。 何らかの理由で起動したアプリケーションが登録されない場合、アプリケーションがその種類の要求に登録されるまで、要求はキューに残り、キューに無期限に残ります。

  4. TAPI は、登録されているアプリケーションが既に実行されているか、正常に起動されていることを検出した場合、要求をキューに入れ、LINE_REQUESTメッセージをサーバー アプリケーションに送信し、関数呼び出しの成功を示すメッセージを Assisted テレフォニー アプリケーションに返します。 この成功メッセージは、要求が正常に実行されたことを示すのではなく、要求が受け入れられ、キューに入れられたことを示しています。

サーバー アプリケーションは、要求を処理する準備ができたら、 lineGetRequest 関数を呼び出します。 これにより、ダイヤルするアドレスなど、必要な情報を受信できます。 次に、呼び出しの実行に使用される TAPI 関数 ( lineMakeCalllineDrop など) を使用して要求を処理します。 lineGetRequest を呼び出すと、TAPI から要求が削除され、要求パラメーターがアプリケーションによって割り当てられた要求バッファーにコピーされます。 バッファーの内容のサイズと解釈は、要求モードによって異なります。

サーバーでは、要求の実行時に正しいパラメーターが使用されていることを確認する必要があります。 これを行うときは、次の手順に従います。

  1. 要求受信者は最初に、要求キューに要求が存在できることを通知する LINE_REQUEST メッセージを受け取ります。 これにより、アプリケーションは lineGetRequest を呼び出し、キューがドレインされるまで呼び出しを続けるか (要求が新しい呼び出しを行う場合)、または既存の呼び出しをドロップするように指示します。 このメッセージには、既存の呼び出しを削除する要求の場合を除き、要求のパラメーターは含まれません。
  2. 要求が新しい呼び出しを行う場合、Assisted テレフォニー サーバーは lineGetRequest 関数を使用して要求のパラメーターを含む完全な要求を取得します。 これで、サーバーには、ダイヤルする番号や要求の作成者の識別など、必要なすべての情報が含まれます。 ただし、最初に、サーバーはこの情報を格納するために必要なメモリを割り当てる必要があります。
  3. 最後に、サーバーは適切な TAPI 関数または関数のセットを呼び出して要求を実行します。

TAPI が要求受信者として機能するアプリケーションを起動できない場合、Assisted テレフォニー呼び出しは失敗し、エラー TAPIERR_NOREQUESTRECIPIENTを返します。

要求受信者の操作に関する注意事項

次の情報は、支援テレフォニー要求が処理されるシステムに関する情報です。

  • 既定のレジストリでは、 tapiRequestMakeCall の優先度リストに通話マネージャー アプリケーションを一覧表示する必要があります。 呼び出しマネージャー アプリケーションには、ユーザーが優先度を最も高く設定できるメニュー オプションを用意しておくと便利ですが、必須ではありません。
  • TAPI によって支援テレフォニー受信者アプリケーションが自動的に起動され、それがシステム内で唯一の TAPI アプリケーションである場合、このアクションは TAPI を初期化します。 Assisted テレフォニー受信者アプリケーションが、Assisted テレフォニー要求に登録する前に回線デバイスを初期化してシャットダウンした場合、TAPI もシャットダウンされ、支援テレフォニー要求は失われます。 また、起動された別の TAPI アプリケーションが初期化とシャットダウンを実行すると、支援テレフォニー要求が失われる可能性があります。