線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:5525
推到 Plurk!
推到 Facebook!

電話應用程式設計介面 (TAPIs)

 
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-15 10:43:25 IP:61.218.xxx.xxx 未訂閱

電話應用程式設計介面 (TAPIs)


MicrosoftÃ?® telephony application programming interfaces 支援通訊應用程式的發展
下列表格中描述電話介面:
Interface Description
TAPI 2.x 一個以C為基礎的API使你能夠實行基本的數據機控制及呼叫中心多重代理程式和轉換的通訊應用程式。
TAPI 3.x 一個以 COM 為基礎的 API結合了classic及網路電話。
TSPI 一個電話服務供給者 (TSP)是一個動態聯結函式庫 (DLL)透過一組輸出服務函數支援通訊裝置控制。 TAPI 應用程式使用標準化指令,TAPI 傳送資料給電話服務供給者﹐而且 TSP 必須處理與裝置交換的特定指令。
MSPI 一個媒體服務供給者 (MSP)為一個獨有的傳送機制允許一個應用程式對媒體的相當多的控制。 MSP 必須與電話服務供給者(TSP)搭配。

Microsoft Telephony 概觀


Telephony整合電腦與通訊裝置和網路。
在classic telephony之下﹐裝置是一個電話,而且網路是Public Switched電話網路(PSTN)。
現代的telephony不斷地擴大裝置和網路的範圍,而且現在含蓋了攝影機及網路。
Possible telephony applications include:
  • 多點廣播多媒體 IP 會議
  • 在網際網路上的語音呼叫(VoIP)
  • 自動呼叫分配 (ACD)中心的用戶端和伺服器應用程式
  • 在 PSTN 上的基本語音呼叫
  • PBX-like控制 , 像是call park及企業聽筒網路選擇性轉接
  • 交談式聲音回應系統 (IVR)
  • 即時 collaboration
下圖舉例說明 Microsoft Telephony架構:
請注意 TAPI 沒有限制 PSTN ,ISDN或TCP/IP 傳送。
Microsoft Telephony architecture, with hyperlinks to Platform SDK topics
未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-15 11:21:07 IP:61.218.xxx.xxx 未訂閱

TAPI 迅速的開始

電話學應用程式設計介面是一個廣泛的和有能力的 API 。
下列的題材是一系列的聯結和提議可以幫助你啟動寫 TAPI 應用程式或把功能加入已存在的程式碼。

Code Samples

Platform SDK 的範例章節裡完整的包含C,C , 和 Visual Basic compilable TAPI 程式。
這些範例可以幫助你開始了解多方面的函數的使用。

雖然這些範例不是用 delphi 寫成的,但是對於學習 TAPI 還是有幫助的,建議多多看範例

Code Snippets

下列各項 SDK 主題舉例說明使用程式碼片斷 的基本 TAPI 操作。

Reference Page Summaries

下列各項主題包含參照頁摘要:
Area Link
TAPI 2.x TAPI Quick Function Reference
TAPI 3.x Call and Media Controls Quick Reference Rendezvous IP Telephony Conferencing Reference
TSPI TSPI Quick Function Reference
MSPI Media Service Provider Interface (MSPI) Reference

Hyperlinked Graphics

下列各項主題包含的超連結可以找出你自己適用的 TAPI :
Microsoft Telephony Overview
About Call And Media Controls
TAPI Service Provider Overview

TAPI 新聞群組

Usenet新聞群組在除錯程式碼方面可能是資料的交換的好論壇和協助。
如果你不熟悉 USENET ,這一個網頁提供一些基本的描述:
進入你的喜愛的搜尋引擎之內輸入 "Usenet Newsgroups"或 http:// extra.newsguy.com/intro.htm
微軟主辦許多新聞群組,包括二個專攻 TAPI:
News Server
msnews-gw
Groups
microsoft.public.win32.programmer.tapi microsoft.public.win32.programmer.tapi.beta
未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-15 13:25:19 IP:61.218.xxx.xxx 未訂閱

Microsoft Telephony Programming Model


下列各項圖表舉例說明這抽象化如何是完成的。
How TAPI abstracts communications control from device control
電話應用程式設計介面 (TAPI)應用程式知道使用者的需要, TAPI DLL 和 TAPISRV 了解普遍的電話原理﹐而且服務供給者 (TSP 和MSP)知道詳細的裝置控制。
製造業者及應用程式作家只需要彼此要求的一般知識。

  • 一個應用程式載入 TAPI DLL 到它的程序之內和使用需要的 TAPI 溝通。
  • TAPI 制定一個與 TAPI 伺服器的 RPC 聯結通訊。
  • 除此之外, TAPI 3. x 建立一個MSP物件而且使用一組已定義的指令與媒體服務供給者介面(MSPI)溝通。
  • 當一個應用程式呼叫一個 TAPI 操作, TAPI DLL匯集有效參數,然後轉寄資料到 TAPISRV。
  • TAPISRV 追蹤可用的通訊資源給local machine和電話服務供給者 的電話服務供給者 (TSPs)使用的TSPI介面
  • TSP 和MSP之間的通訊透過 TAPI DLL 和 TAPISRV 的虛擬連接。
  • TSP/MSP 供給裝置的狀態和功能資訊及實行特定的指令。
使用這一個程式設計模型的結果是應用程式可以對裝置改變或調整不理睬,而且新的裝置可能是立即有用代替等候程式碼基本的改變。
潛在的市場佔有率為應用程式作家和裝置製造業者擴大。

下列各項主題更詳細地描述微軟Telephony元件:
未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-15 14:01:00 IP:61.218.xxx.xxx 未訂閱

TAPI 應用程式

下列的題材提供使用 TAPI 編寫末端使用者或伺服器通訊應用程式指導方針。
這一個資訊也對服務供給者程式設計者有高度的關係。
首先決定程式設計者需要作出在使用 TAPI 方面的服務層次。
舉例來說﹐如果應用程式需要有一個選單可以選擇撥電話號碼,這可能不需要完整的 TAPI 應用。
Telephony協助可以很快地而且簡單使這選項能夠完成。
關於更多完整的 TAPI 應用及電話協助之間資訊請見 TAPI 服務的層次

第二的重要的決定是使用以C 為基礎的 TAPI 2. x 或 以 COM 為基礎的 TAPI 3. x。
在決定使用哪一個方面的考慮的討論請見 TAPI 3. x 和 TAPI 2. x 比較
下列圖表舉例說明完整的 TAPI 應用程式的基本的模塊:
Building blocks of a TAPI application
未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-15 14:59:26 IP:61.218.xxx.xxx 未訂閱
在上一篇 我們已知道 製作 TAPI 應用程式可以使用 TAPI 2.X 或 TAPI 3.X 來完成    那麼 DELPHI 要如何使用TAPI 2.X 或 TAPI 3.X 呢?  其實很簡單 只要將 TAPI.H 及 TAPI3.H 改編成 delphi 格式 即可使用 所以我們可以上網找找看 是否有 善心人士以幫我們改編好了    TAPI 2.0
Microsoft Telephony API (Delphi implementation of the Windows Telephony headers. There's a test program that can monitor calls made with other TAPI to place calls and obtain the COM handle. Fully functional Source: Included
Download: Delphi TAPI

DELPHI 使用TAPI 3.0 就更方便了 ,匯入TAPI 3.0 LIB 方法如下
Project | Import Type Library
Selected "Microsoft TAPI3 Type Library (Version 1.0);
It shows 3 class names:
1. TTAPI
2. TDispatchMapper
3. TRequestMakeCall
未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-16 12:42:21 IP:61.218.xxx.xxx 未訂閱

TAPI 初始設定

TAPI 元件運用首先需要設定電腦上的通訊環境如下列各項:

Installation 安裝

The primary sources for installation procedures are the Resource Kit for the target operating system, application documentation, and service provider instructions. For Microsoft?® service providers, the appropriate resource kit contains instructions.
The installation process must include listing "Telephony Service" as dependency.
If an application or service provider uses the registry for storage of persistent private data, the information must not be placed in TAPI's section of the registry. The format of this section is not guaranteed to be maintained in future versions.

Primary Initialization

TAPI 應用程式一定要呼叫 initialization操作,提示 TAPI 和服務供給者為應用程式建立通訊環境的的一系列的作用。
  • Initialization是同步的並且直到操作完成才傳回成功或已經失敗。
  • 如果 TAPISRV 尚未執行,TAPI 會啟動它。
  • TAPI 建立與 TAPISRV 程序的連線。
  • TAPISVR 載入在系統登錄資料庫中指定的服務供給者並且提示他們設定他們支援的裝置初值。
TAPI 2.x:應用程式呼叫 lineInitializeEx 執行設定初值.
TAPI 3.x: 應用程式藉由呼叫ITTAPI.Initialize執行設定初值.

Version Negotiation 版本交涉

隨著時間的過去﹐TAPI 應用程式, TAPI, 和服務供給者存在不同的版本。
TAPI 應用程式的最佳的互通性需要知道不只是應用程式的 TAPI 版本,也要知道 TAPI DLL , TAPISVR 和服務供給者版本。
版本交涉失敗會造成嚴重問題。
舉例來說,不同的版本可能在資料結構上會有所從不同。
如果結構大小應用程式或 TAPI 所預定的大小不匹配,則將發生嚴重的錯誤。
對於資料結構的附加資料,請見 TAPI Versioning.
TAPI 2.x:應用程式在 lineInitializeEx 期間以 TAPI 和 TAPISVR 交涉。
因為每個line應用程式也許會使用 , 應用程式藉由呼叫 lineNegotiateAPIVersion 和服務供給者執行裝置交涉。
TAPI 3.x:不需要執行版本交涉;然而如果一個介面在他們的版本上是否可得﹐你可以使用 QueryInterface 決定。


Resource Inventory 詳細可用資源目錄

應用程式必須列入詳細可用的通訊資源目錄,然後通知 TAPI 它將使用那一個資源和它將如何使用他們。
應用程式也許存取的資源和功能的類型上附加的資料請見裝置控制

TAPI 2.x: lineInitializeEx 執行完後傳回可用的LINE數目。
然後可以在每個line上執行 lineGetDevCaps,為每個位址呼叫 lineGetAddressCaps , 和 為將被使用的每個線呼叫 lineOpen

TAPI 3.x:? ? 應用程式使用 ITTAPI.EnumerateAddresses ITTAPI.get_Addresses 找出有用的 addresses . ITMediaSupport ITAddressCapabilities 提供每個addresses的通訊形態資訊. 如果服務供給者實行, ITTerminalSupport 提供應用程式存取及控制附加資料。

Event Notification 事件通知

事件通知是應用程式從 TAPI 和服務供給者取得資料的主要方法。
這一個資訊可以是應用程式非同步操作的狀態或是在應用程式外部的啟動程序像是新的來電通知,。

TAPI 2.x: 應用程式處理通知分為三部份:隱藏視窗,事件處理,或埠完成。關於通知機制的附加的資訊, 請見 lineInitializeEx Remarks章節。應用程式在呼叫 lineInitializeEx 之前設定 LINEINITIALIZEEXPARAMS 結構的 dwOptions 成員指定機制。
lineSetStatusMessages 函數使應用程式能夠指定接收那一個事件通知。
TAPI 3.x: 應用程式處理一般的通知使用 COM 標準可連接物件 ITTAPIEventNotification 是必須與 TAPI's 的容器物件一起登記的outgoing interface, ITTAPIEventNotification::Event 是決定應用程式的回應那一個 TAPI 程序呼叫。 ITTAPI::put_EventFilter 程序告訴 TAPI 那一個事件是與應用程式有關連的. 如果事件過濾器不法進入,應用程式將不法接收任何事件通知。 ITTAPI::RegisterCallNotifications 程序告訴 TAPI 那一個媒體類型和位址將被應用程式處理收入會議。 關於 TAPI 3 事件操作的附加的資訊,請見e Events 概觀 或Register Events 程式碼片斷.
資訊電話服務供給者實行 TSPI_lineSetDefaultMediaDetection TSPI_lineSetStatusMessages
TAPI 呼叫這些函數指示被應用程式請求的所有的 line,位址﹐媒體型態事件。

Summary of Related Reference Pages

TAPI 3.x interfaces or methods Description
ITTAPI.Initialize telephony環境設定
ITTAPI.EnumerateAddresses 列舉目前有效的 addresses.
ITTAPI.get_Addresses 建立一個目前有效的位址的集合物件。
ITTAPIEventNotification.Event 決定回應那一個非同步事件通知。
ITTAPI.put_EventFilter 設定事件過濾器遮罩,通知 TAPI 那一個事件是應用程式需要的。
ITTAPI.RegisterCallNotifications 指定媒體的位址和媒體類型收入會議命令 TAPI 傳送給應用程式 。
ITMediaSupport 允許應用程式找出位址的媒體支援的功能。

未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-09-16 15:33:24 IP:61.218.xxx.xxx 未訂閱

裝置控制

裝置控制在end-user 或伺服器應用層次需要一個相對小的一組基本資訊。
服務供給者抽象層執行詳細的裝置控制。
服務供給者式透過 TAPI 報告裝置資料給應用程式。
主要的裝置種類包括:
  • Network: 為通訊的傳輸階層。從應用程式的觀點來看﹐資料對於網路是典型的嵌入式位址型態,像是LINEADDRESSTYPE_PHONENUMBER
  • Line: 一個網路的關聯。這一項概念在 TAPI 2.2 (TAPI/C)裡被重重的使用。
  • Channel: A line的細分。應用程式通常不需要知道channels因為服務供給者配置他們然後呈現位址。
  • Address: 在網路上的網路位置。每個line或channel有一個或更多關聯的位址。位址是 TAPI 3.1(TAPI/COM)和 TAPI 2.2(TAPI/C) 的一項主要的概念。
  • Terminal: 一個獨有的位址和媒體型態的來源或演示。
基本的裝置特性是:
除此之外﹐服務供給者供給關於給定的位址的容量資料執行多方面的會議操作。
如果服務供給者支援補充特性,則補充特性可以與某個裝置關聯。
TAPI 2. x 應用程式使用 lineGetDevCaps lineGetAddressCaps 函數找出capabilities。
TAPI 3. x 應用程式使用 ITAddressCapabilities 介面作為這個目的。

TAPI 2. x 提供一組特別的補充操作讓服務供給者可以使用phone裝置。請見話筒裝置

擴充功能是provider-specific及無法直接含蓋Microsoft Telephony API 。請見 Extended Line Functions, Extended Telephony Phone Functions, or Provider-Specific Interfaces.
在下面為service providers查詢裝置特性及提供目前的狀態資料的 TAPI 操作摘要:
TAPI 3.x interfaces or methods Description
ITAddressCapabilities 取得關於位址的功能資料。
ITAMMediaFormat 設定及取得 DirectShow 媒體格式.
ITBasicAudioTerminal 設定及取得 標準音訊終端機特性,像是音量。
ITMediaSupport 取得關於位址的媒體支援功能資料。
ITTerminal 終端機物件基礎介面。 獲得資料 , 像是終端機類別,及媒體支援。
ITTerminalSupport 取得關於可用的終端和建立附加的終端資訊。
Provider-Specific Interfaces Service provider附屬。
未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-09-17 15:50:44 IP:61.218.xxx.xxx 未訂閱

裝置 種類

下面將介紹, 建立 TAPI 應用程式時常使用的主要裝置種類。
因為service provider 抽象化分層處理控制 , 所以典型地﹐一個應用程式不需要了解這些裝置實際運作方式及細節。

Terminal 終端

terminal 是一個獨有的位址和媒體型態的來源或 renderer.
的概念主要地用於 TAPI 3 ,對於 TAPI 2 應用程式使用終端要非常謹慎是很重要。
附加的資料請看見 TAPI 3 概觀 終端物件主題。

Network 網路

網路被視為從一點到另一點的傳達資料的傳送機制。
TAPI 服務供給者處理必需的特定的協定來執行操作 , 像是制定在網路上的通訊會議。
end-user或伺服器應用程式通常只需要一般的網路資訊,像是位址型態。
一些常用的網路類型:
  • POTS (Plain Old Telephone Service): 當在local loop及 數位傳輸到其他地方時,聲音和資料以類比格式傳輸。典型地,每一個CALL一個媒體型態,每一個LINE一個channel 。
  • ISDN (Integrated Services Digital Network): 以數位傳輸。在 Basic Rate Interface (BRI-ISDN)的 lines達到 128Kbps的速度而且Primary Rate Interface (PRI-ISDN)的 lines速度更快。至少有三個channels最多可達 32個channels,同時獨立操作聲音和資料的傳輸。國際標準。
  • T1/E1: 以數位傳輸。T1 是一個1.544Mbps容量的傳輸聯結,典型地使用是透過網路連接到遠端。在歐洲 T1 中被稱為 E1 。
  • Switched 56: 以撥接式數據通信上的 56Kbps電話線發出信號,但是需要特別的設備
  • CENTREX: 集中網路服務透過一般電話線路及使用電信公司設備。
  • Digital PBXs (private branch exchanges) and key systems: 使用專有的介面 的私人的電話系統傳輸聲音和資料。
  • IP Networks: 使用網路上的網際網路協定 (IP)傳輸聲音和資料, 像是網際網路本身或公司內部網路 。

Line 線路

line概念已經進展到部分被位址和終端機概念取代。
TAPI 3 不直接使用line的概念﹐但是 TAPI 2 持續使用line的概念。

line device is 是一個實體裝置 , 像是傳真基板,數據機 , 或連接到網路的ISDN卡。
允許應用程式發送資料給網路或接收網路的資料LINE裝置支援通訊效能。
一個line裝置包含了一組或更多的同性質的channels可以用來制定CALLS。
在 TAPI 2. x 應用程式裡﹐line裝置是實際電話裝置的邏輯表示法。
雖然”line”常常用來表示二個端點﹐但是因為 TAPI 只視為一個引線項目的一個點切換 , 摘錄單一點的line裝置是可能的。
? ? ? ? Line devices
在上圖中即使三條線由不同的硬體組成而且使用為不同的函數﹐他們被摘錄到相同的裝置型態而且被相同的規則支配。
電話表示法除了一個作為聲音呼叫的線裝置之外還有一個聽筒裝置。
當使用這線裝置收入或送出CALLS時,應用程式也將需要開啟且控制聽筒裝置類別的instance,在往後的章節中會詳細描述。
線裝置類別是一個實體LINE裝置的device-independent 表示法,像是一台數據機。
它可以包含一個或在應用程式和切換器或網路之間更多的完全相同的通訊channels。
因為channels 附屬於單一線 有完全相同的效能,他們是可互相交換。
在許多情況 (as with POTS)﹐一個服務供給者將模型化一個線只有一個 channel。
其他的技術 , 像是 ISDN,提供更多的 channel。
TAPI 2.x:? ? 應用程式使用 lineGetDevCaps 函數取得 line capabilities.
TAPI 3.x:? ? 應用程式主要使用位址概念。

Channel

每個line有一個或更多個的channels。
服務供給者通常將channels以addresses呈現給應用程式﹐所以末端使用者或伺服器不需要channels的特定的知識。
Channels是完全相同的因此可互相交換。
在POTS (Plain Old Telephone Service)﹐正好是一個線上存在一個channel﹐而且channel被獨佔使用聲音。
ISDN﹐至少三 (多達 30 或更多)個channel同時可以在一個線上存在。
每個波道可以有它自己的位址,這意謂一個線可以有多數的位址。
波道和位址之間嚴謹的關係,應用程式須依賴服務供給者實行。
一些服務供給者支援一個以上的address分配到單一波道。
在POTS線上﹐藉著各種不同的系統,多重位址變成可能,像是語音直撥(DID)或是有特色的鈴聲,那是電信公司提供的額外費用服務。
許多大公司來電使用語音直撥。
一通電話連接之前﹐分機號碼訊號被發送 PBX ,分機鈴聲代替操作者的聽筒。
在私人住處中特色鈴聲的實例,如果父母親使用第一個位址,孩子使用另外的位址,傳真機使用第三個位址。
因為只有一條線連接到房內的電話網路,當有電話打進來時所有的聽筒都會響﹐但是鈴聲不同的這是靠發話方撥的號碼所產生的。
藉由有特色的鈴聲﹐讓人知道是誰打電話進來,而且傳真機藉由認出它自己的鈴聲回應來電。
在ISDN中﹐各種不同的 B channels也許沒有個別的位址。
因為這些 B channels也許在相同的位址上,它是分配呼叫到這些 channels的服務供給者 (不是應用程式或個人分機號碼)。

Address

位址的概念是大多數的通訊操作的核心。
在網路上的一個位置以一個位址表示。
一個address的本地分配到一個 line或channel,典型地在服務供給者的安裝期間發生但是可以在隨後修改。
關於牽涉的程序的細節可以在作業系統的Resource Kit Microsoft-supplied service providers及在服務供給者說明文件中找到。
單一位址可以被一個以上的 line裝置共享。
這一概念,不同的 switch vendors有不同的名稱像是位址橋接 , multiple appearance directory number(MADN), 或bridged appearance。
在一個共享的位址上的來電呼叫是提供所有line與位址關聯。
為 TAPI 識別的配置描述請見 LINEADDRESSSHARING_ Constants
位址本身是一個字串,識別在網路上的位置。
在電話網路的情況下﹐位址是有國家或國際電碼的一個電話號碼。
如果網路是以 IP 為基礎的,位址可以是一個 IP 位址。
TAPI-defined 位址類型。服務供給者可以定義附加的位址類型。See LINEADDRESSTYPE_ Constants

位址-相關效能和訊息

不同的位址有不同的功能,效能和狀態。
服務供給這樣的資料來源。
TAPI's 的裝置查詢效能和狀態和事件報告的機制給一個應用程式資料處理位址。
應用程式處理TAPI 事件或使用查詢操作獲得這一個資訊。

TAPI 2.x:? ? 應用程式呼叫 lineGetAddressCaps 函數來決定每個address的 telephony capabilities 及 接收 LINEADDRESSCAPS 資料結構. 類似的方式是應用程式可以呼叫 lineGetDevCaps .
TAPI 3.x:? ? 應用程式使用 Address Object Interfaces 來穫得 address capabilities 及 events 資訊.

儲存電話號碼到電子通訊錄

許多使用者選取聯絡人,傳真機,電子佈告欄和其他都是從通訊錄選擇它們的名稱。
實際撥的號碼仰賴使用者的地理位置及line裝置被連接的方式。
舉例來說﹐一個桌上型電腦可以存取二條line,一條連接到 PBX,另一條連接到電信公司的中央處理機。
當製作相同團體的一個呼叫的時候﹐可以使用不同的號碼。
(舉例來說﹐電腦需要撥"9" 透過PBX取得外線﹐或不同的字透過電信公司的中央處理。)
或,使用者可以利用一部手提電腦打電話,即使從不同的位置或電話環境打電話。
TAPI's 位址傳輸效能讓電腦告知使用者目前的位置和需要的線裝置。
TAPI 然後處理任何的不同的撥號方式,不需要對使用者的通訊欄的改變。
一個應用程式使用位址傳輸將一個制式位址格式的位址轉換成可撥的位址格式。
一個相關的主題是國際call-progress 監聽的處理正常人耳能夠覺察的聲音程序像是撥號音,特別的資料音調,忙碌的訊號和 ringback 音調決定呼叫的狀態 (它的進行透過網路)。
因為call-progress音調的抑揚和頻率每個國家/區域都不過,服務供給者一定要知道國際通話遵循什麼call progress。
因此,當打電話出去時 , 應用程式須指定目的地國家碼。

Canonical Addresses

制式位址格式預計是一個萬用固定的目錄號碼。
因為這一個理由,在通訊錄中的號碼最好使用制式格式儲存。
canonical phone address是一個文字字串加下列結構: CountryCode Space [(AreaCode) Space] SubscriberNumber |Subaddress ^ Name CRLF ...

下列各項表格描述這結構的組件:
Component Meaning
DialableNumber Digits and modifiers 0-9 A-D * # , ! W w P p T t @ $ ? ; delimited by | ^ CRLF or the end of the dialable address string. The plus sign ( ) is a valid character in dialable strings. It indicates that the phone number is a fully-qualified international number. Within the DialableNumber, note the following definitions: 0-9 A-D * # Characters corresponding to the DTMF and/or pulse digits.
! Hex (21). Indicates that a hookflash (one-half second onhook, followed by one-half second offhook before continuing) is to be inserted in the dial string.
P p Hex (50) or Hex (70). Indicates that pulse dialing is to be used for the digits following it.
T t Hex (54) or Hex (74). Indicates that tone (DTMF) dialing is to be used for the digits following it.
, Hex (27). Indicates that dialing is to be paused. The duration of a pause is device specific and can be retrieved from the line's device capabilities. Multiple commas can be used to provide longer pauses.
W w Hex (57) or Hex (77). An uppercase or lowercase W indicates that dialing should proceed only after a dial tone has been detected.
@ Hex (40). Indicates that dialing is to "wait for quiet answer" before dialing the remainder of the dialable address. This means to wait for at least one ringback tone followed by several seconds of silence.
$ Hex (24). Indicates that dialing the billing information is to wait for a "billing signal" (such as a credit card prompt tone).
? Hex (3F). Indicates that the user is to be prompted before continuing with dialing. The provider does not actually do the prompting, but the presence of the "?" forces the provider to reject the string as invalid, alerting the application to the need to break it into pieces and prompt the user in-between.
; Hex (3B). If placed at the end of a partially specified dialable address string, it indicates that the dialable number information is incomplete and more address information will be provided later. The ";" component is only allowed in the DialableNumber portion of an address.
| Hex (7C), and is optional. If present, the information following it up to the next | ^ CRLF, or the end of the dialable address string is treated as subaddress information (as for an ISDN subaddress).
Subaddress A variably sized string containing a subaddress. The string is delimited by the next | ^ CRLF or the end of the address string. When dialing, subaddress information is passed to the remote party. It can be for an ISDN subaddress, an e-mail address, and so on.
^ Hex (5E), and is optional. If present, the information following it up to the next CRLF or the end of the dialable address string is treated as an ISDN name.
Name A variably sized string treated as name information. Name is delimited by CRLF or the end of the dialable address string. When dialing, name information is passed to the remote party.
CRLF Hex (0D) followed by Hex (0A). If present, this optional character indicates that another dialable number is following this one. It is used to separate multiple dialable addresses as part of a single address string (for inverse multiplexing).
Address translation可以用來將位址從canonical格式轉變成dialable格式。

未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-09-18 10:28:36 IP:61.218.xxx.xxx 未訂閱

Device Data

下列的題材含蓋了服務供給者可以提供的裝置相關的資訊和 TAPI 應用程式可以操作使用的 , 像是資源詳細目錄和會議控制中心。

Address Identifiers

在位址分配之後, TAPI 指派位址識別符號給位址。
一個位址識別符號是 0 和在線上的-1位址的號碼之間的一個號碼。
一個位址識別符是指定給一個裝置,而且保持永久固定的號碼。
裝置識別符和位址識別符的結合成一個獨特地識別給予位址。

TAPI 2.x:? ? 應用程式 呼叫 lineMakeCall lineGetCallInfo, 或 lineGetAddressID 取得address identifier 及 device identifier.
TAPI 3.x:? ? 呼叫 ITAddressCapabilities.get_AddressCapability 並且 AddressCap 參數設為 ADDRESS_CAPABILITYAC_ADDRESSID 成員 則傳回 plCapability 參數為目前的位址ID.

Address Type

裝置位址型態描述一個位址容許定址的形式,像是一個電話號碼或一個 IP 位址。TAPI 支援位址類型列表。
請參閱 LINEADDRESSTYPE_ Constants. Address translation 可以用來將一個位址從一個型態轉換成另外的型態。
關於位址的一般資訊,請參閱 Device Categories下的Address .
address type for a session 將是裝置位址類型的一個子集。
TAPI 2.x:請參閱 lineGetDevCaps LINEDEVCAPSdwAddressType成員.
TAPI 3.x:請參閱 ITAddressCapabilities.get_AddressCapability, 與 AddressCap 參數設為 ADDRESS_CAPABILITYAC_ADDRESSTYPES 成員.

Device Class

讓程式設計者以相似的種類有相似的屬性處理裝置,簡化裝置類別開發。
舉例來說﹐在一個辦公室中的數位聽筒比家中的標準電話聽筒更多的效能﹐但是兩者有許多相同的基本函數回應,所以兩者的都屬於一個聽筒裝置類別。
裝置類別提供一個架構幫助TAPI 可延伸來使新的設備分類及支援。

請參閱 TAPI Device Classes TAPI 預先定義的類別。

一個服務供給者可以為它支援的設備實行並且定義附加的裝置類別。
應用程式可以不需要知道服務供給者控制那一個裝置,但是需要關於新的裝置類別的控制資訊。
一個服務供給者實行裝置類別是對應到請求的實際裝置指令。
舉例來說﹐當服務供給者透過TAPISVR傳送指令給一台Hayes-compatible的數據機接收﹐它是傳送標準的AT指令給數據機。
service provider interface可以被映射到大範圍的環境,包括非傳統電話。
一個實例是以 IP 為基礎的網路 , 像是網際網路之上多媒體會議。

Device Events

藉由發射裝置事件讓TAPI 回應裝置變更例如聽筒鈴響啟動或一台數據機移除
TAPI 2.x:應用程式使用 LINE_LINEDEVSTATE 訊息取得裝置事件通知.
呼叫 lineGetAddressStatus,傳回 LINEADDRESSSTATUS 結構決定位址的目前的狀態
The status of a specified open line device is obtained by 呼叫 lineGetLineDevStatus, 傳回 LINEDEVSTATUS 結構獲得一個指定開啟的line裝置的狀態.
TAPI 3.x:應用程式使用 ITAddressEvent 介面 接收 ADDRESS_EVENT 通知.然後可以用 ITAddressCapabilities 來獲得更多的詳細資料

Device Identifier

A device ID 是一個特定的通訊裝置的application-independent識別符號。
TAPI 2.x:請參閱 lineGetID.
TAPI 3.x:請參閱 ITAddressCapabilities.get_AddressCapability (AddressCap 參數設為 ADDRESS_CAPABILITY結構的AC_PERMANENTDEVICEID成員).

Media Type

裝置的media type (or mode) 描述的資訊型態是可以交換的,像是交談式語音。
裝置也許只能夠處理一個媒體型態,也許能夠處理多種類型。
服務供給者提供媒體型態或它們控制的裝置支援的類型。
應用程式在會議開始時查詢媒體型態然後使用這個資訊選擇一個適合的位址。
通訊會議 或傳呼,可以包括一些媒體類型,對於進一步的資料,請參閱 Media type for a session.
TAPI 2.x:請參閱 lineGetAddressCaps, LINEADDRESSCAPS 結構的dwAvailableMediaModes成員, lpAddressCaps指標, LINEMEDIAMODE_ Constants.
TAPI 3.x:請參閱 ITTerminal.get_MediaType, TAPIMEDIATYPE_ Constants.

Terminal Type 終端型態

terminal type 識別一個終端機是否是靜態的或是動態的。
舉例來說﹐ 一台數據機是一個靜態的終端機必須在電腦螢幕上創建一個視訊視窗 當它結束時必須關閉視訊視窗。
這一項概念主要 使用在TAPI 3 應用程式。
TAPI 3.x: 請參閱 ITTerminal.get_TerminalType TERMINAL_TYPE.


未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-09-18 13:15:54 IP:61.218.xxx.xxx 未訂閱

Session Control 會議控制

會議或傳呼表示二個或更多之間的連結位址。
這一個連接是動態的﹐而且關聯的程式物件必須建立,操縱,而且釋放。
在最單純的情況下﹐這意謂製造及分離一個電話傳呼。
對於進階應用程式﹐會議控制可以包括管理IP 網路上的多媒體會議到個別參加者的層次。
會議控制包括二個基本的區域:
Session Operations 會議操作是控制通訊會議的開始﹐維持﹐結束。
Session Information 會議資訊可以獲得關於通訊會議的描述資料。
在這節中不包含兩個特殊化的會議控制類型。
關於自動呼叫分配中心的資訊,請見 呼叫中心控制 (TAPI 2.x) 或 關於呼叫中心控制 (TAPI 3.x).
關於 IP 會議的資訊,請見 About Rendezvous IP Telephony Conferencing.

Session Operations

會議操作是大多數的 TAPI 應用程式的核心。
下列題材提供各種不同的類型會議控制的概觀。

下列表格概述 TAPI 會議操作:
Information TAPI 2.x TAPI 3.x
Address type for a session lineGetCallInfo,
LINECALLINFO結構dwAddressType成員
ITCallInfo::get_CallInfoLong,
CALLINFO_LONG
CIL_CALLERIDADDRESSTYPE, CIL_CALLEDIDADDRESSTYPE, CIL_CONNECTEDIDADDRESSTYPE .
Application-specific information
lineGetCallInfo,
LINECALLINFO 結構dwAppSpecific成員 lineSetAppSpecific
ITCallInfo::get_CallInfoLong ITCallInfo::put_CallInfoLong, CALLINFO_LONG. CIL_APPSPECIFIC
Bearer mode lineGetCallInfo,
LINECALLINFO結構 dwBearerMode 成員 lineSetCallParams
ITCallInfo::get_CallInfoLong ITCallInfo::put_CallInfoLong, CALLINFO_LONG. CIL_BEARERMODE.
Call data buffer lineGetCallInfo,
LINECALLINFO 結構dwCallDataSizedwCallDataOffset 成員 lineSetCallData
ITCallInfo::GetCallInfoBuffer, CALLINFO_BUFFER.CIB_CALLDATABUFFER
Call ID lineGetCallInfo, LINECALLINFO.dwCallID ITCallInfo::get_CallInfoLong, CIL_CALLID CALLINFO_LONG.
Called Identification lineGetCallInfo dwCalledIDSize, dwCalledIDOffset, dwCalledIDNameSize, dwCalledIDNameOffset, dwCallDataOffset ITCallInfo::get_CallInfoString ITCallInfo::put_CallInfoString, CIS_CALLINGPARTYID CALLINFO_STRING.
Called party friendly name NA ITCallInfo::get_CallInfoString ITCallInfo::put_CallInfoString, CIS_CALLEDPARTYFRIENDLYNAME CALLINFO_STRING.
Caller Identification lineGetCallInfo LINECALLINFO dwCallerIDSize, dwCallerIDOffset, dwCallerIDNameSize, 及 dwCallerIDNameOffset ITCallInfo::get_CallInfoString, CIS_CALLERIDNAME, CIS_CALLERIDNUMBER, CIS_CALLEDIDNAME, 或 CIS_CALLEDIDNUMBER CALLINFO_STRING.
CallHub interface pointer NA ITCallInfo::get_CallHub ITTAPI::EnumerateCallHubs
Charging information lineGetCallInfo,LINECALLINFO dwChargingInfoSizedwChargingInfoOffset . ITCallInfo::GetCallInfoBuffer, CIB_CHARGINGINFOBUFFER CALLINFO_BUFFER
Comment lineGetCallInfo, dwCommentSize dwCommentOffset LINECALLINFO. ITCallInfo::get_CallInfoString ITCallInfo::put_CallInfoString, CIS_COMMENT CALLINFO_STRING.
Compatibility buffer lineGetCallInfo,LINECALLINFO dwHighLevelCompSize, dwHighLevelCompOffset, dwLowLevelCompSize, 或 dwLowLevelCompOffset ITCallInfo::GetCallInfoBuffer, CIB_HIGHLEVELCOMPATIBILITYBUFFERCIB_LOWLEVELCOMPATIBILITYBUFFER CALLINFO_BUFFER
Completion ID lineGetCallInfo, LINECALLINFO dwCompletionID ITCallInfo::get_CallInfoLong, CIL_COMPLETIONID CALLINFO_LONG.
Connected Identification lineGetCallInfo, LINECALLINFO
dwConnectedIDSize
, dwConnectedIDOffset, dwConnectedIDNameSize, dwConnectedIDNameOffset
ITCallInfo::get_CallInfoString, CIS_CONNECTEDIDNAME 或r CIS_CONNECTEDIDNUMBER CALLINFO_STRING.
Country code lineGetCallInfo,dwCountryCode LINECALLINFO ITCallInfo::get_CallInfoLong ITCallInfo::put_CallInfoLong, CIL_COUNTRYCODE
CALLINFO_LONG.
Device-specific buffer lineGetCallInfo, dwDevSpecificSize dwDevSpecificOffset LINECALLINFO ITCallInfo::GetCallInfoBuffer, CIB_DEVSPECIFICBUFFER
CALLINFO_BUFFER
Displayable address lineGetCallInfo,LINECALLINFO dwDisplayableAddressSizedwDisplayableAddressOffset ITCallInfo::get_CallInfoString ITCallInfo::put_CallInfoString, CIS_DISPLAYABLEADDRESS CALLINFO_STRING.
Media type for a session lineGetCallInfo, LINECALLINFOdwMediaMode ITCallInfo::get_CallInfoLong, CIL_MEDIATYPESAVAILABLE CALLINFO_LONG.
Origin lineGetCallInfo,
LINECALLINFOdwOrigin
ITCallInfo::get_CallInfoLong, CIL_ORIGIN CALLINFO_LONG.
Parameter flags lineGetCallInfo,
LINECALLINFOdwCallParamFlags lineSetCallParams
ITCallInfo::get_CallInfoLong ITCallInfo::put_CallInfoLong, CIL_CALLPARAMSFLAGS
CALLINFO_LONG.
Privilege lineGetCallStatus, LINECALLSTATUSdwCallPrivilege lineSetCallPrivilege ITCallInfo::get_Privilege ITCallInfo::get_CallInfoLong, CIL_NUMBEROFOWNERS CIL_NUMBEROFMONITORS
CALLINFO_LONG.
Quality of Service lineSetCallQualityOfService, lineGetCallInfo, dwSendingFlowspecSize, dwSendingFlowspecOffset, dwReceivingFlowspecSize, 及LINECALLPARAMSdwReceivingFlowspecOffset ITBasicCallControl::SetQOS, ITQOSEvent
Rate lineGetCallInfo, LINECALLINFOdwRate lineSetCallParams ITCallInfo::get_CallInfoLong or
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-09-19 12:01:00 IP:61.218.xxx.xxx 未訂閱

TAPI DLL 電話應用程式介面 動態連結函式庫


TAPI DLL,連同 TAPI 伺服器 (Tapisvr.exe),是重要的抽象化將硬體供應商電話服務與最終使用者或伺服器應用程式隔開。
TAPI DLL連同 TAPI 伺服器提供在這兩層之間一致的介面。
TAPI 應用程式載入適用的 DLL 到程序內。 在初使化時﹐ TAPI 制定RPC與 Tapisvr.exe 聯結。 在Windows Server 2003 family, Windows XP, and Windows 2000, TAPI 伺服器在 SVCHOST 中執行。 在Windows NT,TAPI 伺服器執行如同一個單獨的服務。
TAPI 關聯的三個 DLL:Tapi.dll , Tapi32.dll 和 Tapi3.dll。
下圖舉例說明在微軟資訊電話中他們分別的任務角色:
Roles of the three TAPI DLLs
現有的 16位元的應用程式是聯結到 Tapi.dll 。
在 Windows Server 2003 family, Windows XP, Windows 2000, Windows NT, Windows Millennium Edition, 及 Windows 98, Tapi.dll 只須編譯次程式層映射16位元位址到 32位元位址及傳送請求到 Tapi32.dll 。
在 Windows 95 及 Windows 3.1,這個 DLL 是Windows 資訊電話的核心。
現有的 32位元 TAPI 2.x 應用程式是聯結到Tapi32.dll。
在 Windows Server 2003 family, Windows XP, Windows 2000, Windows NT, Windows Millennium Edition, 及 Windows 98, Tapi32.dll 是 marshaling(讓跨行程或跨機器間的溝通,其資料型態得以互相轉換) 層傳遞函數請求給 TAPI 伺服器 (TAPISRV)
在 Windows 95, Tapi32.dll 是編譯次程式層到 Tapi.dll.
TAPI 3.x 應用程式是聯結到 Tapi3.dll

TAPI Server 電話應用程式介面 伺服器

TAPI 伺服器 (TAPISRV)是使用者電腦上的電話資訊貯藏中心。
這服務程序追蹤本地和遠端的電話資源,處理應用程式登記的協助資訊電話請求,而且它也使電話服務供給(TSPs)能夠介面一致。
在 Windows Server 2003 family, Windows XP, 及 Windows 2000上的 TAPISRV TAPISRV 在 Svchost.exe 內執行。
在 Windows NT, 它是執行一個個別的服務程序。
當應用程式載入TAPI DLL 到程序之內並且執行初始化操作時,DLL制定 一個 RPC與TAPI 伺服器聯結。
TAPI 伺服器載入硬體廠商所提供的電話服務介面 (TSPs)到程序之內。
不管應用程式存取多少的裝置,TSP只會產生一個instance。

Service Providers

服務供給者主要負責實際的電話裝置控制。
電話服務供給者 (TSP)提供電話控制及如果媒體服務供給者存在它提供對媒體串流的控制。
所有的電話服務供給者在 TAPISRV 程序中執行。
當需要的時候 , 服務供給者可以在 TAPISRV 內建立執行緒做他們的工作
TAPI 伺服器翻譯應用程式指令為電話服務供給者介面(TSPI)所需的指令。
媒體服務供給者在應用程式的程序中執行
TAPI DLL 提供一致附著到媒體服務供給者介面(MSPI)。
對於服務供給者的較詳細的報導,請見 TAPI Service Provider Overview.
在電話服務供給者 DLL 之下﹐服務供給者可以使用任何系統函數或其他必需的元件。
這些函數包含 CreateFile DeviceIoControl, 和硬體商設計的核心模式元件和服務 , 像是序列埠和並聯埠控制外面的標準裝置。他們也可以存取client/server電話網路服務 (像是 RPC, Windows Sockets,Named Pipes)。
資訊電話服務供給者使用者介面 DLL 由TAPI 載入到應用程式的程序之內然後呼叫任何服務供給者可以顯示對話盒的函數(舉例來說,TSPI_lineConfigDialog) 。
如果服務供給者需要顯示 UI,服務供給者也可以在應用程式的程序中載入而且執行它的關聯的 UI DLL,例如當資料數據機做為撥交談式語音電話時,顯示通用數據機驅動程式 (UNIMODEM)的Talk/Hang-up對話盒.
proxy request handler是一個完整的電話應用程式通常在電話伺服器上執行。(相同的伺服器在電話服務供給者執行時關聯到線裝置)

The UNIMODEM driver service provider for modem control is available 在Windows Server 2003 family, Windows XP, Windows 2000, 及 Windows NT的MODEM控制可利用UNIMODEM驅動程式服務供給者來達成 .
Windows Telephony 也包含一般性的核心模式 Telephony Service Provider Interface (TSPI) 映射, KMDDSP, 允許服務供給者作為核心模式的驅動程式
未完待續......
------
︿︿
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-09-22 13:59:16 IP:61.218.xxx.xxx 未訂閱

本站 TAPI 相關資源

http://delphi.ktop.com.tw/forum.asp?FORUM_ID=524
------
︿︿
系統時間:2024-05-04 13:29:39
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!