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 オブジェクトを取得するには、GestureAt、Get、Hide、Interrupt、Load、MoveTo、Play、Show、Speak、Wait の各メソッドを使用できます。