共用方式為


程序設計腳本常見問題

[從 Windows 7 開始,Microsoft 代理程式已被取代,而且在後續版本的 Windows 中可能無法使用。]

當我使用 Microsoft Visual Basic(或其他開發工具)編寫 Microsoft Agent 腳本時,我看不到範例中使用的所有屬性和事件。 如何? 存取它們?

大部分的事件、方法和 Microsoft Agent 控件所支援的屬性只會在運行時間公開。 如需詳細資訊,請參閱 Microsoft 代理程式控制 程序設計。

地圖卷標(或其他標籤)似乎無法運作。

某些標籤包含引號字串。 對於某些程式設計語言,例如 Microsoft Visual Basic 和 Visual Basic Scripting Edition,您可能必須使用兩個引號來指定標記的參數,或串連雙引號字元做為字串的一部分。 後者會顯示在此 Visual Basic 範例中:

Agent1.Characters(“Genie”)。說出 “This is \map=” + chr(34) + “Speak text” _ + chr(34) + “=” + chr(34) + “氣球文字” + chr(34) + “\”。

針對 C、C++ 和 Java 程式設計,在反斜杠和雙引號前面加上反斜杠。 例如:

BSTR bszSpeak = SysAllocString(L“This is \\map=\”Spoken text\“=\”Balloon text\“\\”):

pCharacter-Speak>(bszSpeak, ...):

注意

Microsoft Agent 不支援 Microsoft 語音 API 中指定的所有標記。 此外,某些參數的支援可能取決於所安裝的文字到語音轉換引擎。 如需詳細資訊,請參閱 Microsoft Agent 語音輸出標記

 

我似乎沒有在腳本 (或程式) 中取得 RequestStart 和 RequestComplete 事件。

這可能是下列其中一個問題所造成:

  • 您的程式設計語言並不完全支援 ActiveX 控制件。 請檢查您的檔,以確保它支援 ActiveX 物件的 ActiveX 介面和事件。
  • 在腳本化網頁上,另一個控件無法安裝或載入。 檢查以確定所有其他控制件都已安裝並正確載入,而不需要 Microsoft Agent。
  • 在具有框架的腳本網頁中,您有 <OBJECT> 一個頁面上的 Microsoft Agent 控件標記,以及在另一個頁面上編寫腳本的事件。 事件只會傳送至裝載控件的頁面。

我在網頁上將 Microsoft Agent 控件與其他 ActiveX 控件搭配使用,而且我似乎不會取得任何事件。

檢查是否已正確安裝其他控制件。 如果另一個 ActiveX 控件無法正確註冊自己,Microsoft Agent 控制件可能會收到其事件。

我可以使用哪些程式設計語言來設計 Microsoft Agent 控件?

任何支援 ActiveX 介面的語言都應該支援 Microsoft Agent。 其中包含 Visual Basic、VBScript、JScript、C/C++和 Java 的程式代碼範例。

我可以使用 JScript 存取從 Microsoft Agent 傳回的參數嗎?

是,但目前唯一的方法就是使用 <SCRIPT LANGUAGE="JScript" FOR="*object*" EVENT="event()"> 語法。 雖然 Microsoft Internet Explorer 支援此語法,但其他瀏覽器並不支援它,因此您可能會想要避免針對頁面腳本的這個部分使用 JScript。

Microsoft 代理程式可以搭配語音辨識或語音合成(文字到語音轉換或 TTS)引擎使用,而不是 Microsoft 所提供的引擎嗎?

是,前提是引擎支援 Microsoft Agent 所需的 Microsoft 語音 API (SAPI) 4.0 介面。 請洽詢引擎供應商。 如需 Microsoft 代理程式所需 SAPI 介面的完整詳細數據,請參閱 語音引擎支援需求

我的頁面包含 Microsoft Agent 的 HTML 物件標籤、Lernout 和 Hauspie TruVoice TTS 引擎,以及 Microsoft 命令和控制語音辨識引擎,但並非所有元件都會安裝。

一般而言,重新整理頁面即可修正問題。 一般作法是最好先指定 Microsoft Agent Control 標記,然後再指定 Lernout 和 Hauspie TruVoice 引擎,再指定 Command and Control <OBJECT> 語音辨識引擎。

呼叫MoveTo方法之後,即使我已將 Return 動畫指派給移動狀態動畫,我的字元似乎仍會凍結。

當您播放動畫時,動畫服務會繼續顯示其最後一個畫面,直到呼叫另一個動畫為止。 因此,您應該在呼叫 MoveTo之後播放另一個動畫。 如果您為移動狀態動畫定義 Return 動畫,伺服器會先播放它。

當我查詢字元的 Pitch 屬性時,它會傳回 -1 的值。

如果使用語音引擎的預設音調屬性編譯字元,就會發生這種情況;也就是說,當角色建立時,球場沒有改變。

當我的程式代碼嘗試設定文字到語音轉換引擎的 TTS 模式識別符時,我會收到下列錯誤:因為應用程式正在分派輸入同步呼叫,所以無法進行傳出呼叫。

若要設定 TTSModeID 屬性,您必須安裝 Speech.dll。 這通常是語音引擎安裝程序代碼的一部分。 您也可以安裝語音物件控制面板,從 [Microsoft 代理程序下載] 頁面取得。

當我重試載入無法載入的字元時,呼叫會失敗,並出現「字元已載入」錯誤。

Microsoft Agent 控件不會在其相關聯的字元檔案無法載入時卸除字元物件(釋放參考)。 如果您想要重試載入字元,您必須在第二次呼叫Load之前明確呼叫 Unload。 如果您嘗試從網頁腳本進行此動作,您也需要在 Unload 呼叫前面加上 On Error Resume Next 語句,否則 Unload 呼叫也會失敗。 (請注意,JScript 沒有 On Error Resume Next 語句。

不過,當檔案無法載入時,您可能不需要包含程序代碼,即可立即重試載入字元。 Microsoft Internet Explorer 和 Microsoft Agent 伺服器元件會自動嘗試重試數次,因此您的重試可能會導致成功載入的機會是遠端的。 更好的策略是先等候(設定定時器)幾秒鐘后再重試。

如何安裝 Microsoft Agent 作為應用程式或 Web 伺服器的一部分?

您可以從 Microsoft 網站安裝 Agent,方法是將其 CLSID 包含在 HTML 物件標記中。 不過,如果您想要從自己的應用程式安裝程式或從您自己的伺服器包含並安裝 Agent,您必須從 [下載] 頁面下載 Microsoft Agent 自我安裝封包檔案。 下載時,請選擇瀏覽器的 [儲存] 而非 [執行] 選項。 每當執行此檔案時,它會自動在目標計算機上安裝 Microsoft Agent。 因此,您可以在安裝文本中指定檔案。

請勿藉由複製 Microsoft Agent 的各種 來嘗試安裝 Microsoft Agent。DLL 並嘗試自行註冊。 不支援嘗試透過任何其他方式安裝 Agent,然後執行其自我安裝封包檔案。

目標系統也必須包含最新版的 MSVCRT.DLL (VC++ 執行時間)、REGSVR32.EXE(Microsoft VC++隨附的註冊工具),以及 COM。 確保已安裝正確版本的最佳方式是要求安裝 Microsoft Internet Explorer 3.02 或更新版本。 不過,您也可以授權這些運行時間需求。 (如需最新版的 COM,請從 Microsoft 網站存取 DCOM 更新。

Microsoft Agent 2.0 將不會安裝在 Microsoft Windows 2000 上,因為此版本的操作系統已經包含 Agent。

我可以使用 Visual Basic 安裝精靈來安裝 Microsoft Agent 嗎?

雖然您可以使用 Visual Basic (VB) 程式代碼建立自己的安裝程式,但您無法使用 Visual Basic 安裝精靈來執行此動作。 若要從 VB 安裝 Agent,您可以使用 Shell 命令,指定 Microsoft Agent 自我安裝封包檔案。

如何? 在 Windows 2000 上安裝 Microsoft Agent 嗎?

Microsoft Agent 2.0 不會安裝在 Windows 2000 上,因為它已包含在操作系統中。

使用 WAV 檔案呼叫 Speak 時,AgentSvr 會當機。

這可能會導致字元使用 TTS 進行口語輸出,然後變更為使用 WAV 檔案。 在Speak方法的第一個參數中未提供文字。

若要避免當機,即使您沒有文字輸出,在Speak方法的第一個參數中包含空格符。

雖然我已經針對特定語言安裝 Agent 語言元件 (DLL),但我仍然收到錯誤,指出當我將字元的語言設定為該語言時,元件遺失。

當您安裝 Agent 語言元件時,通常會在安裝 Agent 語言元件時開啟代理程式應用程式,例如 Microsoft Office 2000。 關閉所有應用程式,然後再試一次。 如果問題持續發生,請重新啟動計算機,而且您現在應該能夠設定語言標識碼。

當我使用 ampers 和 「&」 符號時,會截斷字元文字批注方塊中的符號周圍的文字。

這是已知的問題。 您可以使用地圖標籤來解決此問題。 例如,若要在字元的文字氣球中顯示 “A & B”,請在Speak語句中使用 “A \map=”and“=”&&“\ B”。

我的應用程式可讓使用者變更預設字元,而當他們這麼做時,程式就會當機。

可能的原因有二:

如果您變更預設字元的 TTS 模式識別符,然後允許使用者透過 ShowDefaultCharacterProperties 變更預設字元,AgentSvr 將會當機。

此問題已在 Windows 2000 和 Windows XP 作業系統中修正。 若要避免在其他平臺上當機,您應該不允許使用者在變更預設字元的 TTS 模式識別符之後變更預設字元,或不要在應用程式或網頁中使用預設字元。

如果您的應用程式未使用 Microsoft 提供的 Agent 字元,請確定您的自訂字元使用調色盤搭配 256 種色彩的完整調色盤。 如需詳細資訊,請參閱 Microsoft Agent 的設計字元檔。

我的頁面會從多個畫面格載入 Agent 字元。 使用 IE 5 時,我收到 Microsoft 代理程式無法載入錯誤。

這是 IE 5 的已知問題。 瀏覽器處理特定事件的方式有所變更,導致 HTML 腳本在 AgentSvr 啟動之前開始執行。 若要讓您的頁面與瀏覽器的所有版本搭配使用,您必須將這一行新增至您的腳本:

AgentControl。連線 ed = True

會明確建立與 AgentSvr 的連線。 請注意,如果您的頁面從多個畫面格載入 Agent,您只需要執行此動作。

當我的應用程式嘗試在 Windows 2000 (或 Windows XP) 上安裝 Microsoft Agent 時,我收到 Agent 與 Windows 2000 (或 Windows XP) 不相容的錯誤。

在 Windows 2000 上執行時,舊版的 Agent 核心元件封包檔案 MSAGENT.exe 會封鎖安裝,並顯示錯誤訊息,指出 Agent 與您執行之操作系統的版本不相容。 事實上,Microsoft Agent 2.0 核心元件包含在 Windows 2000(和 Windows XP)中,而且預設會透過 Windows 安裝程式安裝。

在此版本中,會移除檢查,而且安裝檔案不會在 Windows 2000 (或 Windows XP) 下顯示上述錯誤訊息。 請注意,這是安裝檔案的唯一變更,而且 Agent 核心元件本身沒有任何程式碼變更。 因此,如果您已安裝 Agent 2.0,或您的網站使用物件標記從 Microsoft 物件存放區觸發 Agent 核心元件的自動下載,則不會受到此更新的影響。

如果您將 Agent 核心元件安裝檔案包含在您的應用程式中,或在伺服器上張貼安裝檔案,您可能想要下載此更新。 若要這樣做,請按兩下這裡,然後選取 [將此程式儲存到磁碟] 選項。 在這些情況下,您必須擁有有效且目前的代理程式散發授權。

或者,您也可以在安裝舊版 MSAGENT.exe 安裝檔案時,使用無訊息選項解決此問題。 殼層命令為:

MSAGENT.exe /q:a

這同樣適用於最初於 1998 年 10 月發行的 Agent 語言元件。 有一項檢查會防止阿拉伯文、法文、德文、希伯來文、義大利文、日文、韓文、簡體中文、西班牙文和繁體中文元件在 Windows 2000 下安裝(和 Windows XP)。 這些安裝檔案的較新版本,以及 2000 年 3 月新增的額外 19 種語言,不包含這項檢查,而且會在 Windows 2000 (和 Windows XP) 上安裝成功。

我的自定義字元在 Windows 2000 上表現出一些非預期的行為,其透明度色彩(和 Windows XP)。

這是使用小於 256 色彩調色盤建立的字元已知問題。 這些字元的問題包括背景顯示的透明色彩、透明氣球文字、透明氣球框線或透明氣球背景。 請注意,這類字元可能會導致應用程式在 [代理程式字元選擇器] 對話框或 Microsoft Office Assistant 資源庫中載入時當機。 您的自定義字元必須使用具有 256 種色彩的完整調色盤。 您可以使用 Office 小幫手字元提供的範例調色盤,作為具有完整 256 色盤的起點。

即使我已將其語言標識碼設定為英式英文 &h0809,字元也不會使用英國英文 TTS 引擎。

首先,請確定您已安裝所有必要的元件:Agent 核心元件、SAPI 運行時間二進位檔,以及符合 SAPI4 規範的英國英文 TTS 引擎,例如TTS3000英國英文引擎,可在 [代理程序下載] 頁面上下載。 如果您的字元仍然未使用英國英文 TTS 引擎,您可能也已安裝美式英文 TTS 引擎。 由於英美英文共用相同的主要語言(英文)和美式英文是預設值,代理程式會挑選第一個可用的美國英文 TTS 引擎,如 SAPI 所傳回。 若要使用英式英文 TTS 引擎,請改用字元的 TTSModeID 屬性。 例如,TTS3000英國英文男性語音的 TTSModeID 是 {227A0E41-A92A-11d1-B17B-0020AFED142E}。 在 Microsoft Visual Basic 中,您可以藉由設定 Merlin 的 TTSModeID 來使用此引擎,如下所示:

AgentControl.Characters(“Merlin”)。TTSModeID = {227A0E41-A92A-11d1-B17B-0020AFED142E}

當字元的磁碟區使用語音標記 \Vol=0\ 設定為零時,它沒有任何作用或損毀 AgentSvr。

這是已知的問題。 在 Windows 95、Windows 98 和 Windows Me 操作系統上,字元的磁碟區不會變更,但會保留在先前設定的層級。 在 Windows NT 4.0、Windows 2000 和 Windows XP 平臺上,這會導致 AgentSvr 當機,即使未安裝 TTS 引擎也一定會損毀。 由於字元的音量範圍,從 0 (無聲) 到 65535 (最大音量),而且連續層級之間的差異很難辨識,因此很容易的因應措施是將音量設定為 1,而不是 0 時,您希望字元的聲音無法辨識。

我的自定義字元 Return 動畫在 MoveDown、MoveLeft、MoveRight 和/或 MoveUp 動畫之後無法正確播放。

請確定已將簡單的說話動畫指派給說話狀態。 例如,您可以使用單一框架,其中包含字元的中性位置與嘴重疊。