首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

PJSUA2是一个基于PJSIP开源库的多媒体通信库,用于开发VoIP应用程序。在PJSUA2中获取来电的SIP头可以通过以下步骤实现:

  1. 创建一个继承自MyCall的自定义类,用于处理呼叫事件和通话状态。
  2. 在自定义类中重写onIncomingCall方法,该方法会在有来电时被调用。
  3. onIncomingCall方法中,可以通过调用getInfo方法获取来电的SIP头信息。
  4. 使用getInfo方法的参数pjsip_inv_session_get_hdr来指定需要获取的SIP头字段。
  5. 通过调用pjsip_inv_session_get_hdr方法获取指定的SIP头字段。

以下是一个示例代码片段,展示了如何在PJSUA2中获取来电的SIP头:

代码语言:txt
复制
class MyCall : public Call
{
public:
    virtual void onIncomingCall(OnIncomingCallParam &param)
    {
        CallInfo ci = getInfo();
        pjsip_msg* msg = pjsip_inv_session_get_msg(ci.inv, ci.last_status_code);
        
        // 获取来电的SIP头字段
        pjsip_hdr* hdr = pjsip_msg_find_hdr_by_name(msg, "HeaderName");
        if (hdr != NULL)
        {
            // 处理SIP头字段
            // ...
        }
    }
};

// 在主函数中创建并初始化PJSUA2库
int main()
{
    // ...

    // 创建自定义的MyCall类
    MyCall myCall;

    // 初始化PJSUA2库
    Endpoint ep;
    ep.libCreate();

    // ...

    // 设置自定义的MyCall类为呼叫回调处理类
    ep.callOpParam.setOnIncomingCall(&myCall);

    // ...

    // 运行PJSUA2库
    ep.libStart();

    // ...

    // 销毁PJSUA2库
    ep.libDestroy();

    return 0;
}

请注意,以上代码仅为示例,实际使用时需要根据具体需求进行适当修改和完善。

推荐的腾讯云相关产品:腾讯云通信(Tencent Cloud Communication),提供了一系列基于云计算的通信解决方案,包括音视频通话、实时消息、语音通知等。您可以访问腾讯云通信的产品介绍页面了解更多信息:腾讯云通信产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

何在keras添加自己优化器(adam等)

2、找到keras在tensorflow下根目录 需要特别注意是找到keras在tensorflow下根目录而不是找到keras根目录。...一般来说,完成tensorflow以及keras配置后即可在tensorflow目录下python目录中找到keras目录,以GPU为例keras在tensorflow下根目录为C:\ProgramData...找到optimizers.pyadam等优化器类并在后面添加自己优化器类 以本文来说,我在第718行添加如下代码 @tf_export('keras.optimizers.adamsss') class...# 传入优化器名称: 默认参数将被采用 model.compile(loss=’mean_squared_error’, optimizer=’sgd’) 以上这篇如何在keras添加自己优化器...(adam等)就是小编分享给大家全部内容了,希望能给大家一个参考。

45K30

何在 React 获取点击元素 ID?

在 React 应用,我们经常需要根据用户点击事件来执行相应操作。在某些情况下,我们需要获取用户点击元素唯一标识符(ID),以便进行进一步处理。...本文将详细介绍如何在 React 获取点击元素 ID,并提供示例代码帮助你理解和应用这个功能。使用事件处理函数在 React ,我们可以使用事件处理函数来获取点击元素信息。...使用 ref除了事件处理函数,我们还可以使用 ref 来获取点击元素信息。通过创建一个引用(ref),可以在组件引用具体 DOM 元素,并访问其属性和方法。...在事件处理函数 handleClick ,我们可以通过 btnRef.current.id 来获取点击元素 ID。当用户点击按钮时,handleClick 函数会打印出点击元素 ID。...结论本文详细介绍了在 React 获取点击元素 ID 两种方法:使用事件处理函数和使用 ref。

3.4K30
  • 何在onCreate获取View高度和宽度

    何在onCreate获取View高度和宽度 在开发过程中经常需要获取到View宽和高,可以通过View.getWidth()和View.getHeight()来得到宽高。...然而新手们经常在onCreate方法中直接调用上面两个方法得到值是0! 这是为什么呢? 因为View绘制是通过两个遍历来完成,一个measure过程,一个layout过程。...而这一切是发生在onCreate方法之后。所以在onCreate中直接使用View.getWidth()和View.getHeight()是无法得到正确。...那应该怎么onCreate获取View宽高呢?...开发者可以通过View.post()方法来获取到View宽高,该方法传递一个Runnable参数,然后将其添加到消息队列,最后在UI线程执行。

    5.3K20

    何在 XSwitch 对接 GB28181 协议摄像

    点击新创建分机,进入分机详情页,修改类型为海康摄像,这样在呼叫该监控时,XSwitch 会自动添加Subject 消息域以及正确 SDP 信息。...监控摄像配置 以海康摄像为例,进入【配置】⇨【网络】⇨【高级配置】⇨【平台接入】,选择平台接入方式为28181,同时配置 SIP 服务器地址端口、用户名、ID、密码,启用并保存配置即可。...如果注册状态显示为在线则表示注册成功,如下图: * 这里需要记住该处配置SIP 服务器 ID,呼叫摄像进行实时点播时会用到。...实时音视频点播 点播场景可以获取到设备音视频,注意,设备是sendonly。如果想获取到设备音频,设备需要选择复合流,否则 PS 流只有视频。...进入【呼叫】⇨【路由】新建一条路由,其中被叫号码为前文提及SIP 服务器 ID,如果对接是平台,真正主叫设备 ID 在INVITE头部Subject字段,from 则为平台注册到 XSwitch

    36110

    何在 WordPress 获取最新被评论文章列表

    我之前「WordPress 文章查询教程6:如何使用排序相关参数」详细介绍了文章查询排序参数,其中介绍可以通过评论数进行排序: $query = new WP_Query( array(...'orderby' => 'comment_count' ) ); 但是需求总是不停变化,现在又有了新需求,获取最新被评论文章列表,意思就是某篇文章刚被评论,它就排到最前面,在某些社交需求网站可能需要用到...但是使用 SQL 来实现可能就会造成 API 不一致问题,无法直接使用 WP_Query 进行各种操作,所以最好是通过 posts_clauses 接口实现让 WP_Query 排序参数支持 comment_date...$order}"; } return $clauses; }, 10, 2); 上面的代码简单解释一下,就是通过 posts_clauses 接口实现文章表和评论表连表,然后通过评论时间进行排序获取最新被评论文章列表...当然你也可以不需要了解和使用上面的代码,因为 WPJAM Basic 已经整合,你只需要知道最后可以通过下面简单方式就能够获取最新被评论文章列表: $query = new WP_Query( array

    1.5K30

    何在代码获取Java应用当前版本号?

    最近需要在项目中获取项目的版本号,最笨方法莫过于硬编码一个版本号,当然我也是这么干。不过闲下来时候突发奇想Spring Boot项目中pom.xml定义版本号能不能通过API获得呢?...从配置文件读取 Maven在构建项目时可以通过资源插件将构建属性即pom.xml属性注入到指定资源文件,具体操作为: ... 恰好spring-boot-starter-parent已经设置了这种方式。...Spring Boot提供 Spring Boot其实已经内置了获取项目构建信息自动配置ProjectInfoAutoConfiguration,它包含一个条件BeanBuildProperties:...spring-boot-version", "time" : { "epochSecond" : 1620664643, "nano" : 591000000 } } 总结 今天介绍了几种从通过API获取项目构建版本信息方法

    3.2K20

    freeswitch之SIP动态注册及动态配置拨号方案

    获取参数sip帐号信息 2、根据sip帐号信息,从数据库查询相应用户信息 3、用户为空时直接返回注册失败xml 4、用户不为空时生成注册xml信息 5、使用sip信息,参数:sip_to_host...(ip地址)以及数据库获取密码信息:pwd,进行md5加密,加密失败时返回注册失败xml信息 6、生成参数map,调动方法:replaceArgsNew,或者使用beel工具类,根据模版生成注册...effective_caller_id_number 为透传参数信息,即即被叫显示来电号码,可忽略该参数,未设置该参数时,默认为真实主叫号码,本代码默认设置为来电号码。 Data 转接参数信息。...,即为呼叫SIP帐号:123456时,为:user/12345,也可设置为:user/$1,表示为,默认被叫号码,即主叫键入被叫号码, 2、当被叫帐号不是sip帐号时,获取拨号方案列表信息。...:dial_tab获取拨号方案信息时,则循环查询拨号方案列表,根据被叫前缀,即call_prefix,来获取相应拨号方案信息,根据拨号方案信息,转接到指定网关即可。

    3.9K21

    何在代码获取Java应用当前版本号?

    最近需要在项目中获取项目的版本号,最笨方法莫过于硬编码一个版本号,当然我也是这么干。不过闲下来时候突发奇想Spring Boot项目中pom.xml定义版本号能不能通过API获得呢?...从配置文件读取 Maven在构建项目时可以通过资源插件将构建属性即pom.xml属性注入到指定资源文件,具体操作为: ... 恰好spring-boot-starter-parent已经设置了这种方式。...Spring Boot提供 Spring Boot其实已经内置了获取项目构建信息自动配置ProjectInfoAutoConfiguration,它包含一个条件BeanBuildProperties:...spring-boot-version", "time" : { "epochSecond" : 1620664643, "nano" : 591000000 } } 总结 今天介绍了几种从通过API获取项目构建版本信息方法

    5.9K20

    【续】一个音视频广播模块开发计划

    以上 工作温度 -10~+75度 外设: 1、mipicsi摄像 单目 GC2093 摄像 双目 GC2093 摄像 2、speaker,直接接功放 喇叭输出底板外挂5W功放 耳机孔 3、...主要工作量: 1、接口方便易用,socket或者其他形式接口; 比方配置sip账号,调音量; 2、功能完善; 1、配置功能 mqtt配置? udp配置?...192.168.16.50 :5599 整理json 搜索广播 cmd://每个命令cmd不一样,这里必须是2001 from://对配置板 from就是这个字符串 to:这里to填7个0 或者不填均可以...挂断电话 { "cmd": 2014, "from": "admin", "to": "0000000", "ts": 638207535783123422 } 来电语音提醒...本文为呱牛笔记原创文章,转载无需和我联系,但请注明来自呱牛笔记 ,it3q.com 上一篇:没有了 下一篇: 一段取ADC代码

    24410

    何在 MSBuild 项目文件 csproj 获取绝对路径

    通常我们能够在 csproj 文件仅仅使用相对路径就完成大多数编译任务。但是有些外部命令执行需要用到绝对路径,或者对此外部工具来说,相对路径具有不同含义。...本文介绍如何在项目文件 csproj 中将一个相对路径转换为绝对路径。...在 MSBuild 4.0 ,可以在 csproj 编写调用 PowerShell 脚本代码,于是获取一个路径绝对路径就非常简单: 1 [System.IO.Path]::GetFullPath...('$(WalterlvRelativePath)') 具体到 csproj 代码,是这样: 1 2 3 4 5 6 ...你可以阅读我其他篇博客了解到 $(OutputPath) 其实最终都会是相对路径: 项目文件已知属性(知道了这些,就不会随便在 csproj 写死常量啦) - walterlv 如何更精准地设置

    27730

    P2P通信标准协议(四)之SIP

    在前面几篇文章我们介绍了建立p2p通信一般协议(簇),以及一种完整NAT传输解决方案ICE, 但是对于多用户通信情况,还有一些通用协议来实现标准化管理,之前讲过SDP和SIP等,SIP(Session...SIP简介 SIP邀请(invitations)用于创建携带会话描述(SDP信息)会话,允许参与者使用一系列兼容媒体类型....SIP不是一个垂直集成通讯系统,而是作为一个组件与其他协议共同运作,RTP等实时传输协议等.另外SIP不提供服务, 只提供可以用来实现各种服务原语.比如,SIP可以定位用户并且传输一个不透明对象到其当前地址....如果这个原语用来 传输SDP,终端就能得知会话一些参数;如果同样原语用来传输一张照片,那也可以实现一种"显示来电者头像"服务....Bob终端(SIP电话)接收到INVITE请求后,会提示Bob这是来自Alice来电.同时Bob终端返回180响应, 表示正在呼叫,响应一直转发回到Alice终端,从而使Alice也能知道对方电话正在响

    94220

    freeswitch之呼叫中心acd模块开发

    3 、路由功能 拨入ACD的话务可以根据一定路由规则转发到响应座席终端(sip话机,坐席网关)、固话或者手机坐席或其他一些终端(IVR )。...事件:排队事件,排队取消事件,来电事件,通话事件,录音事件,挂机事件。...来电事件可以附带转接前ivr受理业务相关数据信息,方便弹屏页面展示给坐席来查看客户预备需求;录音事件附带录音文件信息,挂机事件中标识挂机方和挂机原因。...speak_member_id:坐席接听后是否报坐席工号; record_enable:是否需要录音; wait_music: 等待音乐; data:附加数据,用于坐席弹屏展示...2.4.3转外部系统添加sip自定义传送相关数据,方便对接第三方系统。 2.4.4 VIP优先接入功能,指定为优先级高号码优先接入到系统。

    2.9K31

    有序hashmap_treemap是有序

    大家好,又见面了,我是你们朋友全栈君。 如何给HashMap值排序?...此外,列表所有元素都必须是可相互比较(也就是说,对于列表任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。...说了这么多,正文其实是在这里,在用ibatisqueryForMap是查出结果是无序,即便是sql中有orderby,即便是ibatis文件中指定了返回值类型(有序类型,TreeMap,LinkedHashMap...… PJSUA2开发文档–第八章 好友(Buddy)类 8 好友(存在)Buddy PJSUA2功能是围绕Buddy类为中心展开.该类表示一个远端好友(伙伴,一个人或一个SIP端点). 8.1...发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    61730

    构建一个小巧来电显示迷惑工具

    有些服务可以为你自动完成此过程 - 有些服务甚至包含具有其他功能移动应用程序,通话录音和语音更改。但是,这些服务每次通话费用可能高达25美分。...在开始构建我们VoIP来电显示欺骗工具之前,我们先来简单了解一下一些基本术语: SIP(会话发起协议)—— VoIP通信实际标准,用于连接时初始身份验证和会话协议。...确保ulaw,alaw,gsm,g726编解码器复选框被勾选 选择提供商并设置中继 一旦你选择了你认为合适提供商,你就需要在Asterisk设置你SIP中继: 连接→...如下: 应用程序→扩展→添加扩展 选择默认“通用CHAN SIP设备” 显示名称应是用户名,且应该是数字(例如4位数字) 出局主叫CID(Outbound CID)是应是来电显示...在下一篇文章,我将深入探讨如何创建自定义扩展配置和自动化功能,以实现来电显示动态欺骗。 *参考来源:rapid7,FB小编 secist 编译,转载请注明来自FreeBuf.COM

    1.8K00

    何在H264码流SPS获取宽和高信息?

    前言 了解H264视频编码格式小伙伴都知道,H264编码存在两个非常重要参数集。...没错,它们就是序列参数集(SPS)和图像参数集(PPS),而且通常情况下,PPS会依赖SPS部分参数信息,同时,视频码流宽高信息也存储在SPS。...那么如何从中获取视频宽高信息呢,就是今天本文主要内容。 正文 一、SPS结构 对H264码流进行解码时,肯定会用到SPS相关参数,因此,我们非常有必要了解其中参数含义。...SPS,第一个字节表示profile_idc,根据profile_idc值可以确定码流符合哪一种档次。...当前码流,level_idc = 0x1e = 30,因此码流级别为3。 (3) seq_parameter_set_id 表示当前序列参数集id。

    3.2K10

    使用FreeSWITCH检测声音文件DTMF信息

    在模拟电话以及传统PSTN,DTMF与声音数据是混在一起,因为它们根本没法分开。在VoIP中常常使用DTMF2833或SIP INFO来传输DTMF,但那不是我们今天要讲内容。...为了做一次完整实验,我们先得有个录音文件。首先把SIP电话设成使用inband方式发送DTMF,以便能够录到DTMF信息,具体设置方式因不同的话机(或软电话)而已,我们就不多说了。...,防止挂机 通过该Lua脚本,当有电话呼入时,我们将来电路由到该脚本,便可以实时检测来电DTMF了。...,loopback/ 后面的dtmf是被叫号码,当一个Channel产生后,该Channel一端(一)会进入Dialplan查找路由,另一则执行 lua App,即执行我们Lua脚本。...在Channel另一执行我们Lua脚本,就可以检测DTMF了,笔者测试时,日志输出如下: [INFO] switch_cpp.cpp:1291 Got DTMF: 1 Duration: 1120

    2.5K20

    何在非Spring容器管理类中注入获取 Spring容器 Bean?

    何在非Spring容器管理类中注入/获取 Spring容器 Bean? 前言:此文仅限新手入行,大佬回避。...什么是被Spring容器管理类? 只要是被称之为Bean类就是被Spring容器管理类。...不了解可以看看小简写这一篇: 将Bean交给Spring容器管理几种方式 在非Spring管理怎么办? 有时候我们就是需要在非Spring管理类中使用Bean怎么办呢?...比如我这一篇: 踩坑篇之WebSocket实现类无法使用@Autowired注入对象 解决方法 我们定义一个上下文类,在Spring将Bean全部扫描完成后,我们去使用类去实现ApplicationContextAware...接口,重写setApplicationContext方法,获取到ApplicationContext数据后,放到静态属性

    4.3K40
    领券