【问题标题】:Testing from JUnit if a SIP Soft Phone is ringing, answered a call, disconnected从 JUnit 测试 SIP 软电话是否响铃、接听电话、断开连接
【发布时间】:2013-08-02 22:23:13
【问题描述】:

我想使用第 3 方 API 向两个号码发起呼叫。我需要确保设备在接到电话时响铃,在接听电话时开始传输媒体,在挂断时终止通话。

理想情况下,我想从 JUnit 测试中执行此操作,以便我可以自动化整个过程。但任何其他工具也可以。

这就是我想以编程方式做的事情,

1) 使用测试提供的一些凭据配置两个 SIP 软电话以接听 2 个不同的号码。

2) 使用 API 进行调用

3) 断言两部手机处于振铃状态

4) 接听电话

5) 断言 RTP 媒体正在它们之间传输

6) 挂断电话

7) 断言呼叫现在已成功断开

我对电话很陌生,所以如果有任何工具或 SDK 可以帮助我完成这项工作,我将不胜感激。

【问题讨论】:

    标签: sip voip asterisk pjsip jain-sip


    【解决方案1】:

    请查看 SipUnit https://code.google.com/p/commtesting/wiki/SipUnit。 除了检查媒体是否正在流动之外,它可以执行上述所有操作。

    【讨论】:

      【解决方案2】:

      查看KitCAT framework。它基于 JUnit,可以支持您的所有要求。它支持多个用户代理,它们都可以在一个测试用例中进行协调。它还提供与其他协议(例如 RTP、HTTP)的协调。

      示例代码:

      SIPAgent callee1 = createAgent("callee1"); // sip:callee1@host
      SIPAgent callee2 = createAgent("callee2"); // sip:callee2@host
      
      // invoke your API here
      invoke3rdPartyAPI(callee1.getSipURI(), callee2.getSipURI());
      
      pause(2000);
      assertThat(callee1, is(invited()));
      assertThat(callee2, is(invited()));
      
      callee1.answer();
      callee2.answer();
      
      pause(500);
      assertThat(callee1, is(connectedTo(callee2))); // check for SDP match
      callee1.playAudio(audioFileName);
      
      pause(500);
      assertThat(callee2, has(incomingMedia());
      callee1.disconnect();
      
      pause(500);
      assertThat(callee2, is(disconnected()));
      

      查看complete API here。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多