【问题标题】:How to get "SIP header of incoming call" in PJSUA2?如何在 PJSUA2 中获取“来电的 SIP 标头”?
【发布时间】:2019-04-15 09:20:35
【问题描述】:

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

【问题讨论】:

    标签: android pjsip pjsua2


    【解决方案1】:

    我使用 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")
    }
    

    抱歉这么晚了

    【讨论】:

    • 这也适用于 android... prm.getRdata().getWHoleMsg() 是关键部分。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多