远程用户接听电话时的 pjsip (pjsua) 通知
pjsip (pjsua) notification when remote user answers the call
我正在尝试使用 https://github.com/pjsip/pjproject 创建一个简单的 SIP 用户代理。我可以成功连接到 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;
我正在尝试使用 https://github.com/pjsip/pjproject 创建一个简单的 SIP 用户代理。我可以成功连接到 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;