如何在PJSUA2中获取“来电的SIP标头”?

时间:2019-04-15 09:20:36

标签: android pjsip pjsua2

我正在开发一个使用pjsip2.7和pjsua2支持SIP的android应用。我需要将自定义标头设置为我的sip调用,然后将Asterisk 13 Server设置为将标头转发给另一方。我可以在日志中看到已收到我的自定义标头,但无法在接收器中使用此标头。我需要一种方法来获取在标头中发送的此参数。 有什么办法吗?

1 个答案:

答案 0 :(得分:2)

我将pjsua2与golang而不是C ++一起使用,并且遇到了同样的问题。尽管我没有找到最好的方法,但是我找到了一种可行的方法。

首先,您需要实现一个扩展到pjsua2帐户的帐户。然后,改写OnIncomingCall回调以便使用OnIncomingCallParam,我已经使用此代码获取标头(在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")
}

很抱歉这么晚