Blueimp 論壇首頁
  首頁  | 討論區  | 最新話題  | 搜尋  | XML  |  登入

此話題中所有文章數: 2 [ 話題狀態: 一般 ]
上一話題 此文章已經觀看 60 次 而且有 1 篇回應 下一話題
會員大頭照
男寶寶 jieh 《騎士團團長》
文章: 6897
v3.8.8

Java Telephony Application Programming Interface(JTAPI)


談到 JTAPI(Java Telephony Application Programming Interface),首先得瞭解什麼是 CTI。

CTI(Computer Telephony Integration)就是電腦電話集成技術,它是目前國內正火的呼叫中心熱潮的核心技術。JTAPI 主要是為 CTI 技術服務。JTAPI(Java Telephone API)則是一套專門為 JAVA 語言提供的與電話應用相關的程式介面,它定義了一組跨平臺、跨廠家的電話應用程式物件模型。使用JTAPI提供的物件,我們就可以簡單方便地用軟體實現各種 CTI 技術。

由於 JTAPI 的誕生是由若干知名電腦、通訊廠商(Sun, Lucent Technologies, Nortel, Novell, Intel, and IBM)聯合努力的結果,利用 JTAPI 編寫的 CTI 程式甚至可以操作若干種電話交換機,這些交換機包括 Lucnet、Nortel 等等廠家。

JTAPI 的主要特點歸納如下:
1. 簡化 CTI 程式的編寫。
2. 提供一套可以擴展的框架結構,可以平滑的使 Client/Server 結構的程式過渡到 Browser/Server 結構。
3. 對已有的傳統 CTI 程式介面,如 TSAPI、SunXTL、以及 TAPI 進行 WEB 方向的擴展。
4. 可以運行於任何 JAVA 可以運行的平臺。

利用以上優點,採用 JTAPI 技術搭建的呼叫中心就可以平滑的過渡到 Internet 時代。

目前 JTAPI 主要應用於呼叫中心領域,利用它還可以編寫包括自動撥號、語音郵件、傳真接收等各類軟體。特別在互聯網呼叫中心領域更是大有用武之地。比如 Lucent 推出的 ICC(Internet Call Center)就是一個典型的例子。整個 ICC 系統從技術上劃分,可以分為三部分:管理、CTI、工作流。三個部分都用 JAVA 開發,其中 CTI 部分使用 JTAPI1.3。利用 JAVA 的優勢,ICC 可以運行在 NT、SALORIS 等各種平臺之上。


JTAPI 範例


JTAPI is only a specification, not an implementation.

除了 JTAPI 的 jar 封裝檔案外,還必須有 JTAPI 的 implementation 才行,常用的有 GJTAPI 跟 TAPI。請參考 https://sourceforge.net/projects/gjtapi/

要跑範例檔的步驟:

1. 有 JTAPI 的 jar 並加入到 classpath

JTAPI 的 jar 檔案的下載連結
https://sourceforge.net/project/showfiles.php?group_id=40963&package_id=89442

2. 下載 GJTAPI 的 jar 並加入 classpath
https://sourceforge.net/projects/gjtapi/ 請在此下載 GJTAPI 的 jar 檔

3. JtapiPeerFactory.getPeer(null) 請改成 JtapiPeerFactory.getPeer("net.sourceforge.gjtapi.GenericJtapiPeer")

4. peer.getProvider(null) 請加入你想加入的 Provider,如 peer.getProvider("Emulator")。

5. javac 你的 .java 檔,這樣就可以跑範例檔了。

package org;
import javax.telephony.*;

import javax.telephony.events.*;

/*
*MyOutCallObserver class implements CallObserver
* interface1並且接收與Call相關的events
*/

public class MyOutCallObserver implements CallObserver {
public void callChangedEvent(CallEv[] evlist)
{
for (int i = 0; i < evlist.length; i++) {
if (evlist instanceof ConnEv) {
String name = null;
try {
Connection connection = ((ConnEv)evlist).getConnection();

Address addr = connection.getAddress();

name = addr.getName();

} catch (Exception excp) {
// Handle Exceptions
}
String msg = "Connection to Address: " + name + " is ";
if (evlist.getID() == ConnAlertingEv.ID) {
System.out.println(msg + "ALERTING");
}
else if (evlist.getID() == ConnInProgressEv.ID) {
System.out.println(msg + "INPROGRESS");
}
else if (evlist.getID() == ConnConnectedEv.ID) {
System.out.println(msg + "CONNECTED");
}
else if (evlist.getID() == ConnDisconnectedEv.ID) {
System.out.println(msg + "DISCONNECTED");
}
}
}
}
}


package org;

import javax.telephony.*;

import javax.telephony.events.*;

/*
*由自己的電話號碼476111打到 號碼5551212
*/

public class Outcall {

public static final void main(String args[]) {
/**事先取得default JTAPI的implementation(JtapiPeer),
*並且藉由之產生default Provider
*/
Provider myprovider=null;

try {
JtapiPeer peer = JtapiPeerFactory.getJtapiPeer(null);
myprovider = peer.getProvider(null);
} catch (Exception excp) {
System.out.println("Can't get Provider: " + excp.toString());
System.exit(0);
}

// 取得我端電話相關的objects(Address及相符之Terminal)

Address origaddr = null;

Terminal origterm = null;

try {
origaddr = myprovider.getAddress("03-58885999");
/* 取一此電話號碼相對應的Terminal */

Terminal[] terminals = origaddr.getTerminals();

if (terminals == null) {
System.out.println("No Terminals on Address.");
System.exit(0);
}

origterm = terminals[0];
} catch (Exception excp) {

// Handle exceptions;
}
// Create telephone call object並且加入 observer偵測state

Call mycall = null;

try {
mycall = myprovider.createCall();
mycall.addObserver(new MyOutCallObserver());
} catch (Exception excp) {
// Handle exceptions
}
//Place the telephone call.

try {
Connection c[] = mycall.connect(origterm, origaddr, "03-4858571");

} catch (Exception excp) {

// Handle all Exceptions
}
}
}

----------------------------------------
支持小惡魔
BTC : 19tn3RnCuwZVukXAwyhDWZD4uBgUZoGJPx
LTC : LTFa17pSvvoe3aU5jbmfcmEpo1xuGa9XeA
知識跟八卦一樣,越多人知道越有價值;知識最好的備份方法,散播!
藍色小惡魔(林永傑): 臉書
----------------------------------------
[編輯文章 6 次, 最後修改: jieh 於 2025/1/14 下午 11:38:43]

[2007/12/6 上午 11:14:13]   [返迴此篇文章頂端 ]  回到頂端 
會員大頭照
男寶寶 jieh 《騎士團團長》
文章: 6897
v3.8.8

IBM CallPath Enterprise Toolkit for Java

http://callpath.genesyslab.com/docs63/html/cpejprog/djpg2m10.htm
----------------------------------------
支持小惡魔
BTC : 19tn3RnCuwZVukXAwyhDWZD4uBgUZoGJPx
LTC : LTFa17pSvvoe3aU5jbmfcmEpo1xuGa9XeA
知識跟八卦一樣,越多人知道越有價值;知識最好的備份方法,散播!
藍色小惡魔(林永傑): 臉書
[2007/12/6 上午 11:19:21]   [返迴此篇文章頂端 ]  回到頂端