【问题标题】:Connecting to a telephone system via java通过 java 连接到电话系统
【发布时间】:2012-07-13 16:34:10
【问题描述】:

我想开发一个 Java 应用程序来记录我们电话系统的所有来电。我们使用电信提供的章鱼开放系统。

经过一些研究,我发现 jtapi 将是一个解决方案,但我找不到任何好的教程。我在正确的轨道上吗?你能提供一些例子给我吗?

【问题讨论】:

  • 章鱼是VOIP系统吗?如果是这样,服务器在什么操作系统上运行? Asterisk 在 Centos 上运行,这是一个类似 unix 的环境。
  • 不,它是一个模拟系统。它在他自己的硬件上(后台是 linux),但我需要远程访问。

标签: java call jtapi octopus


【解决方案1】:
  • 下载 JTAPI 库文件“ECsjtapia.jar”将其添加到您的项目中。
  • 将 tsapi.pro 文件添加到您的项目中。更改 tsapi.pro 文件中的以下行 10.100.100.110(你的cms服务器ip)=450(端口)
  • 使用以下代码创建 listener.java ` 导入 javax.telephony.*;

公共类监听器{

static Provider provider;
static JtapiPeer peer1=null;
static String myService = "";

public static void main(String args[]){
    try {
        peer1 = JtapiPeerFactory.getJtapiPeer("com.avaya.jtapi.tsapi.TsapiPeer");
        //"com.avaya.jtapi.tsapi.TsapiPeer"
    }
    catch(Exception hata)
    {
        System.out.println("Error: "+hata.getMessage());
    }
    //System.out.println("Test is ok: "+peer1.getName());
    String[] services = peer1.getServices();

    if (services == null)
    {
        System.out.println("Unable to obtain the services list from JTAPI peer");
        System.exit(0);
    }
    myService = services[0];
    //System.out.println("Service is "+myService);

    System.out.println("Connecting to server-:"+myService+";login=;passwd=");       
    provider = peer1.getProvider(myService + ";login=;passwd=;");



    try {
        Terminal[] terminals = provider.getTerminals();
        for(int i=0;i<=terminals.length-380;i++){
            String arrterminals =terminals[i].getName() ;
            try {
                    Terminal terminal = provider.getTerminal(arrterminals);
                    terminal.addCallListener(new callListener());
                    System.out.println("Terminal added for monitoring : " + i + " : " + terminal.getName());

            } catch (InvalidArgumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ResourceUnavailableException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (MethodNotSupportedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    } catch (ResourceUnavailableException e1) {
        // TODO Auto-generated catch block
        e1.printStackTrace();
    } 




}   

}

【讨论】:

    【解决方案2】:

    如果你能找到一张旧的传真卡,你可以在电话线上唤起一个听众,同时进行录音。除此之外,不知道还有什么可以工作。

    【讨论】:

    • imo 记录通话(开始时间 - 从 - 到 - 持续时间)和记录通话之间存在差异,也许 OP 应该澄清他想要做什么?
    • @fvu 这很简单,当检测到信号时,system.getTimeMillis()。当信号下降时,再次使用 system.getTimeMillis(),减去 2,得到开始时间、持续时间和结束时间。
    【解决方案3】:

    我认为没有直接支持 Telekom Octopus 的 JTAPI 实现。您可以使用 gjtapi(在 sourceforge 上)在 TAPI 上尝试 JTAPI。

    JTAPI 的标准 API 文档可以在 Java 社区进程 (jcp.org) 中找到。

    本文档包含 javax.telephony 包描述中的一些示例代码。

    监控/跟踪通话非常简单:

    • 连接到您的电话系统(详细信息取决于实施),这将导致连接
    • 获取要观察的扩展:Connection.getTerminal 或 Connection.getAddress
    • 实现 CallObserver 或 CallListener
    • 现在您可以添加您的 CallObserver 或 CallListener :例如Address.addCallObserver。

    在事件处理例程中,例如CallObserver.callCahngedEvent(CallEv ev[]) 你可以从事件对象中获取所有相关信息,并用它做任何你想做的事情。

    就是这样……

    观察者听者?

    根据您的 JTAPI 实现,Observer 可能会被弃用。

    【讨论】:

      猜你喜欢
      • 2013-03-02
      • 2016-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-17
      • 2012-12-02
      • 1970-01-01
      相关资源
      最近更新 更多