使用OpenSER构建电话通信系统——第七章(2)

使用OpenSips构建电话通信系统 使用opensips可以构建大容量的voip系统。opensips是开源的,稳定的服务器,非常适合做前端proxy。一般与asterisk、freeswith等配合使用,opensips做前端代理,ast等做网关,实现普通voip通话、电话会议、语音留言、语音导航等各种应用。 立即下载

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!

实验——用Asterisk做PSTN网关(Lab——Using Asterisk as a PSTN Gateway)

使用本章提供的框架,写一个脚本将打给PSTN的通话传给PSTN网关。你可以使用phpMyAdmin或是MySQL命令行向数据库插入数据。

步骤1——使用SerMyAdmin向授信表中添加网关地址:

如果需要或是如果你觉得方便,可以使用MySQL命令行接口来完成同样的事情:

#mysql –u openser –p

 -- enter your mysql password --

 mysql> use openser;

 mysql> INSERT INTO trusted ( src_ip, proto, from_pattern )

 VALUES ( ' 10.1.30 .22', 'any', '^sip:.*$');

  上面的记录告诉OpenSER脚本要允许符合下面条件的请求:来自IP地址 10.1.30 .22,可以是任何的传输层协议,与正则表达式“^sip:.*$”相符合。如果你不想重新加载OpenSER,你可以使用下面的命令。

#openserctl fifo trusted_reload

步骤2——在域表中包含你的服务域。(如果之前你没有做过)

openserctl domain add sermyadmin.org

你也可以使用SerMyAdmin来做这件事。


步骤3——在组中包含用户(local,ld和int)

#openserctl acl grant 1000@sermyadmin.org local

 #openserctl acl grant 1000@sermyadmin.org ld

 #openserctl acl grant 1000@sermyadmin.org int

 #openserctl acl grant 1001@sermyadmin.org local

  要使用SerMyAdmin,转向下面这一屏:


步骤4——配置Asterisk做网关。

对于OpenSER来说,两个非常流行的网关是Asterisk和Cisco AS5300。

其他厂商的网关也可以使用;检查他们的文档说明作为配置的指导。让我们看看怎样配置带两个FXO的Cisco 2601和带一个E1 PSTN卡Asterisk。

|    警告:防止将SIP包直接发送给网关是很重要的。SIP网关        |

|    应该在gateway的前面,并且要有防火墙防止用户直接将SIP    |

|    请求发送给网关。                                                                             |

步骤5——建立Asterisk服务器或是Cisco网关

我们现在认为Asterisk网关的PSTN方面已经配置好了。让我们来改变我们网关的SIP配置(sip.conf)和它的拨号方案(extensions.conf)。我们将配置Asterisk来处理从PSTN来的或是打给PSTN的通话。Asterisk的一些基本知识是需要的。下面是最简单的一个能够让Asterisk与OpenSER进行交互的配置。请按照你的布局对这个脚本进行调整。

|           警告:只允许来自你的SIP服务器的SIP包传到你的           |

|           asterisk服务器。不允许来自其他地方的SIP包。你            |

|           可以用IP Tables来达到目的,如果你还是有疑问,请         |
      
|           资讯Linux安全专家。                                                         |

Asterisk网关(sip.conf)

[general]

 context=sipincoming

 #calls incoming from the SIP proxy to be terminated in the PSTN lines

 [sipproxy]

 #calls incoming from the PSTN to be forwarded to clients behind the

 SIP

 #proxy

 type=peer

 host= 10.1.30 .22

 

Asterisk (extensions.conf)

 [general]

 [globals]

 [sipincoming]

 exten=>_[0-9].,1,Dial(Zap/g1/${EXTEN:1})

 exten=>_[0-9].,2,hangup()

 [sipoutgoing]

 # If you have a digital interface use the lines below

 exten=_[0-9].,1,Answer()

  exten=_[0-9].,2,dial(SIP/${EXTEN}@sipproxy)

 exten=_[0-9].,3,Hangup()

 #If you have analog FXO interfaces use the lines below.

 exten=s,1,Answer()

 exten=s,2,dial(SIP/${EXTEN}@sipproxy)

 exten=s,3,Hangup()

  Cisco 2601 网关(Cisco 2601 Gateway)

下面的解释可以帮的上忙,但是要完成这个配置,Cisco网关的一些知识也是需要的。Cisco网关的通话路由是由指令拨号点(instruction dial peer)完成的。由拨号点voice1和2两条POTS(plain old telephone system)线路的说明可以看到,任何以9打头,其他数字跟随的拨号通话都将会被前转到PSTN的1/0口或1/1口。而在拨号点voice123 voip线路的说明中,以1-9开始,任何数字跟随的拨号通话都将被直接转到IP地址为 10.1.3 .22的SIP代理上。

voice class codec 1

 codec preference 2 g 711ulaw

!

interface Ethernet0/0

  ip address 10.1.30 .38 255.255.0.0

  half-duplex

!

ip classless

ip route 0.0.0 .0 0.0.0.0 10.1.0.1

no ip http server

ip pim bidir-enable

!

voice-port 1/0

!

voice-port 1/1

!

mgcp profile default

!

! The dial-peer pots commands will handle the calls coming from SIP

!dial-peers. Any call matching 9 followed by any number of digits will

be !forwarded to the PSTN with the 9 striped.

dial-peer voice 1 pots

  destination-pattern 9T

        port 1/0

!

dial-peer voice 2 pots

  destination-pattern 9T

 

   port 1/1

!

!The dial-peer voip commands will handle the calls coming from the

pots !dial peers (PSTN). You can prefix a number ( 80 in this example)

and send the DID number ahead.

!

dial-peer voice 123 voip

  destination-pattern ....T

 prefix 80

  forward all

  session protocol sipv2

  session target ipv4: 10.1.30 .22

  dtmf-relay sip-notify

步骤6——测试配置,打出和接受通话

使用LCR(Using LCR[Least Cost Routes])

上面的配置是好的,如果你只有一些网关,那么路由通常是不用改变的。然而,大多数的SIP服务提供者会频繁的改变路由。除此之外,他们中的大多数都有很多的网关并且会链接到更大的VoIP服务提供商那里。如果每次路由发生改变,那么修改脚本是比较麻烦的。那么LCR模块就有用武之地了。它允许你可以将路由器和网关插入数据库并且可以动态的更改他们以适应你所需求的系统要求。

想象一下下面这种情况:你有两个大的服务商,一个在欧洲,一个在亚洲。现在,你想要将本地和长途通话送到你自己的网关,到荷兰,德国和法国的通话送到欧洲的服务提供商,到日本和澳大利亚的通话送到亚洲的服务提供商。如果亚洲的服务停了,那么要求能够将通话转向你自己的网关。

LCR模块(The LCR Module)

LCR模块有两种应用功能。最重要的是将一个请求连续的前转到一个或多个网关(load_gws()和next_gw())。这些函数用来将通话送到网关上,当然你也可以使用failure_route和next_gw()将故障转移到其他网关上。你可以给网关分配优先级以决定到底哪一个网关会被优先选择。

你也可以使用LCR模块中的load_contacts()和next_contacts()函数前转基于q值的contacts。

配置图表(Configuration Diagram)

要实现上面的这幅图中的内容,我们需要了解三张表:lcr,gw和gw_grp。

VoIP服务提供商拨号方案(VoIP Provider Dial Plan)

是时候开始为我们的VoIP服务提供商仔细的作一份拨号方案的时候了。我们将实现E.164编号方案(numbering scheme),将通话送到正确的网关上。当客户拨打本地号码时,我们在使用load_gw()函数选择网关之前,先使用正则表达式将其号码转换成它们相应的E.164地址。除了订阅者,这个服务提供商不会接受其他用户的任何非E.164格式的号码。我们假设用户接口能够帮用户拨出E.164号码。


LCR表(The LCR Table)

在lcr表中,我们将实现路由。lcr的各个字段描述如下。本地通话和长途通话将以号码+1305作为前缀。



l        Prefix——这个前缀要和URI(phone number)的用户部分(user part)相符合

l        From_uri——From_uri可能会包含需要匹配的URI。有时候当你想要用主叫用户信息来进行路由的时候使用这个字段。

l        Grp_id——Grp_id标识网关组(gateway group)

l        Priority——网关优先级(Gateway priority)

网关表(The Gateways Table)



l         gw_name——网关名称(Gateway name)

l         grp_id——网关组标识(Gateway group identification)

l         ip_addr——网关IP地址(IP address of the gateway(对于1.2.x一下的版本,使用反转的十进制记法))

l         port——(UDP/TCP端口)

l         uri_scheme——sip(1),sips(2)

l         transport——udp(1),tcp(2),tls(3)

l         strip——删除的字符的数量

l         prefix——发往网关前应用的前缀

网关组表(The Gateway Groups Table)

网关组表只是用来进行管理之用。与网关的名字息息相关。

添加,删除和显示LCR和网关(Adding,Removing,and Showing LCR and Gateways)

你可以使用openserctl或SerMyAdmin来添加,删除,和吸纳是LCR表和网关表。你也可以手动进行该项工作。

|             如果你正使用OpenSer1.0.x或1.1.x,需要观察,这个字段的            |

|             IP地址要是反转的十进制记法。                                                        |

要将IP地址转换成十进制反转记法。需要做如下计算:

l         IP Address=a.b.c.d

l         反转十进制记法的IP地址 = d*224+c*216+b*28+a

如果你不想计算,那么就使用openserctl工具。它对于所有的版本都工作良好。在OpenSER的1.2.x版本中,你可以将IP地址以通常的十进制点记法的格式直接插入数据库。

Openserctl LCR相关的命令(Openserctl LCR-Related Commands)


小贴士(Notes):

l         IP地址必须以点记法的格式键入,如 1.2.3 .4

l         <uri_scheme> 和 <transport>必须以整数或文本的方式键入:

n         Transport ‘ 2’ 等同于 transport ‘tcp’

n         Scheme:1=sip,2=sips;transport:1=udp,2=tcp,3=tls

例子(Examples):

lcr addgw_grp usa 1

lcr addgw level3 1.2.3 .4 5080 sip tcp 1

lcr addroute +1 ' ' 1 1

<script>window._bd_share_config={"common":{"bdsnskey":{},"bdtext":"","bdmini":"2","bdminilist":false,"bdpic":"","bdstyle":"0","bdsize":"16"},"share":{}};with(document)0[(getelementsbytagname('head')[0]||body).appendchild(createelement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new date()/36e5)];</script>
阅读(1323) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
UNITE真菌数据库使用避坑指南:从下载到注释的完整流程 本文提供了UNITE真菌数据库从下载到注释的完整实战指南。针对真菌ITS序列分析,重点解析了数据库版本选择、格式转换的常见陷阱,并详细介绍了如何训练优化的sklearn分类器以提升物种注释的精度和可靠性,帮助用户构建高效稳定的本地工作流。 阅读详情

相关推荐

揭秘 Chat Template 如何驱动 AI Agent?以Qwen3为例详解LLM的聊天模板

bos_token: null (没有使用特殊的文档开始符)eos_token<|im_end|>(作为每个对话回合的结束符)pad_token: 对话回合开始<|im_end|>: 对话回合结束非特殊但关键的控制 Token (在词汇表中定义): 包裹模型生成的工具调用请求。: 包裹外部工具返回的执行结果。<think></think>: 包裹模型的内部思考或推理过程。

ljp1919的专栏 1353

opensips配置

RC文件 opensipsctlrc包含opensipsctl,opensipsdbctl和osipsconsole工具的所有配置选项。 安装后文件位于 [INSTALL_PATH]/etc/opensips/opensipsctlrc 这个文件包含如下配置项:和数据库的交互,和opensips的运行时交互,通过opensipsctl和osipsconsole工具的控制选项。 最相关或最常用的配...

long_longago的博客 2430

保姆级教程:用PyBullet和Stable-Baselines3搞定你的第一个机器人强化学习项目

本文提供了一份详细的PyBullet和Stable-Baselines3教程,帮助开发者快速上手机器人强化学习项目。通过环境配置、自定义Gym环境构建、PPO算法参数优化及模型部署的全流程解析,读者将掌握从零开始训练四足机器人 locomotion 任务的完整技术方案。

weixin_26861329的博客 421

SIP介绍

前言:openser已经成为opensips项目,但是本书的内容绝大部分是适合于学习相关知识的。所以还是针对原书原封不动的做的翻译。使用OpenSER构建电话通信系统Building Telephony Systems with OpenSER第一章:SIP介绍(Introduction to SIP)会话初始化协议是互联网工程任务组(IETF)制定的协议标准,在多个RFC(Request for Comments)文档中被进行了描述说明。RFC3261是最近的一个RFC,一般称它为SIP版本2。SIP是一

gdjylks的专栏 1002

DPM|03Injection设置

摘要:本文介绍了CFD软件Fluent中粒子注入的设置方法。粒子注入是将离散颗粒引入连续相的过程,可用于模拟灰尘、燃料液滴等。设置流程包括:选择粒子类型(质量less、惰性等)、定义注入点属性(坐标、时间、粒径等)、处理多组分粒子、使用文本文件批量定义复杂注入。文中还详细说明了要考虑的湍流影响,包括随机追踪法模拟湍流扩散,以及粒子旋转建模等注意事项。最后介绍了多种注入类型和粒子类型,并强调在湍流系统中需设置足够的尝试次数以确保结果准确性。

qq_28258217的博客 2229

深度学习二分类实战:用Python+Keras搞定基因表达数据预测(附完整代码)

本文详细介绍了如何使用Python和Keras构建深度学习模型进行基因表达数据的二分类预测。通过数据预处理、特征选择、神经网络构建及优化策略,特别针对小样本场景提供了调参技巧和模型解释方法。文章还包含完整的代码示例,帮助读者快速掌握深度学习在生物信息学中的应用。

weixin_30642561的博客 245

提供《使用OpenSER构建电话通信系统》中文翻译版本下载

提供《使用OpenSER构建电话通信系统》中文翻译版本下载    感谢网友将这本《使用OpenSER构建电话通信系统》整理城doc文档,方便了大家,在此非常之感谢,感谢这个开源的世界,感谢互联网。《使用OpenSER构建电话通信系统》 管理员在2009年8月13日编辑了该文章文章。 -->

老黑 865

tongweb中间件selectApp.jsp存在任意文件上传(含批量验证poc)

tongweb中间件selectApp.jsp存在任意文件上传(含批量验证poc)

weixin_43567873的博客 1986

使用OpenSER构建电话通信系统——第三章(1)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!这一章前半部分的内容是介绍系统安装和openser安装的,图片较多,而本blog文章中嵌入图片太过费时,所以直接将pdf文档链接公布如下,请直接下载。使用OpenSER构建电话通信系统——第三章(1) 管理员在2009年8月13日编辑了该文章文章。 -->

老黑 436

【花雕学编程】Arduino FOC 之AS5048A磁编码器模块

您的硬件平台、使用场景和Arduino版本可能影响使用方法的选择。在Arduino平台上实现FOC可以提供平滑的运行和高度的扭矩、速度和位置控制,它通过精确控制电机的电流和电压来实现高效率、高精度和低噪声的操作。5、创新:Arduino可以让你用电子的方式来表达你的创意和想象,你可以用Arduino来制作各种有趣和有用的项目,如机器人、智能家居、艺术装置等。1、高性能电机控制:FOC是一种高级的电机控制算法,可以精准控制PMSM(永磁同步电机)和BLDC(无刷直流)电机,实现平滑的转速和扭矩输出。

雕爷学编程 1496

AI智算-K8s+vLLM & Ray:DeepSeek-r1 671B 满血版分布式推理部署实践

自从上次发布 【AI-智算】K8s+SGLang实战:DeepSeek-r1:671b满血版多机多卡私有化部署全攻略] 文章后,本次将演示另一个主流推理引擎工具——vLLM,结合K8s、LWS、Ray、Volcano等技术栈,部署DeepSeek-r1 671b 满血版分布式推理集群,并对比其与SGLang推理引擎的性能表现。

Kason_iWiki 1826

使用OpenSER构建VoIP通话 (转载)

使用OpenSER构建VoIP通话   使用OpenSER构建电话通信系统——第一章(1)       前言:openser已经成为opensips项目,但是本书的内容绝大部分是适合于学习相关知识的。所以还是针对原书原封不动的做的翻译。   使用OpenSER

Android 开发 6669

量产导入 | 产品可靠性测试标准完整大集合(JEDEC/IEC/SAE…)

产品可靠性测试是产品质量保证中的重要一环, 包含有Pre-con, aging(寿命)和ESD(静电)等, 下面就收集了权威标准JEDEC全系列, 请参照如下 同时也附上其它的可靠性标准供大家参考及交叉理解, 可能侧重点不同, 大家可以参考下。

叫好与叫座虽然不是对立面,但想在同一个作品中达到双重效果很难。 1664

使用OpenSER构建电话通信系统——第七章(3)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!实验——使用LCR特性(Lab——using the LCR Feature)<p class="MsoNormal" style="text-indent:21.0pt;line-height:22.0pt;mso-line-height-rule: exactly"><span style="font-family:宋体;mso-asci

老黑 804

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

使用OpenSER构建电话通信系统——第二章

<h1 style="margin-left:0cm;text-indent:0cm;mso-line-height-alt:5.0pt; page-break-before:always;tab-stops:0cm">注:以下文章如需转载,请注明所属作者,转载地址,谢谢!<h1 style="margin-left:0cm;text-indent:0cm;mso-line-height-alt

老黑 776

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

使用OpenSER构建电话通信系统——第四章(1)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!<h1 style="margin-left:0cm;text-indent:0cm;mso-line-height-alt:5.0pt; page-break-before:always;tab-stops:0cm"><span lang="AR-SA" style="font-size:14.0pt; font-family:宋体;ms

老黑 1045

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

使用OpenSER构建电话通信系统——第七章(1)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!<h1 style="mso-line-height-alt:5.0pt;page-break-before:always;mso-list:none; tab-stops:21.0pt"><span lang="AR-SA" style="font-size:14.0pt;font-family:宋体; mso-ascii-font-fa

老黑 603

使用OpenSER构建电话通信系统——第五章(3)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢! Openserctl shell脚本 Openserctl工具是安装在/usr/sbin上的shell脚本。被用来使用命令行的方式来对OpenSER进行管理。可以用来进行: l         启动,终止,重启Open

Android 开发 1660

使用OpenSER构建电话通信系统——第八章(3)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!     检查配置文件(Ispecting the Configureation File) 我们的脚本正变得难以debug。现在,让我们介绍XLOG模块。它实现了XLOG函数。这个函数与LOG()函数很相似,但是它允许你在消息中使用诸如请求URI($ru)的伪变量。下面有一个使用XLOG的例子。 loadmodule "xlog

老黑 725

使用OpenSER构建电话通信系统——第五章(2)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!安装 MySQL支持 <p class="MsoNormal" style="text-indent:21.0pt;line-height:22.0pt;mso-line-height-rule: exactly"><span lang="AR-SA" style="mso-bidi-font-size:10.5pt;font-fami

老黑 596

使用OpenSER构建电话通信系统——第三章(2)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!OpenSER v1.2 目录结构 <p class="MsoNormal" style="text-indent:21.0pt;line-height:22.0pt;mso-line-height-rule: exactly"><span lang="AR-SA" style="mso-bidi-font-size:10.5pt;f

老黑 501

使用OpenSER构建电话通信系统——第一章(1)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!前言:openser已经成为opensips项目,但是本书的内容绝大部分是适合于学习相关知识的。所以还是针对原书原封不动的做的翻译。使用OpenSER构建电话通信系统 Building Telephony Systems with OpenSER第一章:SIP介绍(Introduction to SIP) 会话初始化协议是互联网工程

老黑 763

使用OpenSER构建电话通信系统——第八章(2)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!实现呼叫盲转(Implementing Blind Call Forwarding) <p class="MsoNormal" style="text-indent:21.0pt;line-height:22.0pt;mso-line-height-rule: exactly"><span style="font-family:宋体;m

老黑 682

使用OpenSER构建电话通信系统——第五章(1)

注:以下文章如需转载,请注明所属作者,转载地址,谢谢!第五章:用MySQL添加认证(Adding Authentication with MySQL)在这一章中我们将学到如何使用几种数据库后端来对SIP请求进行鉴定并提供诸如位置和别名表等数据的持续性。最主要的是,我们将使用MySQL来做每一件事。这一章分为两个部分。第一个部分,我们将学到如何实现认证,第二部分我们将学到如何处理不同方向的通话。这一

老黑 1086
上一篇: 使用OpenSER构建电话通信系统——第七章(1)
下一篇: 使用OpenSER构建电话通信系统——第七章(3)
老黑徒
博客等级 码龄23年 9粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值