Eclipse Voice Tools Project 是一個新項目,其試圖聯合語音行業的公司和個人,一起來創建一套常用的基於標准的、開放源碼的語音開發工具。但是如何擴展或者對項目的工具進行改進呢?本文解釋了如何設置和定制 Voice Tools Project 環境,並且還講述了在添加新功能過程中所涉及的步驟。
Eclipse 是一種令人難以置信的通用開發平台,已經在計算機行業廣泛采用。除了其世界級的 Java™ 開發環境之外,Eclipse Foundation 還主持了許多旨在創建各種工具組的項目——從 C語言到 COBOL 語言到 BPEL語言。其最新的項目之一,Eclipse Web Tools Project,創建了一組開放源碼的 Web 開發工具。由於提供了成熟的 XML、SQL 以及 Java 2 Platform, Enterprise Edition (J2EE) 工具,所以 Web Tools Project 很自然地成為了事實上的 Web 開發環境。
Voice Tools Project (VTP) 是利用 Web Tools Project 而開發成型的,采用的方式是將其 Web開發工具庫擴展到語音識別領域。這樣,Voice Tools Project 就可以提供用於語音開發方面的許多現成的 Web 開發經驗,允許用戶使用與開發可視化應用程序相同的工具來開發他們的語音應用程序。對於使用 Voice Tools Project 作為其工具庫的公司來說,這意味著不用另外付出努力,就可以提供用戶希望用現代面向 Web 的集成開發環境 (IDE) 達到的所有任務。
但是,Voice Tools Project 如何才能為您的特殊要求而工作呢?我將解釋得到 Voice Tools Project 源代碼以及如何向源代碼中添加您自己的“語音”這一過程——無論是用於商業產品還是開放代碼的更改,基本概念是相同的。
設置
為了設置符合您需求的最佳開發環境,重要的是要理解先決條件是什麼?因為 Voice Tools Project 依賴於 Web Tools Project(而它又依賴於 Eclipse SDK),所以必須安裝若干個合適版本的程序包。
首先進入 Voice Tools Project 主頁,找到 Web Tools Project 的最新兼容版本。在撰寫本文時,最新兼容版本是 0.7。
訪問 Web Tools Project 下載頁面 得到合適版本的 Web Tools Project。您需要得到 SDK ZIP 文件版本,並滿足 Requirements 中列出的先決條件。當我撰寫本文時,對於 Web Tools Project 的要求是 Eclipse 3.1、EMF 2.1、GEF 3.1 以及 Java EMF Model Runtime 1.1。
最後,如果您一種都沒有安裝,則需要安裝一個 Java Runtime Environment (JRE) 版本。
將 Eclipse 解壓到一個庫目錄中,如 c:\eclipse。其他需要的技術文件也都要解壓到同一路徑,以便這些文件都位於 plugins\ 和 features\ 子目錄下面的合適位置。
為了測試您的配置,應啟動 Eclipse,並且嘗試創建一個新的 Web 項目,方法是選中 File > New > Other... > Web > Dynamic Web Project。如果這個向導是可用的並且正確地執行了,則您的安裝就是正確的。
圖 1. 啟動該向導是檢查安裝的簡單測試
既然您准備好了並且在運行了,我們就開始用它做些事情吧。
獲得驅動器的源代碼
由於 Eclipse 有一個集成的 CVS 客戶機,所以獲得和處理 Eclipse Voice Tools Project 的源代碼是很簡單的。在 Eclipse 中,選中 Window > Open Perspective > Other... > CVS Repository Exploring,打開 CVS Repository Exploring 透視圖。Eclipse 中的這個透視圖用於浏覽遠程 CVS 庫,如 VTP 源代碼存儲的位置。
為了下載 VTP 源代碼,首先要創建到 Eclipse CVS 庫的匿名連接。在 CVS Repositories 視圖中右擊,並選中 New > Repository location... 以打開 Add CVS Repository 窗口。在 Host: 字段,輸入 dev.eclipse.org。對於 Repository path: 字段,輸入 /home/technology。在 User: 字段,輸入 anonymous。繼續下去,選中 Save Password 並按 Finish。這樣就可以在 CVS Repositories 視圖中創建一個連接,該視圖可以用於顯示 VTP 是其一部分的整個 CVS 樹。
接下來要計算出,您可以把呼叫者直接路由到公司的什麼位置。對您公司內可以將呼叫路由到的所有位置列一個清單,這些就是您的路由目的地。使用這個清單構建一個數據集合調查表,可以將這個調查表送給內部用戶(如果是送給真實的顧客就更好)。對於您確定的每個目的地,要求您的聽眾考慮到達那兒想說的幾件事情。清單 1 就是一家汽車公司調查表的一個示例樣子。
圖 2. Add CVS Repository 窗口,其設置為顯示 Eclipse CVS 服務器
下一步是選擇 VTP 組件並且將它們解壓到本地環境的項目中。將已經創建的樹擴展到 HEAD > org.eclipse.vtp > editors > plugins。以 org.eclipse.vtp 開始的樹條目的清單,是作為 Voice Tools Project 一部分而提供的編輯器插件。
選擇整套插件並且右擊,然後選擇菜單項 Check Out As... 以打開 CVS Checkout 窗口。選中 Check out into the workspace as projects 並按 Finish。現在,在您的 Eclipse 工作空間中應該有許多插件項目了。
選擇 Window > Open Perspective > Other... > Plug-in Development,切換到 Plug-in Development 透視圖。您應該看到您在 Package Explorer 視圖中選擇的所有插件。
圖 3. CVS Repositories 視圖,顯示有所選擇的 VTP 插件
在對下載的源代碼進行更改之前,應對其做最後的檢查以查看下載的代碼是否一切正常,這的確是個好主意。選擇 Package Explorer 視圖中的插件項目,右擊,然後選擇 Run As > Eclipse Application。這樣會啟動 Eclipse 的第二個副本,它將已下載的插件代碼合並到工作空間。在 Eclipse 的第二個副本啟動之後,試著通過選擇 File > New > Other... > Voice > VoiceXML File 而運行新的 VoiceXML 向導。如果該向導成功地啟動了,那是一個好的象征,表示 VTP 源代碼成功地下載了,您現在就可以開始進行更改了!
創建自定義的動作
在 VoiceXML 文檔中,開發人員在編輯標記時要頻繁地引用外部資源,如音頻文件或者其他 VoiceXML 文檔。此時,添加到該編輯器中的方便特性或許就是一種快速驗證鏈接是否有效的方式。為了完成這項工作,必須創建一種新的編輯器動作,並且要在 org.eclipse.vtp.editor.vxml 插件的 plugin.xml 中注冊一個擴展點:
清單 1. 將新動作添加到 VoiceXML 編輯器中的新插件擴展點
<extension
point="org.eclipse.wst.sse.ui.extendedEditorActions">
<editorContribution
targetID="org.eclipse.vtp.editor.vxml.StructuredTextEditorVXML"
id="org.eclipse.vtp.editor.vxml.extendedActions">
<action
label="Validate linked item exists"
tooltip="Checks to make sure that the item referenced exists"
popupmenuPath="VOICETOOLS_GROUP_EDIT"
class="org.eclipse.vtp.editor.vxml.CheckReferencedURLAction"
id="org.eclipse.vtp.editor.vxml.actions.CheckReferencedURLAction">
</action>
</editorContribution>
</extension>
現在要創建類 CheckReferencedURLAction 來執行這一工作。幸運的是,可以在 org.eclipse.vtp.editor 插件中找到一個現有編輯器動作 (EditReferencedFileAction) 的源代碼,所以有了一個開始的基礎。
如果您復制 EditReferencedFileAction.java 並且仔細看看,就會發現編輯器動作放在一起如何起作用。這只是保證您使用 isVisible() 方法在上下文菜單中正確地顯示該動作並且在 run() 方法中執行相應的動作。由於您既要檢查本地文件的存在又要檢查 URL 的存在,所以必須采用當前選擇的 XML 屬性,並確定要對它做的工作:
清單 2. 檢查引用項的存在的新動作代碼
attrValueLoaded = ActionSupport.currentPosGetAttributeValue(textEditor, attrs[i]);
if (attrValueLoaded.toLowerCase().startsWith("file:")
|| attrValueLoaded.toLowerCase().startsWith("http:")
|| attrValueLoaded.toLowerCase().startsWith("https:")
|| attrValueLoaded.toLowerCase().startsWith("ftp:")) {
// Check URL
..
} else {
// Check local file
..
}
本文末尾的鏈接會將您連接到完全實現。現在我們可以在文件上啟動編輯器,並查看結果:
圖 4. 帶有新的自定義動作的編輯器窗口
將更改打包
導出已經做了更改的 Voice Tools Project 是一個簡單的過程。只要選擇 Package Explorer 視圖中的所有插件,右擊,並選擇 Export... > Deployable plugins and fragments。然後,指定輸出文件夾,並按 Finish 即可將這些插件導出到可部署的表單中。
圖 5. export deployable plug-ins and fragments 對話框
此外,通過為項目提供一個補丁,您還可以利用 Voice Tools Project 提供的開放源碼開發模型。將您的更改提交給項目,使得這些更改可以得到思維類似的開發人員的改進、測試甚至維護。
第一步就是創建補丁。為此,選中您已經更改的項目 org.eclipse.vtp.editor.vxml,右擊,並選擇 Team > Create Patch... 以打開 Create Patch 窗口。選擇 Save in file system 並選擇一個臨時的位置放置補丁。按 Finish 創建文件。
在創建了補丁之後,應該將它作為特性請求 提交給 Eclipse 的 bug 跟蹤網站,以做考查。進入 http://bugs.eclipse.org/,並創建一個 Bugzilla 帳戶。在有了帳戶之後,進入 Enter a new enhancement/feature request 並選擇 VTP。選擇 editors 組件並在 Description 字段中放入有關您的增強的摘要。
在創建該特性請求之後,您必須將您的補丁附加到它上面。為此,需查看特性請求,並選擇 Create a New Attachment。從文件系統中選擇您的補丁,包含一個簡短的描述,並選中 patch 復選框。按 Submit 以便將補丁附加到該特性請求上。
圖 6. 附件上載網頁
結束語
自定義 Eclipse Voice Tools Project 是一個簡單的過程,允許用戶或者公司利用一個很大的語音開發代碼集。盡管開放源碼模型鼓勵人們多做貢獻,但是卻時常需要自定義源代碼,也需要源代碼易於得到,使開發人員可以迅速構建適合他們需求的產品。
本文引導您一步步地設置和測試您的環境,利用項目的源代碼,構建自己的自定義動作,合並更改,並將更改提交回項目,讓您開始了解 Eclipse Voice Tools Project。
本文配套源碼