Request オブジェクト

[Microsoft エージェントは Windows 7 の時点で非推奨となり、以降のバージョンの Windows では使用できない場合があります。]

サーバーは、一部のメソッドを非同期的に処理します。 これにより、メソッドの完了中にアプリケーション コードを続行できます。 クライアント アプリケーションがこれらのメソッドのいずれかを呼び出すと、コントロールは 要求の Request オブジェクトを作成して返します。 Request オブジェクトを使用すると、オブジェクト変数を メソッドに割り当てることで、メソッドの状態を追跡できます。 Visual Basic で、最初にオブジェクト変数を宣言します。

   Dim MyRequest as Object

VBScript では、宣言に変数型を含めないでください。

   Dim MyRequest

また、Visual Basic の Set ステートメントを使用して、メソッド呼び出しに変数を割り当てます。

   Set MyRequest = <i>agent</i>.Characters("<i>CharacterID</i>").<i>method</i> (<i>parameter</i>[s])

これにより、 Request オブジェクトへの参照が追加されます。 Request オブジェクトは、これ以上参照がない場合に破棄されます。 Request オブジェクトを宣言する場所とその使用方法によって、その有効期間が決まります。 オブジェクトがサブルーチンまたは関数に対してローカルに宣言されている場合、スコープ外になると破棄されます。つまり、サブルーチンまたは関数が終了したときです。 オブジェクトがグローバルに宣言されている場合、プログラムが終了するか、新しい値 (または "空" に設定された値) がオブジェクトに割り当てられるまで破棄されません。

Request オブジェクトには、クエリを実行できるプロパティがいくつか用意されています。 たとえば、 Status プロパティは要求の現在の状態を返します。 このプロパティを使用して、要求の状態をチェックできます。

   Dim MyRequest
   
   Set MyRequest = Agent1.Characters.Load ("Genie", "https://agent.microsoft.com/characters/v2/genie/genie.acf")

   If (MyRequest.Status = 2) then
      'do something

   Else If (MyRequest.Status = 0) then
      'do something right away

   End If

Status プロパティは、Request オブジェクトの状態を Long 整数値として返します。

Status 定義
0 要求が正常に完了しました。
1 要求に失敗しました。
2 保留中の要求 (キュー内ですが、完了していません)。
3 要求が中断されました。
4 要求が進行中です。

 

Request オブジェクトには、Status コードのエラーまたは原因を返す Number プロパティに Long 整数値も含まれています。 none の場合、この値はゼロ (0) になります。 Description プロパティには、エラー番号に対応する文字列値が含まれています。 文字列が存在しない場合、 Description には "アプリケーション定義またはオブジェクト定義エラー" が含まれます。

Number プロパティによって返される値と意味については、「エラー コード」を参照してください。

サーバーは、指定した文字のキューにアニメーション要求を配置します。 これにより、サーバーは別のスレッドでアニメーションを再生でき、アニメーションの再生中にアプリケーションのコードを続行できます。 Request オブジェクト参照を作成すると、RequestStart イベントと RequestComplete イベントを通じてアニメーション要求が開始または完了したときに、サーバーから自動的に通知されます。 Request オブジェクトを返すメソッドは非同期であり、呼び出し元の関数のスコープ中に完了しない可能性があるため、Request オブジェクトへの参照をグローバルに宣言します。

Request オブジェクトを取得するには、GestureAtGetHideInterruptLoadMoveToPlayShowSpeakWait の各メソッドを使用できます。