如何在 PJSUA2 中获得 "SIP header of incoming call"?

How to get "SIP header of incoming call" in PJSUA2?

我正在开发一个 android 应用程序,它使用 pjsip2.7 和 pjsua2 支持 SIP。我需要为我的 sip 呼叫设置自定义 header,我已经完成了,我设置 Asterisk 13 服务器将我的 header 转发给另一方。我可以在日志中看到我的自定义 header 已收到,但我无法在接收器中使用此 header。我需要一种方法来获取我在 header 中发送的参数。 有什么办法吗?

我正在使用 pjsua2 和 golang 而不是 C++,我遇到了同样的问题。虽然,我没有找到最好的方法,但我找到了一个可行的方法。

首先,您需要实现一个扩展到 pjsua2 帐户的帐户。然后,覆盖 OnIncomingCall 回调以使用 OnIncomingCallParam,我使用此代码获取 header(在 golang 中)

func (acc *MyAccount) OnIncomingCall(prm pjsua2.OnIncomingCallParam) {
msg := prm.GetRdata().GetWholeMsg()
msgindex := strings.Index(msg, "NEWHEADER")
if msgindex != -1 {
    cabecera = true
    msg = msg[msgindex:]
    msg = msg[strings.Index(msg, ":")+1:]
    msgindex = strings.Index(msg, "Content-Type")
    msg = msg[:msgindex] //this is to avoid spaces
    msg = strings.Trim(msg, " ")
    msg = strings.Trim(msg, "\n")
    msg = strings.Trim(msg, "\r")
    log.Info("NEWHEADER info:" + msg + "")
} else {
    log.Error("THERE IS NO NEWHEADER")
}

抱歉来晚了