Asterisk-16源代码分析
文章平均质量分 77
分享Asterisk知识和DAHDI知识
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
yuesichiu
目前负责相机功能开发,工作内容主要包括拍照、录像、相册浏览、图像融合等工作
展开
-
从SIP抓包中查看DTMF频率
将SIP抓包的文件使用wireshark打开,然后点击菜单中的“电话”=》RTP=》RTP流,将RTP流保存到一个单独的语音文件。然后使用CoolEdit软件打开:然后点击分析:然后就能看到如下哪个频率下的能量最高。在上述图中,频率大约是1100 HZ,然后对比查看0~9的数字编码的频率表格,反推出来是按下的按键是哪个数字。...原创 2021-09-12 12:01:29 · 1285 阅读 · 0 评论 -
Asterisk之解决CDR dst字段号码为s等非号码问题
无论是使用FreePBX还是ISSABEL/Elastix等开源IPPBX系统,当呼叫情形比较复杂时,我们去查看通话记录CDR时会发现目标号码dst字段很多时候会显示s(非号码),比如振铃组/分机跟随等业务时都很可能出现此问题。没有办法,尝试使用讯时IPPBX/Yeastar S系列 IPPBX均无此问题。于是就对Asterisk的CDR以及拨号方案进行研究,为什么会发生这种现象。...原创 2021-05-23 15:03:46 · 443 阅读 · 0 评论 -
Asterisk中的SLA配置
一、概述SLA是英文 SharedLine Appearances 的缩写,SCA是英文Share Call Appearances。Asterisk自带实现了一个简单的SLA功能,此SLA与标准的BroadWorks/CISCO的差异有点大,主要是没有实现SLA/SCA的SIP信令处理那一块,包括NOTIFY中的event Line-seize,Call-info等字段都没有实现,一般SIP硬话机厂商都是实现了这些消息的。Asterisk采用的是会议(MeetME)的方式实现的。标准的经理与秘书的原创 2021-05-16 11:32:28 · 371 阅读 · 0 评论 -
ISDN PRI协议之第三层协议Q.931
一、ISDN L2和L3协议L2通过这ISDN参考配置为两个终端点提供无错误的安全连接,使用Q.921协议,L2规范被称为D信道上链路接入协议,这个协议在本地交换机与TE之间提供可靠的帧传输。L3提供呼叫建立、控制和业务接入等机制,使用Q.931,L3规范定义了在本地交换机与TE间的消息,这些消息被用作呼叫建立、呼叫监管 、呼叫断开和附加服务。Q.931 呼叫控制信息ISDN网络使用Q.931消息结构和信令元素提供呼叫控制能力。二、Q.931协议简述1、Q.931帧包括以下元素:原创 2021-05-16 11:09:37 · 1336 阅读 · 0 评论 -
ISDN PRI协议之二层协议Q.921
L2通过这ISDN参考配置为两个终端点提供无错误的安全连接,使用Q.921协议,L2规范被称为D信道上链路接入协议,这个协议在本地交换机与TE之间提供可靠的帧传输。LAPD上帧结构包括三种:信息帧、监视帧和未编号帧。1、SABME帧当建立LAPD连接时,SABME帧一般是第一个被传递的帧。当发送完SABME帧之后,开始多帧证实模式。当接收端收到SABME帧之后,以前没有被证实的帧将会被忽略。DISC帧被用于停止多帧的证实模式。2、UA帧当收到SABME帧或DISC帧之后,接收端将发送一个原创 2021-05-16 11:04:18 · 1558 阅读 · 0 评论 -
Asterisk之chan_dahdi PRI源代码代码分析
Asterisk的T1/E1 PRI是通过libpri库+Chan_dahdi.c实现的。目前libpri最新的版本是libpri-1.6.0.tar.gz(下载地址:ibpri-1.6.0.tar.gz)。Asterisk、chan_dahdi、DAHDI驱动、E1驱动模块wct4xxp、板卡这几者之间的示意图如下:其中dahdi.ko统一提供接口给应用层Asterisk。这些接口包括:/dev/dahdi/channel/dev/dahdi/ctl/dev/dahdi/tra原创 2021-05-14 22:28:10 · 395 阅读 · 0 评论 -
DAHDI驱动之三Probe过程
一、环境DAHDI驱动版本:dahdi-linux-complete-2.11.1+2.11.1DAHDI卡:DigiumWildcard TE420 dual-span T1/E1/J1 card版权声明:本文为博主(宽简厚重,Yuesichiu)原创文章,未经博主允许不得转载http://blog.csdn.net/yuesichiu/article/details/77259150二、细节当在Linux执行moprobe wcte11xp时,就会加载wcte11xp.ko。然后就.原创 2021-04-29 11:48:36 · 373 阅读 · 0 评论 -
Asterisk支持通话录音前语音提示
一、概述一般地录音场景中在自动录音或者会议通话建立时,PBX会播放提示音告知被叫用户,当前通话会被录音。常见拨打移动、电信、联通、银行等公司的人工客服时都是语音提示“本次通话将会被录音”。这个语音提示可以给通话的一方(主叫或者被叫)或者双方播放一段语音进行提示。二、实现Asterisk要实现这一需求也挺简单的,参考Asterisk Dial option的用法。https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Appl.原创 2021-04-20 14:20:27 · 516 阅读 · 0 评论 -
Asterisk SIP支持Fail2ban以防止暴力攻击和破解
一、概述基于Asterisk的IPPBX或者网关如果放到公网上,设备会收到大量的SIP请求(INVITE/REGISTER等),导致系统效率低且存在安全隐患,比如盗用设备拨打国际电话等等。而Fail2Ban 就是一个很好防止暴力破解的工具,配合Asterisk可以提供安全性。Fail2ban是一个日志IP的过滤筛选器,根据fail2ban提供的匹配规则提取IP,一旦这些 IP在一定的时间内到达了规定的次数就会在此IP地址添加到防火墙 iptables且可以设置禁止此IP访问的时间。Asterisk-原创 2021-04-10 12:36:55 · 745 阅读 · 0 评论 -
Asterisk拨号方案实现振铃策略:同振和顺振
一、概述二、拨号方案实现振铃策略原创 2021-04-05 11:59:35 · 930 阅读 · 0 评论 -
Asterisk拨号方案Dialplan支持Redis操作
一、概述二、移植func_redis到Asterisk源代码2.1 安装依赖库#yum install hiredis hiredis-devel2.2 移植func_redis1、下载func_redis源代码#git clone git@github.com:tic-ull/func_redis.git将func_redis/src/func_redis.c拷贝到Asterisk-16.12.0/funcs/目录下2、由于从github下载的func_redis.c.原创 2021-03-18 15:27:59 · 449 阅读 · 1 评论 -
Asterisk修改call file源代码(pbx_spool.c)以支持邀请PJSIP webrtc分机
一、概述 Asterisk Call Files是一个结构化文件,当它被移动到一个指定的目录下,它就能够自动的被Asterisk程序调用。它是一种很好的自动外呼方式,不像AGI、AMI和dialplan那样复杂,只需了解简单的知识就可以轻松使用它。典型场景:1、遇忙回叫业务。 假设PBX上分机A和分机B,使用Asterisk callfile实现自动回呼。分机A拨打分机B提示占线或无人接听的内部电话后,然后登记遇忙回叫功能,当拨打的分机B空闲时,系统自动呼叫主叫...原创 2021-03-06 16:29:20 · 340 阅读 · 0 评论 -
Asterisk中订阅分机/中继状态(配合BLF显示订阅分机状态)
一、概述 通过IP话机的可编程键,可以订阅局内其他用户的通话状态(待机/通话中/振铃/离线)。在呼叫用户之前,可以先了解其通话状态,在空闲时再呼叫可以提高呼叫成功率。按下订阅了其他用户状态的可编程键即可呼叫该用户。用户A通过IP话机的一个可编程键订阅了用户B的状态,用户B的通话状态都会在用户A的话机可编程键显示。同时用户A开启消息推送功能,此时不管谁给用户B打电话,用户A的话机界面上都会收到消息:XX用户正在呼叫用户B。场景常见于经理和秘书业务:秘书订阅经理话机状态并开启消息推送功能...原创 2021-03-01 22:08:18 · 794 阅读 · 0 评论 -
编译测试asterisk-java FastAGI
一、准备环境Asterisk版本(Asterisk-16.0.0) Asterisk-java(Asterisk-Java 3.x, GIT地址:https://github.com/asterisk-java/asterisk-java.git) Java版本(jdk-8u171-linux-x64.tar.gz) mvn版本(apache-maven-3.6.3-bin.tar.gz)二、安装必备库假设已经安装了asterisk,接下来就开始安装java,mvn和asterisk-jav原创 2021-01-26 10:36:56 · 342 阅读 · 0 评论 -
Asterisk中ACL访问控制列表机制
一、概述ACL是访问控制列表Access Control List的简称,即控制是否能进行访问的一套机制。Asterisk的ACL机制主要是基于IP地址的一套机制,包括SIP/IAX分机的permit/deny和命名的ACL(Named ACL),包括SIP/IAX请求注册、打电话等。一般地在配置SIP分机或者IAX分机的时候都是设置permit/deny(如果要填写多个的话就需要使用逗号','进行隔开),或者直接在acl.conf中先设置好规则,然后在分机的配置文件中acl=allow-192.1原创 2021-01-28 22:00:27 · 349 阅读 · 0 评论 -
Asterisk中的Chan_SS7代码简析之一
一、概述SS7协议旨在促进这些功能并维护其提供所依赖的网络。像大多数现代协议一样,SS7协议也是按照OSI模型的层次来进行组织的,从底到上依次是MTP1,MTP2,MTP3,ISUP/TUP/SCCP。MTP1提供了物理层通讯;MTP2主要提供了链路层功能。它用于保证信令链路的两个端点可以可靠地交换信令消息,它包含诸如错误检查,流控制和序列检查。MTP3层在MTP2技术上提供了网络功能,它主要是提供信令之间传递SS7网络中的点数,无论它们是否直接连接。 它包括这样的作为节点寻址,路由,备用功能路由和拥塞原创 2021-01-12 21:20:37 · 389 阅读 · 0 评论 -
Asterisk修改res_pjsip以支持IMS VoLTE tel URI Scheme
一、概述 Asterisk-13.0.0到Asterisk-16.15.0这几个官方版本都是不支持IMS VoLTE tel URI scheme(RFC3966)。假如将Asterisk部署在这几个版本环境中不可避免地会遇到部分电话呼出/呼入会失败。在Asterisk的CLI下看到的报错信息为416 Unsupported URI Scheme。这一点也可以从Asterisk的官方开发者(Asterisk Technical Lead)jcolp的社区中回复:Pjsip problem wi..原创 2020-12-27 09:49:29 · 1820 阅读 · 8 评论 -
Asterisk Chan_SIP支持IMS VoLTE tel URI Scheme分析
一、概述 当旧版本的Asterisk使用chan_sip对接IMS时经常会遇到手机开启VoLTE(VoLTE介绍,主要优势是接通等待时间更短,以及更高质量、更自然的语音视频通话效果、可以一边通话一边上网)功能的手机,后台报错为416 Unsupported URI Scheme。查看了最新的Asterisk-16.15.0源代码发现其已经携带了tel: URI Scheme的支持了。一般携带tel: URI会出现在INVITE请求行、From字段、To字段和Contact字段、P-Assert...原创 2020-12-16 11:25:21 · 1183 阅读 · 0 评论 -
Asterisk实现PJSIP Group基本功能
一、概述 基于上一篇文章Asterisk中的Chan_Dahdi的group实现(Asterisk Chan_dahdi中的Group组策略实现代码分析)的分析,本篇文章实现PJSIP的Group的一些基本功能。期望目标: 在Dialplan中可以使用Dial(PJSIP/${EXTEN}@[g|G|R|r]0)进行呼叫业务。方案假定: 使用多个PJSIP中继组成一个呼叫组(Group)时,如果是Asterisk的Dial应用携带PJSIP g/G时,每次都会只走...原创 2020-12-05 16:15:30 · 523 阅读 · 0 评论 -
Asterisk Chan_dahdi中的Group组策略实现代码分析
一、概述 当我们在使用语音板卡(DAHDI卡),包括模拟语音卡、数字中继语音卡。这包括Digium公司的模拟语音卡TDM400P/TDM410P系列,数字板卡TE110P/TE110/TE210/TE420等,OpenVox的A400/A810/A1610/A2410模拟板卡系列,OpenVox的D130/D230/D430,D110/D110P/D210/D410系列的数字板卡。这些板卡都是基于PCI或者PCIE总线,从硬件的角度上看是运营商====》PSTN线===》板卡===》PC...原创 2020-11-22 14:55:18 · 408 阅读 · 0 评论 -
Asterisk支持从P-Preferred-Identity/P-Asserted-Identity/Remote-Party-ID中获取CID和DID
一、概述 当Asterisk对接IMS服务商时经常需要从P-Preferred-Identity或P-Asserted-Identity或Remote-Party-Identity字段中提取CallerID(CID)和DID。二、原创 2020-11-05 21:19:01 · 2901 阅读 · 1 评论 -
Asterisk添加AMR/AMR-WB Codec编解码功能
一、概述 AMR-WB是目前移动网络中非常常用的语音编码,它已经被3GPP认定为强制使用的GSM,WCDMA网络强制使用的编码。通常情况下,我们所说的AMR是表示的AMR-NB,还有另外一种是AMR-WB(3GPP)/G.722.2(ITU), 此编码被广泛应用在媒体服务器,VoIP领域,移动互联网通信(GSM,WCDMA),网络对接等环境中,它和AMR相比,它同时支持了VAD/DTX和CNG功能。因此,AMR-WB获得了更广泛的使用。除了以上功能以外,当然,AMR-WB相比AMR-NB在语...原创 2020-09-03 16:01:20 · 791 阅读 · 1 评论 -
Asterisk中MixMonitor之支持接通后录音
一、概述 当我们使用开源的IPPBX(比如Elastix-2.5/4.0或者ISSABEL-4.0/FreePBX)的时候Outbound和Inbound路由(RingGroup/FollowMe)中有一个Call Recording选项,其值包括:Allow、Record immediately、Record On Answer和Nerver。当选择为Record On Answer,其实就是MixMonitor自带一个b选项。 尽管Asterisk自带的MixMoni...原创 2020-09-01 21:51:47 · 859 阅读 · 0 评论 -
Asterisk Stasis消息总线(Message Bus)之ast_network_change_type分析之二
在上一篇文章中介绍了如何使用ast_network_change_type这个Stasis Topic(Asterisk Stasis消息总线(Message Bus)之ast_network_change_type分析之一),目前Asterisk-16.0.0~Asterisk-16.12.0中,仅三个模块订阅了ast_network_change_type(网络更改事件)事件,它们是chan_sip、chan_iax2和res_pjsip。 默认情况下,这两个通道驱动程序以...原创 2020-08-27 10:53:01 · 283 阅读 · 0 评论 -
Asterisk中的pjsip_module默认优先级列表
版权声明:本文为博主(宽简厚重,Yuesichiu)原创文章,未经博主允许不得转载。https://blog.csdn.net/yuesichiu/article/details/103738989一、概述由于Asterisk-17.0.0版本下的SIP协议栈是基于Pjproject的,因此res_pjsip也是遵循pjsip的Filter模式。1、接收数据 在该Filt...原创 2019-12-27 22:19:56 · 502 阅读 · 0 评论 -
Asterisk16中的res_musiconhold.c音乐等待MOH代码简析
一、概要res_musiconhold.c主要实现音乐等待功能,提供了MusicOnHold、StartMusicOnHold、StopMusicOnHold和显示musiconhold.conf中的配置CLI和MusicOnHoldStart/MusicOnHoldStop的AMI Event。二、解析配置文件static int load_module(void){ int res; //创建一个哈希Hash Container if (!(mohclasses =原创 2020-05-14 15:21:10 · 574 阅读 · 0 评论 -
Asterisk PJSIP中继(IMS)呼叫开启VoLTE手机出现一接通就自动挂机问题
目录一、问题描述二、分析过程1、网络抓SIP协议包三、解决办法一、问题描述Asterisk版本号为16.1.0(LTS),SIP协议栈为PJSIP,对接IMS运营商。测试时发现部分手机接通电话后大概4秒钟后自动挂机。Asterisk的报错信息为:[ERROR] pjproject:0<?> sip_inv.c Error parsing/validating SDP body: Missing SDP rtpmap for dynamic payload type(原创 2020-05-28 21:56:39 · 2111 阅读 · 2 评论 -
Asterisk Stasis消息总线(Message Bus)之ast_network_change_type分析之一
一、概述 Asterisk从12版本开始就引入了Stasis Message Bus。Stasis虽然是一个内部publish/subscribe message,但是它可以支持Asterisk实时core或者其他的模块的事件获取,如果有系统用户订阅了实时core或者其他模块的指定消息以后,它负责处理用户这些关注的事件。如果其他相关的资源需要进行实时处理时,可以对你模块进行订阅,或者要求推送这些信息,这样可以进一步确保信息的一致性。一些实时功能模块,例如CDR,AMI或者现在的新API接口A...原创 2020-08-08 11:00:58 · 368 阅读 · 0 评论