android - 如何在 PJSUA2 中获取“来电的 SIP 标头”?
问题描述
我正在开发一个使用 pjsip2.7 和 pjsua2 支持 SIP 的 android 应用程序。我需要为我的 sip 调用设置自定义标头,我已经完成了,并且我设置了 Asterisk 13 Server 以将我的标头转发给另一方。我可以在日志中看到我的自定义标头已收到,但我无法在接收器中使用此标头。我需要一种方法来获取我在标头中发送的这些参数。有什么办法吗?
解决方案
我使用 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")
}
我很抱歉这么晚了
推荐阅读
- .net - 如何在 Bot Framework 中将数据从 RootDialog 传递到 LuisDialog
- python - Python - 解析 html 响应
- java - Guice 如何将依赖项注入从动态加载的类实例化的对象
- android - 使用 GoogleMap 带边界的 CameraPosition
- sql-server - 根据范围填充行
- azure - 用于 Cosmos DB ARM 模板的 virtualNetworkRule
- node.js - 基于云的 node.js 控制台应用需要每天运行一次
- java - org.openqa.selenium.WebDriverException:通过 Selenium v3.4.0 和 geckodriver-v0.20.1 启动 Firefox 浏览器 45.0.1 时连接被拒绝
- windows - IIS 重写规则 - 重定向特定的 HTTP 页面
- c++ - Qt::Popup 打破 QScroller 动能滚动?