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 會包含「應用程式定義或物件定義錯誤」。
伺服器會將動畫要求放在指定字元的佇列中。 這可讓伺服器在不同的執行緒上播放動畫,而且應用程式的程式碼可以在動畫播放時繼續。 如果您建立 Request 物件參考,伺服器會在動畫要求透過 RequestStart 和 RequestComplete 事件啟動或完成時自動通知您。 因為傳回 Request 物件的方法是非同步,而且在呼叫函式的範圍期間可能不會完成,所以請全域宣告對 Request 物件的參考。
下列方法可用來傳回 Request 物件: GestureAt、 Get、 Hide、 Interrupt、 Load、 MoveTo、 Play、 Show、 Speak和 Wait。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應