GVOS 8.2 SP1 (ADL)& CT ADE 結(jié)構(gòu)
(二)
 

 

6. VOS語言

  6.25. 圖形化VOS,運行程序

  菜單選項"Run"包括編譯和運行VOS程序所需的所有選項,編譯過程就是VOS檢測并把VOS代碼轉(zhuǎn)換為p-code。VOS編譯項目中的每一個應(yīng)用程序。編譯程序為:VLC8.exe1。
  編譯過程中,有一個狀態(tài)窗口顯示編譯狀態(tài),編譯和連接過程中產(chǎn)生的錯誤和警告:

  程序編譯完成后(無錯誤),就可以運行了。
  運行過程中,VOS調(diào)用VOS.exe程序,VOS.exe解釋執(zhí)行編譯后的VOS代碼,可以通過F5鍵或者按鈕 來實現(xiàn)。
  VOS運行有許多設(shè)置:

  6.25.1. 用戶界面,-設(shè)置

  VOS啟動時,用戶界面是一個稱為VOS控制面板(VOS Control Panel)的對話框。VOS對話框如下所示:

  任務(wù)欄中有一個當前file.VOS的索引。
  編譯(vlc)和運行(vos)的設(shè)置通過兩個文件完成:VOS.ini和擴展名為.VOS的文件。

  6.25.1.1. configurationfile.VOS 文件


  從版本7(version 7)開始,VOS和VLC的設(shè)置就固定在兩個文件中:VOS.INI和稱為VOS設(shè)置文件的一種新文件,其擴展名為.vos。
  設(shè)置文件與INI文件非常相象,VOS.INI文件應(yīng)用于VOS運行引擎的每一個時間例程,而對于每一個VOS項目都可以有一個不同的設(shè)置文件。運行一個VOS程序時,可以指定使用某一個設(shè)置文件。如果沒有指定設(shè)置文件,VOS使用VOS.INI文件中[Setings]部分指定的缺省設(shè)置。此設(shè)置文件可以移出Windows目錄,也允許任意改變文件名,可以很容易在運行在不同的系統(tǒng)中。
  VOS設(shè)置文件格式基于Widows的INI文件格式,并且VOS使用Windwos API函數(shù)來管理INI文件,所有指定段落名,關(guān)鍵詞、值和注釋的用法都相同。

  文件可以在三個地方編輯
  ·使用圖形化的VOS(Graphical VOS)->Project->VOS Settings。
  ·使用VOS控制面板,單擊右鍵。
  ·直接使用記事本(NotePad)編輯VOS.ini文件。
  設(shè)置文件中的節(jié)(Sections)包括:
  [AutoStart]
  VOS設(shè)置文件的[AutoStart]部分指定.vx文件,最多指定16個,當VOS使用此設(shè)置文件時,都要載入這些.vx文件。例如:
    [AutoStart]
    VXProgram1=C:\VoiceMail\VX\Master.vx
    VXProgram2=Q:\Shared Vos Files\VX\Database.vx
    VXProgram3=Q:\Shared Vos Files\VX\Pager.vx

  [Buf]
  VOS設(shè)置文件的[Buf]部分指定使用緩沖區(qū)的函數(shù)可以使用的緩沖區(qū)的數(shù)目。
  例:
    [Buf]
    Count=10
    [Colors]

  VOS設(shè)置文件的[Colors]部分保存16種自定義顏色,用來設(shè)置VOS控制面板。

     條目     含義
    Custom0  自定義顏色 0.
    Custom1  自定義顏色 1.
    Custom2  自定義顏色 2.
    Custom3  自定義顏色 3.
    Custom4  自定義顏色 4.
    Custom5  自定義顏色 5.
    Custom6  自定義顏色 6.
    Custom7  自定義顏色 7.
    Custom8  自定義顏色 8.
    Custom9  自定義顏色 9.
    Custom10  自定義顏色 10.
    Custom11  自定義顏色 11.
    Custom12  自定義顏色 12.
    Custom13  自定義顏色 13.
    Custom14  自定義顏色 14.
    Custom15  自定義顏色 15.
  自定義顏色的格式使用Win32RGB的十六進制值。
  [Consts]
  VOS設(shè)置文件的[Consts]部分指定VLC開始運行時聲明的常量。
    [Consts]
    Const1=<Name>[:Value]
    Const2=<Name>[:Value]
    ... etc. for Const3, Const4, ...

  [DateTime]
  VOS 設(shè)置文件的[DateTime]部分可以使用戶覆蓋(override)VOS的時間設(shè)置。

  條目 含義
  DST 設(shè)置為0表示使用標準的時間,設(shè)置值大于0表示使用夏令時。如果設(shè)置值小于0,對于給定的日期,VOS計算決定使用標準時間或者daylight savings時間。

  [DBF]
  VOS設(shè)置文件的[DBF]部分設(shè)置使用DBF數(shù)據(jù)庫的VOS參數(shù)。

  條目 含義
  AllowUnsafe2 是否允許使用不安全的db_fput調(diào)用?1:可以使用,0:不可以使用。
  MaxBases 最大的活動數(shù)據(jù)庫數(shù)目
  MaxBaseHandles 最大數(shù)據(jù)庫句柄(描述符)數(shù)目
  MaxFields 一個數(shù)據(jù)庫的最大字段數(shù)
  MaxRecHandles 最大記錄句柄(描述符)數(shù)目
  MaxRecBytes 記錄的最大長度,必須大于數(shù)據(jù)庫中的記錄長度,使用dmpdbf.exe函數(shù)檢查數(shù)據(jù)庫記錄長度
  MaxRecs 最大的活動記錄數(shù)。

  [Exceptions]
  VOS設(shè)置文件的[Exceptions]部分設(shè)置異常處理。

  條目 含義
  Handler Handler的值可以為1或2,如果為1表示VOS不作任何異常處理或記錄日志。如果Handler值為2表示VOS進行異常處理(在EXCEPT.RPT文件中記錄異常日志),并且在ERRORLEVEL為3的情況下立即退出程序,可以在批處理中使用。
缺省的異常處理是在EXCEPT.RPT文件中記錄異常日志,并且控制權(quán)交于下一個異常處理器,下一個異常處理器一般情況下為Dr.Watson或者Visual C++調(diào)試器。

  [File]
  VOS設(shè)置文件的[File]部分用來設(shè)置DBF數(shù)據(jù)庫文件的文件和記錄鎖定參數(shù)。

  條目 含義
  MaxLocks 文件鎖的最大數(shù)目

  [FunFileDirs]
  VOS文件中的[FunFileDirs]部分用來設(shè)定最多8個目錄,VLC應(yīng)該從這8個目錄中尋找函數(shù)文件。

  條目 含義
  Dir1 第1個函數(shù)文件目錄
  Dir2 第2個函數(shù)文件目錄
   
  Dir8 第8個函數(shù)文件目錄

  VLC檢查是從Dir1到Dir8進行的,例如,Dir1中的函數(shù)文件比Dir2中的函數(shù)文件優(yōu)先級高。這一點非常重要,尤其在不同的指定目錄中有兩文件同名的情況下,例如有兩個文件名字都為myfunc.fun,一個在C:\functions目錄中,另一個在D:\functions中。如果項目的設(shè)置文件如下所示:
    [FunFileDirs]
    Dir1=D:\functions
    Dir2=C:\functions

  編譯程序時,VOS使用D:\functions目錄中的函數(shù)。
  [Glb]
  VOS設(shè)置文件的[Glb]部分設(shè)定編號的全局變量的參數(shù)。
  以下的條目不影響命名的全局變量。

  條目 含義
  Count 允許的編號的全局變量的最大數(shù)目
  VarBytes 編號的全局變量的最大長度,以字節(jié)為單位

  [GUI]
  VOS設(shè)置文件的[GUI]部分控制VOS用戶接口的外觀,可以通過VOS控制面板中的用戶接口對話框來設(shè)定。

  條目 含義
  AboutBoxText VOS"關(guān)于"對話框中顯示的字符串
  CtlPanelTitle 設(shè)定控制面板的標題
  ConfirmStop 停止VOS時是否要有一個確認對話框?設(shè)置為1時,會出現(xiàn)確認對話框,設(shè)置為0時,不需確認,VOS直接終止。
  ShowCtlPanel VOS運行時是否顯示控制面板?設(shè)置為1時,顯示控制面板,設(shè)置為0時,隱藏控制面板。
  StopIfNoTasks 如果沒有任務(wù)運行時,VOS是否應(yīng)該停止?如果設(shè)為1,VOS就會停止,如果設(shè)置為0,VOS繼續(xù)運行。

  [IncludeFileDirs]
  VOS設(shè)置文件的[IncludeFileDirs]部分設(shè)置最多8個包含文件所在的目錄,VLC在這些目錄中尋找包含文件。

  條目 含義
  Dir1 第1個包含文件的目錄
  Dir2 第2個包含文件的目錄
   
  Dir8 第8個包含文件的目錄
     

  VLC檢查是從Dir1到Dir8進行的。例如,Dir1中的函數(shù)文件比Dir2中的函數(shù)文件優(yōu)先級高這一點非常重要,尤其在不同的指定目錄中有兩文件同名的情況下,例如有兩個文件名字都為project.inc,一個在C:\include directory目錄中,另一個在D:\include directory中。如果項目的設(shè)置文件如下所示:
    [IncludeFileDirs]
    Dir1=D:\include
    Dir2=C:\include

  程序編譯后,VOS將使用D:\include directory目錄中的文件。

  [Load]
  VOS設(shè)置文件的[Load]部分設(shè)定缺省狀態(tài)下VOS載入的DLL,
調(diào)試和非調(diào)試DLL文件的名字和路徑名在VOS.INI文件中的[DLLs]部分設(shè)定。

  條目 含義
  DebugDLL VOS缺省狀態(tài)下是否載入調(diào)試DLL(即調(diào)試模式下開始)?如果設(shè)為1,則缺省為調(diào)試模式,如果設(shè)為0,則缺省為非調(diào)試模式。

  [Log]
  VOS設(shè)定文件的[Log]部分設(shè)定VOS日志文件的參數(shù)。

  條目 含義
  Append 是否將一條新的日志附在一個存在的日志后?如果設(shè)為1,則VOS運行時,將新的日志添加在舊的日志文件后,如果設(shè)為0,則VOS開始運行時,將覆蓋所有舊的日志。
  Buffer 布爾值,設(shè)置為1是允許緩沖,設(shè)置為0是不允許緩沖。如果允許緩沖,VOS在內(nèi)存中保留多于1行的日志,往日志文件中一次寫入一組日志。如果不允許緩沖,VOS不在內(nèi)存中保留,一次往日志文件中寫入1行日志。
  Commit 布爾值,如果設(shè)為1,每向日志文件寫入一行時,都要將日志文件寫入磁盤(此操作相當于Windows是否緩沖)。如果Commit=1時,只有Windows終止一個進程時才向硬盤寫入日志文件。通常情況下不需要這樣,因為即使一個進程終止時,Windows會把緩沖區(qū)的所有字節(jié)寫入文件,這種操作會很慢,所以如果真正需要,設(shè)為1。
  Dir 日志文件vos?.log所存儲的目錄
  MaxSizeKb VOS日志的最大長度

  [Msg]
  VOS 設(shè)置文件的[Msg]部分設(shè)定消息函數(shù)參數(shù)。

  條目 含義
  MaxCount 消息的最大數(shù)目
  MaxChars 消息的最大字符數(shù),加上一個終止符字節(jié)
  Msg_IntervalMs  

  [NTX]
  VOS設(shè)置文件的[NTX]部分設(shè)定DBF數(shù)據(jù)庫索引參數(shù)。

  條目 含義
  Buffers 每個索引的緩沖:參見設(shè)定文件索引要求。
  Clipper NTX:0=older VOS 1=自由排列 2=關(guān)鍵詞排序 3=both
  MaxKey 索引字段最大長度:參見文件索引要求。
  MaxOpen 索引文件最大數(shù)目:參見文件索引要求。
  PageErrFatal 一個頁面錯誤是否關(guān)鍵?設(shè)為1表示頁面錯誤關(guān)鍵,設(shè)為0表示頁面錯誤不關(guān)鍵。

  [Pio]
  VOS設(shè)置文件中的[Prio]部分可以設(shè)定VOS進程、基本線程、GUI線程在Windows中的優(yōu)先級。Windows優(yōu)先級在MSDN庫中詳細解釋,參見MSDN庫中的SetThreadPriority和SetThreadPriorityBoost Win32 API函數(shù)。
  VOS開始時,調(diào)用SetThreadPriority和SetThreadPriorityBoost Win32 API函數(shù)(使用VOS設(shè)置文件本部分設(shè)定值)。通過控制面板的優(yōu)先級設(shè)定對話框改變設(shè)置時,也要調(diào)用上述2個API函數(shù),不需要重啟動VOS來改變屬性。

  條目 含義
  GuiBoost 是否允許提高VOS GUI線程的優(yōu)先級,如果設(shè)為1,允許,設(shè)為0,不允許。
  GuiThread 設(shè)定VOS GUI線程的優(yōu)先級。線程優(yōu)先級和有效優(yōu)先級的值參見MSDN庫SetThreadPriority(Win32API函數(shù))。
  PrimaryBoost 是否允許提高VOS基本線程的優(yōu)先級,1表示允許,0表示不允許。關(guān)于提高優(yōu)先級的解釋參見MSDN 庫 SetThreadPriorityBoost(一個Win32 API函數(shù))。
  PrimaryThread 設(shè)置VOS基本線程的優(yōu)先級。線程優(yōu)先級和有效優(yōu)先級的值參見MSDN庫SetThreadPriority(Win32API函數(shù))。
  ProcessClass 設(shè)置VOS例程類的優(yōu)先級。線程優(yōu)先級和有效優(yōu)先級的值參見MSDN庫SetThreadPriority(Win32API函數(shù))。

  [R4]
  VOS設(shè)置文件的[R4]部分設(shè)定傳統(tǒng)(legacy)VOS函數(shù)的參數(shù),如sc_,DTI_函數(shù)等等。
  如果應(yīng)用程序中沒有使用這些函數(shù),設(shè)置文件中刪去此節(jié)。

  條目 含義
  Enable VOS是否載入R4驅(qū)動?1表示載入,0表示不載入。
  fxSendFiles 單個FaxSend發(fā)送的傳真文件的最大數(shù)目。
  gcIEBytes ISDN信息元素中字節(jié)的最大數(shù)目。
  scEnablePCPA 系統(tǒng)是否使用Perfect CPA?1表示使用,0表示不使用。
  scNshgup 是否把連續(xù)音視為掛機?1表示是,0表示否。
  scPhraseWords 短語中最多單詞數(shù),必須大于0

  [RLLs]
  VOS設(shè)置文件[RLLs]部分設(shè)定VOS或VLC運行時載入那些RLL。

  條目 含義
  RLL1 第1個RLL路徑名
  RLL2 第2個RLL路徑名
   
  RLL8 第8個RLL路徑名

  [SearchPaths]

  VOS設(shè)置文件中的[SearchPaths]部分設(shè)定查詢IPF、Par文件和VX文件的路徑。
  如果一條SearPaths要列出多個路徑,各路徑用分號隔開:
  [SearchPaths]
  IPF=.;.\IPF;c:\Projects\IPFs;

  條目 含義
  IPF 設(shè)定查詢索引的提示語文件的路徑
  Par 設(shè)定查詢PAR文件的路徑
  VX 設(shè)定VOS命令行下或chain、spawn下查詢.vx文件的路徑。

  [Sem]
  VOS設(shè)置文件的[Sem]部分設(shè)定信號量(Semaphore)參數(shù)。

  條目 含義
  Count 編號的信號量(Semaphore)的最大數(shù)量

  [Ser]
  VOS設(shè)置文件的[Ser]部分設(shè)定串口的參數(shù)。

  條目 含義
  BuffKb 串口緩沖區(qū)大小,以字節(jié)為單位
  Ports 支持的串口數(shù)目
  Ser_IntervalMs 輪循串口的間隔,毫秒為單位,缺省為50

  [SRL]
  VOS設(shè)置文件的[SRL]部分設(shè)定標準運行庫(SRL)事件的參數(shù)。

  條目 含義
  Srl_IntervalMs 輪循DialogicSRL事件的間隔,毫秒為單位,缺省為25。

  [Task]
  VOS設(shè)置文件[Task]部分設(shè)定任務(wù)管理參數(shù)

  條目 含義
  MaxCount 任務(wù)的最大數(shù)目
  MaxName VOS任務(wù)名的最大長度

  [Trace]
  VOS設(shè)置文件[Trace]部分設(shè)定跟蹤選項

  條目 含義
  ActiveX VOS是否應(yīng)進入對象跟蹤(只在調(diào)試模式下使用)?設(shè)為1表示跟蹤,設(shè)為0表示不跟蹤。
  Builtins VOS是否應(yīng)跟蹤所有的內(nèi)置函數(shù)?設(shè)為1表示跟蹤,0表示不跟蹤。
  Drivers 跟蹤API函數(shù)調(diào)用
  InOut 調(diào)用函數(shù)前后都要跟蹤。當函數(shù)調(diào)用使VOS崩潰時有用,正常情況下函數(shù)調(diào)用在返回后寫入日志,但如果函數(shù)崩潰,在日志中不會記錄。
  Layer 為傳統(tǒng)函數(shù)sc_、DTI_等創(chuàng)建DOS到Windows轉(zhuǎn)換層的日志。
  OutputToVosBox 跟蹤信息是否既顯示在VOS對話框中,又記錄在日志文件中?1表示既顯示跟蹤信息,又記錄在日志文件中,0表示只記錄在日志文件中。
  Override 單個程序中,是否用此設(shè)置文件中的條目替換trace()函數(shù)設(shè)定的跟蹤選項?設(shè)為1表示替換,設(shè)為0表示使用程序的設(shè)定。
  Pcode VOS是否跟蹤所有的p-code指令?設(shè)為1表示跟蹤,設(shè)為0表示禁止p-code跟蹤。(p-code跟蹤會產(chǎn)生大量的日志數(shù)據(jù))。
  RLLs VOS是否跟蹤所有的RLL調(diào)用?設(shè)為1表示跟蹤,設(shè)為0表示禁止RLL跟蹤。
  Stack VOS進行p-code跟蹤時是否包含堆棧?設(shè)為1表示包含堆棧,設(shè)為0表示忽略堆棧。
  Structs VOS是否跟蹤API結(jié)構(gòu)的成員?設(shè)為1表示跟蹤,設(shè)為0忽略結(jié)構(gòu)。
  Vars VOS跟蹤p-code時是否包含變量?設(shè)為1表示包含,設(shè)為0表示忽略變量。

  [TrayIcon]
  VOS設(shè)置文件中的[TrayIcon]部分設(shè)定當VOS運行時系統(tǒng)圖標。從VOS控制面板中的用戶接口對話框中可以找到這些條目。

  條目 含義
  Animate 圖標是否為動畫?設(shè)為1表示運行動畫,設(shè)為0表示禁止動畫。
  HWND VOS內(nèi)部使用。
  Show VOS運行時是否顯示系統(tǒng)圖標?設(shè)為1表示顯示,設(shè)為0表示隱藏。
  Tooltip 設(shè)定系統(tǒng)圖標的提示語,用戶圖標停在系統(tǒng)圖標上時,顯示提示語。

  [VLC]
  VOS設(shè)置文件的[VLC]部分設(shè)置VOS語言編譯選項。

  條目 含義
  GenerateDebugSymbols VLC是否產(chǎn)生調(diào)試符號?設(shè)為1表示產(chǎn)生,設(shè)為0表示不產(chǎn)生,缺省狀態(tài)下為產(chǎn)生調(diào)試符號。
  GenerateLineMarks VLC是否產(chǎn)生行標記?設(shè)為1表示產(chǎn)生,設(shè)為0表示不產(chǎn)生,缺省狀態(tài)下為產(chǎn)生行標記。
  ListFileName 指定創(chuàng)建的列表的文件名,如果此項沒有指定,則不創(chuàng)建列表文件。
  ReportUnusedVariables 設(shè)為1表示報告未用的變量,設(shè)為0表示不報告未用的變量,缺省為不報告。
  LongFileNameSupport VLS查找函數(shù)文件時是否使用長文件名?如果設(shè)為1,VLC使用完整的函數(shù)名作為長文件名,如果沒有找到,報告錯誤。例如,如果一個函數(shù)名為MyFunction(),VLC查找MyFunction.Fun文件。如果設(shè)為2,VLC使用完整的函數(shù)名作為長文件名,如果沒有找到,把函數(shù)名截短為8字符,繼續(xù)尋找相應(yīng)的.Fun文件,如果沒有找到,報告錯誤。例如,如果一個函數(shù)為MyFunction(),VLC查詢文件MyFunction.Fun。如果VLC沒有找到,繼續(xù)尋找MyFuncti.Fun。如果設(shè)為3,VLC截短函數(shù)名,只尋找截短函數(shù)名的文件。例如,如果尋找MyFunction(),VLC只尋找MyFuncti.Fun。缺省狀態(tài)下,支持長文件名。
  StackDepth 設(shè)置堆棧深度。
  StackSize 設(shè)置堆棧的大小,以字節(jié)為單位,缺省為2048。
  Verbose 顯示編譯過程,數(shù)值從0到9來顯示進行的細節(jié)。

  [VLs]
  VOS設(shè)置文件中[VLs]部分指定VOS或VLC運行時載入的VL文件,一個Vlc庫文件是一組函數(shù)文件的集合,Vlc庫文件的擴展名為.VL。
    [VLs]
    Lib1=<VL path name>
    ... etc for Lib2, Lib3...


  [VosBox]
  "VOS Box"窗口是一個模擬MS-DOS PC的25x80字符的窗口,此窗口是為了與DOS版本的VOS后向兼容。
  VOS設(shè)置文件的[VosBox]設(shè)定VOX Box的選項,也可以從VOS控制面板的用戶接口對話框來設(shè)置。

  條目 含義
  BkBlue 背景顏色中藍色的密度(0到255)
  BkGreen 背景顏色中綠色的密度(0到255)
  BkRed 背景顏色中紅色的密度(0到255)
  EnableCtrlBreak 是否支持按Ctrl+Break來停止VOS?設(shè)為1表示支持,設(shè)為0表示不支持,缺省為不支持Ctrl+Break停止VOS。
  Font 用來選擇屏幕顯示的字體,對于顯示國家字符是必需的。
  FontBlue 文本字體顏色中藍色的密度(0到255)
  FontGreen 文本字體顏色中綠色的密度(0到255)
  FontItalic 字體是否為斜體?設(shè)為1表示是斜體,0表示正常。
  FontRed 文本字體顏色中紅色色的密度(0到255)
  FontSize 設(shè)定屏幕顯示字體的大小,以點為單位
  FontWeight 字體粗細度(有效值參見Win32 CreatFont函數(shù))
  Show VOS運行時是否顯示VOS Box?設(shè)為1表示顯示,設(shè)為0表示不顯示。
  ShowTime VOS Box是否顯示當前時間?設(shè)為1表示顯示,設(shè)為0表示不顯示。
  Title 此字符串為VOS Box的標題,如果沒有設(shè)置標題,VOS使用缺省的標題"VOS Box"。

  6.25.1.2. VOS.INI文件

  VOS.INI文件保存影響VOS的設(shè)置,設(shè)置如下:
[Settings]
  VOS.INI文件中[Settings]指定為缺省設(shè)置文件:
    [Settings]
    Default=c:\Vos\Settings\Default.vos

[DLLs]
  VOS.INI文件中[DLLs]指出調(diào)試和非調(diào)試 VOS DLL的位置:
    [DLLs]
    Debug=c:\Vos\Bin\Vosd.dll
    NonDebug=c:\Vos\Bin\Vos.dll

[Service]
  VOS.INI文件中[Service]指定業(yè)務(wù)相關(guān)性和VOS作為WindowsNT/2000業(yè)務(wù)運行時所需的其他設(shè)置:
    [Service]
    GroupName=VoiceMail
    Dependencies=Dialogic;Telephony
    GroupOrderTag=2

7. CT ADE 體系結(jié)構(gòu)(Topaz),介紹

  第一個問題:什么是 CT ADE體系結(jié)構(gòu)(TOPAZ)?
  回答這個問題之前,首先回顧一下CTI應(yīng)用所提出的問題。
  開發(fā)電話應(yīng)用程序時必須清楚:電話線的類型、電路板的類型和相關(guān)的不同的API。有3種接口:
  ·模擬
  ·數(shù)字(R2,ISDN,SS7等等)
  ·IP(Voice over IP)
  比如,如果需要為每種接口開發(fā)和維護相同的應(yīng)用,應(yīng)該開發(fā)3種不同的程序:模擬版本、數(shù)字版本和IP版本。另外,這些應(yīng)用程序直接依賴于電路板API。而且,如果要把應(yīng)用程序應(yīng)用到CT 媒體上,就必須重新從開始開發(fā)整個程序。
CTADE_A具有很多的好處,隨 CTADE_A帶有可以一組簡單的命令,這允許我們?yōu)椴煌愋偷闹欣^和API只開發(fā)一套應(yīng)用程序就可以了。這種概念稱為API透明性。
CTADE_A怎樣實現(xiàn)透明?
  下面圖表顯示了在系統(tǒng)中TOPAZ處在何處,它是怎樣分開應(yīng)用程序和API的。

  從上圖中可以看出,TOPAZ處于API和應(yīng)用程序之間。TOPAZ檢測API函數(shù)和安裝的板卡(使用Topaz Profile,以后介紹)。
  TOPAZ是面向資源的,它直接處理系統(tǒng)中的電話資源。
  這就是我們所謂的面向系統(tǒng)資源。什么是資源?
  資源是指可以共享和使用的一個和一組元素,其中每一個元素都代表實體元素。首先要定義資源的類型。VOS中有下列資源:
  ·中繼資源:線路接口資源
  ·媒體資源:播放、錄音、產(chǎn)生和檢測各種聲音的資源。
  ·傳真資源:發(fā)送和接收傳真的資源
  ·語音識別資源:語音識別資源
  ·文本到語音轉(zhuǎn)換資源:文本到語音轉(zhuǎn)換資源
  ·會議資源:協(xié)商安排和控制資源
  由下面的VOS代碼可以看出,關(guān)于資源的函數(shù)名總是以相應(yīng)資源的名稱開始:

 7.1. 圖形化VOS,CT ADE 體系結(jié)構(gòu)(Unleashed)

  我們已經(jīng)知道了怎樣創(chuàng)建一個項目和怎樣向一個項目加入必須的文件,另外,我們已經(jīng)知道了怎樣設(shè)置一個VOS項目。
  下面介紹CTADE_A和VOS語言,我們已經(jīng)知道,CTADE_A是一組軟件模塊,用來銜接CTADE_A命令(MediaPlayFile、MediaRecofd等等)和安裝的CTI API。
CTADE_A是面向資源的。從前面的介紹可以得知,有許多種資源(中繼、媒體、傳真、ASR、TTS、會議(Conference))等等,Dialogic板卡上的這些資源使用不同的技術(shù)。
這些資源中每一種資源都包含許多內(nèi)部狀態(tài),這些狀態(tài)的轉(zhuǎn)換都與資源短語(resource live phases)有關(guān)。關(guān)于這些狀態(tài),請參見Graphical
  VOS User's Guide en la sección CTADE_A->Resource Stats.。

  7.1.1. CTADE_A,資源和資源索引號碼

  許多VOS函數(shù)控制CTADE_A資源,例如,函數(shù)MediaPlayFile在當前的媒體資源上播放一個聲音文件,F(xiàn)在,我們介紹資源的概念并且討論資源編號方式是怎樣工作的。
  資源就是呼叫處理系統(tǒng)的一個組成部分。在大多情況下,單個資源在一條電話線或一個數(shù)字中繼上播放單個語音流。
  每一資源由資源索引號碼來區(qū)分,通常不需要考慮資源索引號碼,因為當應(yīng)用程序需要資源時,VOS負責這些資源的預(yù)留和路由。但如果要控制應(yīng)用程序使用資源的方式,就需要靠資源索引號碼來指定資源。每種資源的索引號碼都從0開始且獨立編碼:一個VOS任務(wù)能夠很方便的使用中繼資源1和媒體資源4。
  另外,可以通過多個函數(shù)來得到資源索引的資源:
  -ResourceTypeGetIndex,返回當前資源的索引號,如:MediaGetIndex,   TrunkGetIndex
  -ResourceTypeGetCount,返回資源的總數(shù),如:MediaGetCount,      TrunkGetCount。

  7.1.2. CTADE_A 函數(shù)概述

  CTADE_A中,所有的函數(shù)有資源分組,CTADE_A的每一種資源根據(jù)不同的特征形成一組函數(shù)。通常情況下,系統(tǒng)中的所有資源都有一個號碼,我們可以通過索引來操作每一種資源。有兩種資源來請求資源:自動和手動。例子:

   7.1.2.1. CTADE_A函數(shù),異步模式。

  缺省狀態(tài)下,VOS一直在等待,直到所有的CTADE_A函數(shù)執(zhí)行結(jié)束(同步模式),例:
    MediaPlayFile("LeaveMsg.vox");
    MediaRecordFile("Message");

  缺省狀態(tài)下,MediaPlayFile在vox文件播放完畢或者其他終止條件(DTMF,靜音等等)下退出執(zhí)行。
  但是,在許多情況下,需要調(diào)用函數(shù)的同時繼續(xù)執(zhí)行程序(異步模式),例:
    MediaPlayFile("Welcome.vox");
    Balance=CheckBalance(AccountNo);
    MediaPlayFile(Balance&".vox");
  
假設(shè)函數(shù)CheckBalance要運行1到10秒(決定于數(shù)據(jù)庫服務(wù)器的忙閑程度),最差情況下,呼入的用戶需要在第一次播放和balance的結(jié)果之間等待10秒。
  異步執(zhí)行通過使用函數(shù)MediaEnableAsync()可以避免這些問題,如下:
    MediaEnableAsync();
    MediaPlayFile("Welcome.vox");
    Balance=CheckBalance(AccountNo);
    MediaWait();--------------------→此函數(shù)一直等到媒體資源變?yōu)榭臻e狀態(tài)
    MediaPlayFile(Balance&".vox");

  7.1.2.2. CTADE_A函數(shù),中繼資源和函數(shù)
  中繼函數(shù)是用來管理系統(tǒng)中的中繼資源,目的是做以下事情:
  ·進行呼出
  ·呼叫過程分析
  ·應(yīng)答或拒接一個呼入呼叫
  ·獲得呼叫信息(ANI,DNIS,呼叫者姓名,等等)
  ·掛斷電話
  可以看出,中繼資源負責所有的呼叫控制,一個中繼資源處理單個語音流,所以下列都可以看作是一個中繼資源
  ·單個模擬線的中繼接口
  ·E1/T1的一個時隙
  ·一個MSI站(An MSI Station)
  ·SimPhone模擬中繼線(索引號總為0)
  控制中繼資源的函數(shù):

  7.1.2.3. CTADE_A函數(shù),媒體資源與函數(shù)

  媒體資源控制播放、錄制語音文件和各種提示音,并且從呼叫方接收DTMF位。
  ·向呼叫方播放語音文件和提示語。
  ·播放可變信息:"你地余額為300.17元"。
  ·錄制語音文件,提示怎樣將呼叫方的語音錄制成語音文件。
  ·使用停止播放來表示摘機音,當呼叫方撥號時,停止播放或錄音。
  ·從呼叫方接收描述檢索摘機音的數(shù)目。
  ·向呼叫方展示怎樣播放普通的提示音。
  控制媒體資源的函數(shù)如下:





  7.1.2.4 CTADE_A 函數(shù),傳真資源和函數(shù)

  傳真資源控制傳真數(shù)據(jù)的傳送與處理。Dialogic VFZ板上或GammaLink CP板上的一個單個的傳真通道為一個傳真資源。
  必須注意傳真資源只能收發(fā)傳真數(shù)據(jù),所有其他需要呼出或呼入電話的操作應(yīng)由中繼資源或媒體資源完成。
  傳真資源由傳真函數(shù)管理,
  ·發(fā)傳真
  ·收傳真
  ·輪循傳送或逆向傳送



  7.1.2.5. CTADE_A函數(shù),會議(Conference)函數(shù)

  會議資源用來創(chuàng)建和管理會議。
  會議函數(shù)完成下列功能:
  ·創(chuàng)建會議
  ·從一會議中刪去某與會方
  ·刪除會議
  多會議函數(shù)如下:



  7.1.2.6. CTADE_A 函數(shù),語音識別函數(shù)

  語音識別資源把呼叫者的語音轉(zhuǎn)變?yōu)槲谋咀址。一個VR資源可以對一個語音流數(shù)據(jù)(來自一中繼或會議資源)進行識別。
  可以通過VrGetCount函數(shù)來查找系統(tǒng)中VR資源的數(shù)目。
  注:系統(tǒng)中CTADE_A為每一媒體資源創(chuàng)建一語音識別資源,由于語音引擎的限制,可能不能同時使用VR資源。






[ 全文英文版 ]

 

 

本文[ 目錄 ] [ 第一頁 ] [ 第二頁 ] [ 第三頁 ]

融合通信專欄>>技術(shù)開發(fā)>>