百科名片
Koodoo語言是一種簡單高效的腳本語言,有現代腳本語言動態變數、動態數組等容易上手的特點,同時又適應電信行業高性能的要求。它主要套用在語音系統相關的開發,即CTI(計算機電話集成)領域,如IVR(互動式語音應答,即電話自動語音應答,如電話銀行、證券電話委託、聲訊系統等),CallCenter(呼叫中心、客服中心)等。對於語音系統來說存在多通道並發的問題,傳統的解決方法就是狀態機,對語音系統的開發人員實在太麻煩了,摒棄狀態機,創造一種運行在單獨通道上的高級腳本語言,給語音系統的開發帶來了開發效率上的飛躍。簡介
創 建 者:朱東寧創建時間:2001年
開發歷程:Koodoo語言採用C++完全獨立開發的,並沒有參考任何開原始碼,在2001年推出了第一個版本,隨後提供了多種主流語音卡硬體平台的支持,並實現了可視化的調試環境和運行環境。
版本升級:Koodoo語言採用類似開原始碼的小版本號,目前版本號是ver2.19j,大概一個月左右就會推出一個小的升級版本。
套用領域:Koodoo語言有不少電信、金融等行業的用戶,隨著IVR、CTI市場的發展,甚至3G等套用的展開,Koodoo語言將支持更多的硬體和電信協定,一定有更廣泛的套用。
開發工具:
採用任何一個文本編輯器--比如記事本, 寫上一段Koodoo語言腳本代碼, 最好保存為".bss"的擴展名.
推薦使用UltraEdit,這款編輯器功能很強大,簡單設定後可以使用語法加亮、代碼縮進和代碼摺疊等功能, 使用命令行編譯器可在UltraEdit-32下即時編譯,構成IDE,請參考: 用UltraEdit來開發
也可以使用EditPlus編輯器,參考: 用EditPlus來開發
也很多人使用Visual Studio或C++Builder等自己熟悉的高級語言編輯器,非常好。但最好不要使用VB的編輯器,因為它會自動把關鍵字首字母變成大寫. 注意:我們的腳本語言和C或Java一樣是大小寫敏感的.
運行平台:
運行藍星際語音開發平台, 彈出畫面:
指定腳本檔案, 如果不願意輸入, 可以點擊選單:"檔案/打開", 然後選擇一個腳本檔案。
選擇線路, “線路”相當於語音卡硬體的通道或通道號,選擇你連線了電話線的線路號,如果您沒有任何語音卡線路,請選擇最後一條也就是“虛擬線路”,該線路會自動採用音效卡來放音或錄音。
點擊"編譯(F7)"按鈕, 如果順利就會在中間生成主流程的語法樹, 如果有語法錯誤, 將會彈出一個錯誤視窗, 告訴你錯誤的行數, 錯誤的原因, 這時您需要修改腳本直到沒有任何錯誤.
點擊"運行(F9)"按鈕, 腳本將執行; 您可以點擊"刷新(F5)"按鈕, 然後在變數列表欄目去察看變數, 您可以對變數排序, 也可以雙擊變數查看其詳細內容. 如果腳本運行在虛擬線路上(音效卡模擬環境),可以點擊“模擬按鍵”輸入框,在裡面輸入數字來模擬電話DTMF按鍵輸入。
調試: 在運行之前您可以在語法樹上設定很多斷點, 這樣運行到斷點處就會停下來, 這時您還可以"單步(F8)"執行語句, 便於跟蹤流程和了解變數在當前時刻的值。在單步狀態,可以雙擊主流程或子函式語法樹上的任意語句,這時將顯示該語句的相關變數,和他們的值。
顯示調用列表: 設定斷點後, 當運行到斷點處停下來時, 可選擇主選單“運行/顯示調用堆疊”,在子視窗中將顯示當前函式的調用堆疊列表,雙擊列表中的任一函式名將顯示該函式全部變數的當前值。
命令行或捷徑: “BsTel.exe 腳本檔案名稱 線路號” --將自動在指定的線路編譯並運行該腳本.
常見代碼示例
Koodoo語言的"Hello, world!":WaitRing(1); // 等待來電
Play("Welcome.wav"); // 播放歡迎語音
Hangup(); // 掛斷
就這三行語句,構成了一個最簡單的語音應答機(IVR).
當然,運行上面的例子最好有語音卡硬體或者語音貓,還需要錄製那個歡迎語音Welcome.wav檔案。
有朋友會說,我暫時沒有語音卡也沒有語音貓,怎么辦呢?沒關係,電腦上只要安裝音效卡就可以了。
如果你安裝了微軟的SAPI--是免費的,你也可以不錄音:
WaitRing(1); // 等待來電
TxtSpeak("您好,歡迎來電!", false, false); // TTS合成歡迎語音
Hangup(); // 掛斷
讓我們看看別的方式輸出"Hello, world!":
在第一個信息欄顯示信息:
DispInfo(0, "Hello, world!");
return(0);
在日誌檔案記錄信息:
TextFileAppend("userlog.txt", "Hello, world!", true); // 日誌檔案名稱為:"userlog.txt"
return(0);
常量
Koodoo語言支持常量定義,如:
const PAI = 3.1415926;
const BLUE_SPACE = "深圳市藍星際公司";
"const"關鍵字,表示後面的符號是個常量,常量在運行時不會被改變。
注意,系統也提供了幾個有用的常量:
_lineNo // 當前線路號, 整型, 從0開始
_bssFile // 本線路執行的腳本檔案名稱, 字元串類型
true //邏輯真, 也就是整型1
false // 邏輯假, 也就是整型0
變數
Koodoo語言支持動態的變數,如:
i = 0; // i現在是整型0
i= "Space"; // i現在是字元串"Space"
i = 19.34; // i現在是雙精度浮點型值為19.34
可以進行複雜的變數運算:
a = 23;
i1 = 99*88;
v = 10 - 8*2 + a*(i1-10);
朱東寧介紹
網名:bluesen,真名朱東寧。大學專業為物理學,曾任物理教師和光譜分析工程師。在大學時代曾學習APPLE II的BASIC語言,而後喜歡寫程式,90年代初到深圳成為專業程式設計師,96年和朋友創建藍星際公司至今,幾乎每天都在寫程式,常用C/C++。早年做金融行業軟體,近年來專注於語音平台系統軟體開發,設計並實現了高級腳本語言Koodoo語言,Koodoo語言可以在大容量的線路上並發執行,如單機幾十個電信E1線路即上千個並發話路,系統仍能穩定高效運行。在CTI(計算機電話語音集成)行業有14年的開發經驗。
“業餘喜歡閱讀和寫作。得意之作是在網上發表的技術文章“從歷史的角度再論狀態機”,曾被中南大學教授在專業論文中引用。喜歡有技術含量的網路辯論,痛快,痛快。”