Request 物件

[從 Windows 7 開始,Microsoft Agent 已被取代,而且在後續版本的 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 物件的位置,以及其使用方式會決定其存留期。 如果物件宣告為副程式或函式的本機,則會在超出範圍時終結;也就是說,副程式或函式結束時。 如果物件是以全域方式宣告,則除非程式終止或新的值 (或設定為 「empty」 的值,否則不會終結該物件。) 指派給物件。

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屬性會以 Long 整數值傳回Request物件的狀態。

狀態 定義
0 要求成功完成。
1 要求失敗。
2 在佇列中要求擱置 (,但無法完成) 。
3 要求中斷。
4 進行中的要求。

 

Request物件也會在Number屬性中包含 Long 整數值,這個值會傳回Status代碼的錯誤或原因。 如果沒有,這個值會是零 (0) 。 Description屬性包含對應至錯誤號碼的字串值。 如果字串不存在, Description 會包含「應用程式定義或物件定義錯誤」。

如需 Number 屬性所傳回的值和意義,請參閱 錯誤碼

伺服器會將動畫要求放在指定字元的佇列中。 這可讓伺服器在不同的執行緒上播放動畫,而且應用程式的程式碼可以在動畫播放時繼續。 如果您建立 Request 物件參考,伺服器會在動畫要求透過 RequestStartRequestComplete 事件啟動或完成時自動通知您。 因為傳回 Request 物件的方法是非同步,而且在呼叫函式的範圍期間可能不會完成,所以請全域宣告對 Request 物件的參考。

下列方法可用來傳回 Request 物件: GestureAtGetHideInterruptLoadMoveToPlayShowSpeakWait