远程用户应答呼叫时的pjsip(pjsua)通知



我正在尝试使用https://github.com/pjsip/pjproject.我可以成功地连接到sip服务器(Twilio(,并使用pjsua_*接口拨打PSTN号码。这很好用。

我现在想要的是,当我正在调用的用户响应调用时,从pjsip获得一个通知(通过回调或类似的方式(。

我使用on_call_state((来获取邀请的更新,但这会经过相同的状态

呼叫->正在连接->已确认->闭锁性心房颤动

即使用户拒绝呼叫。所以我想我没有找到合适的回调。

我如何才能明确地判断用户是否接听了电话?

对我来说,它就是这样工作的。在on_call_state回调中:

pjsua_call_info callInfo;
pjsua_call_get_info(call_id, &callInfo);
pjsip_inv_state state = callInfo.state;
pjsip_status_code statusCode = callInfo.last_status;
switch (state) {
.....
case PJSIP_INV_STATE_CONFIRMED:
// remote party answered the call normally
break;
case PJSIP_INV_STATE_DISCONNECTED:
if (statusCode == PJSIP_SC_BUSY_HERE) {
// rejected
} else {
// finished ok
}
break;

我拒绝这种电话:

pj_status_t state;
int sendCode = PJSIP_SC_DECLINE;
try {
state = pjsua_call_answer((pjsua_call_id) call_id, sendCode, nullptr, nullptr);
} catch (...) {
return -1;
}
return state;

最新更新