`

SIP、IAX内外网与PSTN线路及手机互相通讯的实例

    博客分类:
  • SIP
阅读更多

在此次试验中,并没有讨论不安装板卡,直接由SIP Trunk连接其他SIP服务器来使得SIP用户拨打外部电话的问题。
本篇仅用于讨论使用FXO卡测试内外线进出的相关问题。

一、实验环境
1. Trixbox服务器硬件
(1) 奔腾III500MHz / 192MB SDRAM / 13G HardDisk / BX主板 with 4PCI插槽
(2) 在两个PCI插槽中各安装一片X100P FXO克隆卡
2. 电话线路及话机
(1) 两路普通PSTN市话线路分别接入两片FXO卡的Line口
(2) 若干路其他PSTN线路及模拟话机(可选项)
(3) IAX及SIP Softphone软件,例如X-Lite及KIAX等
(4) 手机两部(可选项 )
3. 宽带网络ADSL环境
Linux代理及防火墙服务器外网卡接了Linksys宽带路由器,内网卡与Trixbox服务器相连,拓扑结构如下:
Switch-----Linux NAT Server-----Linksys ADSL Router-----Internet   ~- ~- ~- ~- ~- ~   PC with IAX/SIP softphone (remote)
|
|---------------Trixbox Server===============2 PSTN Line=====
|---------------PC with SIP softphone (local)
|---------------PC with IAX softphone (local)
|......

二、安装过程
1. Trixbox1.2.3.iso镜像文件、刻录光盘、启动、回车自动安装,清除所有原硬盘数据
千万不可接上其他有资料的硬盘,这种方式所有硬盘的数据都会丢失,即便你在BIOS中屏蔽了你的其他硬盘!!!

(如果你没有多的硬盘来做实验,例如在已经装有Windows的硬盘上加装Trixbox系统,光盘启动后就敲expert回车吧,自定义分区安装的方式与直接回车的最后结果对于Trixbox系统来讲,除了留住原有数据及Windows外没有什么区别。不过需要更长时间而已。 选择安装所有包,重启后解压光盘上的trixbox1.2.3.tar.gz到/var/trixbox_load,然后运行/var/trixbox_load/install_all.sh即可,这种手动模式有的机器运气不好,在munin模块安装时可能需要多等待1-2个小时,需要耐性,呵呵)
2. 定义时区、root密码后,一切按照默认选项,机器第一次重启后取出光盘,第二次重启后完成安装,停在登陆模式

三、调试配置各参数
1. 需要升级 FreePBX及清除Kernel Panic错误隐患的朋友们,可以参考dynaguy兄弟相应的帖子进行第一步动作,我的实例没有对FreePBX升级,但是由于机器会发生重启死机,于是首先修改/etc/rc.d/rc6.d/K92zaptel解决隐患!
2. 由于安装了两片FXO卡,则修改/etc/zaptel.conf,加入两行蓝色语句如下:
fxsks=1
fxsks=2
loadzone        = us
defaultzone     = us
3. 修改/etc/asterisk/zapata.conf,加入三行蓝色语句如下:
[trunkgroups]
[channels]
busydetect=yes
language=en
context=from-zaptel
signalling=fxs_ks
usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
cancallforward=yes
callreturn=yes
echocancel=yes
echocancelwhenbridged=no
echotraining=800
rxgain=0.0
txgain=0.0
group=0
channel=1
callgroup=1
pickupgroup=1
immediate=no
faxdetect=incoming
group=1
channel=2
到此为止,需要手动修改配置文件的部分已经全面完成!

四、通话试验
下面的操作全部由FreePBX图形化操作完成,非常方便:

1. PC软电话之间互相通话
(1) FreePBX --> Tools --> Module Admin --> 选择全部模块 --> Enable --> Submit
(2) FreePBX --> Setup --> Extensions 添加四个分机号用于PC软电话测试 (SIP分机号2201、2202; IAX2分机号2101、2102)
(3) 为外网用户拨入做好SIP及IAX的防火墙端口映射
此时内外网软电话之间完全可以正常通话

2. 由内部分机或任意地方的软电话分机拨打其他PSTN电话或手机,即内线拨打外线:
(1) 系统已经默认设置了9作为outside拨号规则,如果你只装了一片FXO卡,这时系统无需作调整,应该已经可以拨打外线电话及手机了。
例如使用X-Lite登陆系统,注册2201分机后,先拨9再直拨外线号或手机即可成功。
注意: 如果你接在FXO卡上用来测试的线路是电信汇线通,那么就要拨2个9再拨外线号了。第一个9是Trixbox要求的,第二个9是电信汇线通呼叫外线要求的。其他类型的线路原理相同。一般来说使用家用电话线路测试则只需拨第一个9。
(2)我使用两片FXO卡以解决呼叫转移的测试,此时我们最好定义一下呼出路由使用的Trunk顺序
先修正两个ZAP Trunk的设置:
在FreePBX中修改系统默认的Trunk Zap/g0的名称为1,即:FreePBX --> Setup --> Trunks --> Trunk Zap/g0 --> Zap Identifier (trunk name)的值由g0改为1
然后再添加一个Zap Trunk,将Zap Identifier (trunk name)的值设定为2
最后在Outbound Routes中修改0号路由9_outside的设置:将Trunk Sequence的值定为ZAP/2,即:我们固定由2号线路/FXO卡做呼叫转移(呼出)的动作,那么我们拨打1号线路/FXO卡时,如果设置了呼叫转移,Trixbox就能把拨到1号线路的电话由2号线路转移出去了!
至少到现在为止,我还不能将拨到1号线路的电话还是由1号线路转移出去。我个人觉得PSTN信号的单FXO卡是无法完成的!

3. 由外部PSTN线路或手机呼叫Trixbox所连接的两个PSTN电话号码
此时呼叫,系统不会正确处理,不信你用软电话拨打7777或直接用手机拨打Trixbox的两条线路看看。

我们现在来进行最精彩的实验部分:
实验目标:外线呼叫,首先由一级IVR处理,给出语音提示(欢迎致电xxxx,请直拨分机号,或请拨0由总机为您服务。联系小张,请按1;联系小王,请按2;客服座席排队测试,请按3;试听背景音乐,请按4;返回,请按5)
按0,来电转移至某个固定电话或手机A;
按1,由二级IVR处理,给出语音提示(办公电话请按1;手机请按2;返回请按0)
按2,由二级IVR处理,给出语音提示(办公电话请按1;手机请按2;返回请按0)
按3,由自定义的Quere处理
按4,播放一段音乐(播放音乐过程中,按0重新播放、按1返回一级IVR)
按5,回至一级IVR

各位,先准备wav格式的语音提示文件吧,最简单的方法就是直接反复使用X-Lite拨打*77录音,然后拨打*99测试,满意则将/tmp/unmamedivrrecording.wav通过scp拷贝出来改名保存吧。这样你可以很快的制作出一系列的语音文件留以后用。

具体步骤:
先添加System Recordings:强烈建议你直接使用upload with .wav format方式,然后给这些录音在系统中命名,例如Main IVR Menu, Layer2 Menu等

然后通过Digital Receptionist添加IVR
注意Enable Direct Dial很重要,允许用户直接拨打分机号

再建立一个Queue用于排队测试,例如让这些分机加入排队
2101
2102
2201
2202
2804
提交后系统会自动将格式修正:
2101,0
2102,0
2201,0
2202,0
2804,0

以上操作,还有多层IVR菜单应用,通过FreePBX操作,应该没有什么难度,我再次就不细述了。如果需要,我另外再补充。
注意别忘了最后设置Inbound Route,将所有来电设置到第一级IVR上,即首层欢迎菜单上。这样才能使外线拨入后首先听到语音提示。

下面看看重点难题:如何将外线呼叫转移到另外的外线(或手机)上?
有两种方法:
1. 建立Queue,然后在Queue中的static agents中输入需要转接的目的外线号,记得前面加9,然后将这个Queue放至IVR中处理。
例如将前台的号码前面加9后定义为QueueQT,然后把QueueQT做为Welcome IVR的按0动作

2. 建立一个无用户使用的SIP或IAX分机号,然后为该号码设置Follow Me, 在Follow Me中的Extension List中输入9加外线号再加#结束,然后把这个Follow Me项目提供给IVR处理。
例如将前台的号码前面加9后面加#后定义为FollowQT,然后把FollowQT做为Welcome IVR的按0动作

有没有更直接、更简便的方法?我不知道。

分享到:
评论

相关推荐

    IAX软电话 SIP软电话

    一个支持IAX,SIP协议的两用软电话,挺好用。

    IAX2协议文档(RFC 5456)中文翻译

    - **与SIP的对比**:SIP(Session Initiation Protocol)是一种广泛使用的多媒体会话信令协议,而IAX2则更侧重于效率和简易性。相比之下,SIP更灵活,支持更多类型的应用和服务,但这也意味着更大的开销。 - **与...

    两台elastix对连,用sip协议或iax协议

    用sip或iax2协议进行两台elastix的对连设置!

    IAX 软电话程序源码

    Freeswitch则是一个类似但更为现代化的开源通信平台,它不仅支持IAX,还支持SIP(Session Initiation Protocol)等其他多种通信协议。Freeswitch提供了丰富的API和模块化设计,使得开发者可以构建高度定制化的通信...

    iax 资料

    ### IAX2(Inter-Asterisk EXchange)协议:控制与传输流媒体的高级指南 #### 引言 Inter-Asterisk EXchange (IAX),更具体地指其第二版本IAX2,是一种专为控制及在互联网协议(IP)网络上传输流媒体设计的协议。...

    IAX 软电话

    自己做的一个iax协议的软电话。 支持不用注册服务器,直接ip呼叫通话; 支持注册服务器做软电话客户端; 支持自动接通AA,置忙DND; 支持网页调用和网页挂断(压缩包内有注册表文件,导入注册表后,即可用iax2:????...

    论文研究-IAX在VOIP中的应用 .pdf

    IAX在VOIP中的应用,赵填,,在VOIP这个迅猛发展的产业中,IAX凭借其自身的优势--健壮,功能强大,简单,节省带宽,便于防火墙和NAT的配置,逐渐地为人们所接受。

    IAX2协议的软电话支持来电弹屏自动接听网页调用更新

    如果需要网页调用,请修改reg文件为正确的文件路径,然后导入,即可在网页内用"iax2:7777"拨打电话,用"iax2:answer"接听,用"iax2:hangup"挂断. 可以设置自动注册到服务器,如果不注册,也可以支持局域网点对点ip互拨通话...

    免费32位软电话控件(IAX2协议)V1.0.0.7

    IAXOCX是一个可用于asterisk的支持IAX协议的ActiveX控件: 简单易用,无需特殊安装 多线路、多帐户注册 呼叫转接 呼叫保持 语音信箱状态通知 DTMF发送 电平指示 点对点拨号 GSM、G711A、G711U语音编码 ...

    2个ASTERISK网关互连

    在本文中,我们将深入探讨如何将两个ASTERISK网关通过SIP(Session Initiation Protocol)或IAX2(Inter-Asterisk eXchange version 2)协议进行互连,实现不同类型的互连模式,包括IAX到SIP、SIP到SIP、IAX到IAX...

    开发呼叫中心电话用的完全免费的IAX2 ActiveX控件最新版

    IAXOCX是一个可用于asterisk的支持IAX协议的ActiveX控件: 简单易用,无需特殊安装 多线路、多帐户注册 呼叫转接 呼叫保持 语音信箱状态通知 DTMF发送 电平指示 点对点拨号 GSM、G711A、G711U语音编码 ...

    免费64位软电话控件(IAX2协议)V1.0.0.710

    IAXOCX是一个可用于asterisk的支持IAX协议的ActiveX控件: 简单易用,无需特殊安装 多线路、多帐户注册 呼叫转接 呼叫保持 语音信箱状态通知 DTMF发送 电平指示 点对点拨号 GSM、G711A、G711U语音编码 ...

    基于SIP协议的音视频的软件开发(20210921151509).pdf

    2. **Vocal**:虽然文档中没有给出具体描述,但很可能指的是一种与SIP相关的通讯软件或库。 3. **YATE**(Yet Another Telephony Engine):是一个支持SIP协议的开源电话引擎,它支持多种协议,包括H.323、IAX2等。...

    djiax:用Java编写的IAX2客户端库

    与其他IAX2库相比,它重点关注需要直接发送和接收原始音频数据(例如,到PSTN或从PSTN接收原始音频数据),与它们纠缠(覆盖,重新编码等)并将其发送到执行以下操作的客户端的服务器:实际呈现给用户。 用法 // ...

    chan_dahdi.rar_asterisk_asterisk channel_asterisk中cid_channel as

    它支持多种协议,如SIP、IAX2和PSTN(Public Switched Telephone Network)接口,如Dahdi。Dahdi是Digital Access and High-speed Digital Subscriber Line Interface的缩写,它是Asterisk与传统电话线路交互的驱动...

    elastix公网呼入及音视频通讯

    ### Elastix公网呼入及音视频通讯 #### 一、Elastix简介与公网呼入配置 **Elastix**是一款开源的统一通信平台,它集成了多种通信功能,如VoIP(Voice over Internet Protocol)、传真、语音邮件、即时消息、会议...

    IAX2协议的软电话支持来电弹屏自动接听网页调用

    如果需要网页调用,请修改reg文件为正确的文件路径,然后导入,即可在网页内用"iax2:7777"拨打电话,用"iax2:answer"接听,用"iax2:hangup"挂断. 可以设置自动注册到服务器,如果不注册,也可以支持局域网点对点ip互拨通话....

    开发VOIP电话用的完全免费的IAX2 ActiveX控件

    IAXOCX是一个可用于asterisk的支持IAX协议的ActiveX控件: 简单易用,无需特殊安装 多线路、多帐户注册 呼叫转接 呼叫保持 语音信箱状态通知 DTMF发送 电平指示 点对点拨号 GSM、G711A、G711U语音编码 主叫号码设置 ...

    draft-guy-iax-05.txt

    关于IXA协议的网络草稿, draft-guy-iax-05, 2008年10月6号发布的.

    最全Asterisk代码学习笔记

    13. **PSTN支持**:Asterisk不仅支持VoIP,还可以通过FXO/FXS接口与传统电话线路(PSTN)连接,实现VoIP与PSTN的互连。 14. **CLI命令**:Asterisk提供命令行接口(CLI)进行实时监控和控制,如查看状态、修改配置...

Global site tag (gtag.js) - Google Analytics