我想使用第三方API发起对两个号码的调用。我需要确保设备在接到呼叫时响,当呼叫被应答时,媒体开始发送,当呼叫中断时,呼叫终止。
理想情况下,我希望通过JUnit测试来实现这一点,这样我就可以自动化整个过程。但是任何其他的工具也是可以的。
所以这就是我想通过编程来做的,
1)使用测试提供的一些凭证,配置两个SIP软电话,在两个不同的号码上进行应答。
2)使用API进行调用
3)声称有两部手机处于铃声状态
4)接听电话
5)声称RTP媒体正在它们之间传播
6)挂断
7)断言调用现在已成功断开
我对电话很陌生,所以希望任何工具或SDK上的任何指针都能帮助我完成这一任务。
发布于 2013-08-03 04:40:50
请查一下SipUnit https://code.google.com/p/commtesting/wiki/SipUnit。它可以做到以上所有,除非看看媒体还在流动。
发布于 2013-08-03 08:12:33
看看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在这里。
https://stackoverflow.com/questions/18026987
复制