2

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

理想情况下,我想从 JUnit 测试中做到这一点,以便我可以自动化整个过程。但任何其他工具也可以。

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

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

2) 使用 API 进行调用

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

4) 接听电话

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

6) 挂断

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

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

4

2 回答 2

1

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

于 2013-08-03T12:40:50.537 回答
0

查看KitCAT 框架。它基于 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()));

在此处查看完整的 API

于 2013-08-03T16:12:33.953 回答