PJSIP 收到远程 SIP Header

PJSIP Received Remote Sip Header

假设我们有两个 phone 并且 Phone1 和 Phone2 他们都有自定义 sip header

[Phone1] ----calling----> [Phone2](这是 Phone2 的 onIncomingCallState,它可以读取 Phone1 的 header)

[Phone1] <----answer---- [Phone2](这是 Phone2 的答案,它发送 header 和 CallOpParam)

[Phone1] <----OnCallState----> [Phone2](两者都是通话状态,Phone2 有 Phone1 的 header,现在 Phone1 需要获取 Phone2 的 header。)

我正在使用 C++ 在 PjSua2 级别编写代码,我可以看到日志,Phone1 可以访问 header 的值,当我也使用 wireshark 进行嗅探时,我也可以看到。但是我如何在pjsua2级别处理它,有没有回调或其他东西?

一般都有回调,在on_call_media_state。这是最低限度的一些:

void SipApp::on_call_media_state(pjsua_call_id call_id)
{
    pjsua_call_info info;
    pjsua_call_get_info(call_id, &info);

    if (info.media_status == PJSUA_CALL_MEDIA_ACTIVE) {

        //pjsua_conf_connect(0, info.conf_slot);
        pjsua_conf_connect(info.conf_slot, g_recorder->getSlot());

        for(int i=0; i < g_players.count(); i++) {
            g_players.at(i)->setSrc(info.conf_slot);
        }

        g_recorder->setSrc(info.conf_slot);
        g_recorder->start();

        // rtsp setup - start streaming the conf to a remote IP
        if(1){
            if (p_rtsp->asServer()) {
                p_rtsp->setSrc(0);
                p_rtsp->start_streaming();
            } else {
                p_rtsp->setSrc(0);
                p_rtsp->start_recording();
            }
        }
     }
}

取自存储库 https://github.com/heatblazer/asteriks-debugger/blob/master/Sip/sipapp.cpp

那么你能提供更多关于你到底缺少什么的信息吗?

其实pjsua2级别已经实现了

virtual void onCallState(OnCallStatePrm &prm){
..
prm.e.body.tsxState.src.rdata.wholeMsg //this is what i want exactly.
..
}