首页
学习
活动
专区
工具
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),提供了一系列基于云计算的通信解决方案,包括音视频通话、实时消息、语音通知等。您可以访问腾讯云通信的产品介绍页面了解更多信息:腾讯云通信产品介绍

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

相关·内容

如何在 React 中获取点击元素的 ID?

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

3.5K30
  • 如何在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

    如何在JavaScript中获取单选按钮组的值?

    在实际业务开发中,我们常常需要获取用户选择的单选按钮的值,比如用户在注册时选择性别、问卷调查时选择答案等。今天,我们就来聊聊如何在JavaScript中获取单选按钮组的值。...id="genderf" name="gender" value="female" checked /> 女 在这个例子中,...获取单选按钮组的值 在JavaScript中,我们可以使用document.querySelector方法来获取被选中的单选按钮,然后通过它的value属性来获取对应的值。....value:通过value属性获取该单选按钮的值。 所以,当我们运行这段代码时,selectedGender的值会是“female”,因为默认情况下“女”按钮是选中的。...结束 在业务开发中,使用JavaScript来获取单选按钮组的值非常简单。我们只需要利用document.querySelector方法来获取被选中的单选按钮,然后通过value属性来获取其值。

    18710

    如何在 XSwitch 中对接 GB28181 协议的摄像头

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

    43310

    如何在 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,来获取相应的拨号方案信息,根据拨号方案信息,转接到指定的网关即可。

    4.1K31

    如何在代码中获取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获取项目构建版本信息的方法

    6.1K20

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

    以上 工作温度 -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代码的锅

    27020

    如何在 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 如何更精准地设置

    29230

    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也能知道对方电话正在响

    96720

    freeswitch之呼叫中心acd模块开发

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

    3K31

    有序的hashmap_treemap是有序的吗

    大家好,又见面了,我是你们的朋友全栈君。 如何给HashMap中的值排序?...此外,列表中的所有元素都必须是可相互比较的(也就是说,对于列表中的任何 e1 和 e2 元素,e1.compareTo(e2) 不得抛出 ClassCastException)。...说了这么多,正文其实是在这里,在用ibatis的queryForMap是查出的结果是无序的,即便是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.5K10

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

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

    4.7K40

    使用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
    领券