您的位置:首页 > 其它

trixbox不相信眼泪

2009-08-11 16:17 316 查看
http://blog.zndev.com/blog.php?do=showone&uid=2&type=blog&itemid=849

标题: SIP、IAX内外网与PSTN线路及手机互相通讯的实例 [打印本页] ,69547#o1

?xTppX=

-------------------------------------------------------------------------------- 3yO
%=]~`

作者: alanpeng 时间: 2006-11-5 02:54 标题: SIP、IAX内外网与PSTN线路及手机互相通讯的实例 ;/s|uL,

8|'+C|

应dynaguy兄弟的要求,为各位还在摸索中的同仁们贴上一例相对比较完整的实验: 4i!V`x!g7

(2.0beta的实验有些问题,因此我以最稳定的1.2.3示范) yN'Pr!X?]

在此次试验中,并没有讨论不安装板卡,直接由SIP Trunk连接其他SIP服务器来使得SIP用户拨打外部电话的问题。
l]'rvQ

本篇仅用于讨论使用FXO卡测试内外线进出的相关问题。 ZdX)H$

#r=iH
nS

一、实验环境
M>fs;y0

1. Trixbox服务器硬件 e"j%QhW

(1) 奔腾III500MHz / 192MB SDRAM / 13G HardDisk / BX主板 with 4PCI插槽 B/1!JT*

(2) 在两个PCI插槽中各安装一片X100P FXO克隆卡 j
aNtyz

2. 电话线路及话机 0UBeaQ

(1) 两路普通PSTN市话线路分别接入两片FXO卡的Line口 qY!=.f} 

(2) 若干路其他PSTN线路及模拟话机(可选项) mT2G35b#

(3) IAX及SIP Softphone软件,例如X-Lite及KIAX等 '$Ek=2+

(4) 手机两部(可选项 ) ~ Y,cBu1

3. 宽带网络ADSL环境 mWIoQ1Z3y

Linux代理及防火墙服务器外网卡接了Linksys宽带路由器,内网卡与Trixbox服务器相连,拓扑结构如下: 46'7.uIQ`

Switch-----Linux NAT Server-----Linksys ADSL Router-----Internet ~- ~- ~- ~- ~- ~ PC with IAX/SIP softphone (remote) "`AZw{xr

| Shn$
V

|---------------Trixbox Server===============2 PSTN Line===== Ypv}8+

|---------------PC with SIP softphone (local) P]fo mG9W

|---------------PC with IAX softphone (local) mf^f7?CG#s

|...... lSR/'

8:$c](-ck)

二、安装过程 G7m4#|

1. Trixbox1.2.3.iso镜像文件、刻录光盘、启动、回车自动安装,清除所有原硬盘数据 =wf2fdqth

千万不可接上其他有资料的硬盘,这种方式所有硬盘的数据都会丢失,即便你在BIOS中屏蔽了你的其他硬盘!!! ,<:s=*s

d>j@H>,

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

2. 定义时区、root密码后,一切按照默认选项,机器第一次重启后取出光盘,第二次重启后完成安装,停在登陆模式 @Ujoc[Jw

O0qW 0%pyW

三、调试配置各参数 Ui~T7.)
kC

1. 需要升级 FreePBX及清除Kernel
Panic错误隐患的朋友们,可以参考dynaguy兄弟相应的帖子进行第一步动作,我的实例没有对FreePBX升级,但是由于机器会发生重启死机,于
是首先修改/etc/rc.d/rc6.d/K92zaptel解决隐患! c@0 f@=

2. 由于安装了两片FXO卡,则修改/etc/zaptel.conf,加入两行蓝色语句如下: @{33c{1m

fxsks=1 M/ 4'Cf h(

fxsks=2 V(,Q[+gyx

loadzone = us UT *"@[/n

defaultzone = us T}o56$Eb*$

3. 修改/etc/asterisk/zapata.conf,加入三行蓝色语句如下: iOQEY?;>

[trunkgroups] hL/ua^C

[channels] vR8cS^j

busydetect=yes !KQ_h)7

language=en ~OP@#ul.e

context=from-zaptel {|?5eF?l

signalling=fxs_ks r7ALU

usecallerid=yes aE3l-Co:E

hidecallerid=no )gI
|~= ]=

callwaiting=yes aHXS6vS

usecallingpres=yes B tiSc=

callwaitingcallerid=yes ]HrQ^r

threewaycalling=yes RhWyMc

transfer=yes z&C3y7!

cancallforward=yes "M^I:Bl

callreturn=yes |VmIzmq

echocancel=yes B"(]KENA

echocancelwhenbridged=no ?T8/Gw-

echotraining=800 iZ*[3hw

rxgain=0.0 PQj7q iK_

txgain=0.0 X1qI 74

group=0 @vKdOk/ Qv

channel=1 5Y!G]

callgroup=1 gYtX#0

pickupgroup=1 H/yM}wk5F

immediate=no 2w1(w$#38

faxdetect=incoming "I(66fT !

group=1 &5k+'i~9

channel=2 U8'|VUZV

到此为止,需要手动修改配置文件的部分已经全面完成! }tTUBK
hO"

-}v*8{GTD

四、通话试验 t~snzzM

下面的操作全部由FreePBX图形化操作完成,非常方便: $w`<71g

t5DYic

1. PC软电话之间互相通话 3i?5Bj|O

(1) FreePBX --> Tools --> Module Admin --> 选择全部模块 --> Enable --> Submit 3O=iqgD9

(2) FreePBX --> Setup --> Extensions 添加四个分机号用于PC软电话测试 (SIP分机号2201、2202; IAX2分机号2101、2102) eeNx~Z,S

(3) 为外网用户拨入做好SIP及IAX的防火墙端口映射
dw>P$B|9

此时内外网软电话之间完全可以正常通话 k=dP
0

>HU0Y0lF

2. 由内部分机或任意地方的软电话分机拨打其他PSTN电话或手机,即内线拨打外线: #EMnhR(6j

(1) 系统已经默认设置了9作为outside拨号规则,如果你只装了一片FXO卡,这时系统无需作调整,应该已经可以拨打外线电话及手机了。 )6jV4�

例如使用X-Lite登陆系统,注册2201分机后,先拨9再直拨外线号或手机即可成功。 l(<nH.jC

注意: 如果你接在FXO卡上用来测试的线路是电信汇线通,那么就要拨2个9再拨外线号了。第一个9是Trixbox要求的,第二个9是电信汇线通呼叫外线要求的。其他类型的线路原理相同。一般来说使用家用电话线路测试则只需拨第一个9。 [MJ:GMvI

(2)我使用两片FXO卡以解决呼叫转移的测试,此时我们最好定义一下呼出路由使用的Trunk顺序 #pzZd-sa!-

先修正两个ZAP Trunk的设置: C0`S7 )24

在FreePBX中修改系统默认的Trunk Zap/g0的名称为1,即:FreePBX --> Setup --> Trunks
--> Trunk Zap/g0 --> Zap Identifier (trunk name)的值由g0改为1 he{)Z0avo

然后再添加一个Zap Trunk,将Zap Identifier (trunk name)的值设定为2 uM[Y`qV42

最后在Outbound Routes中修改0号路由9_outside的设置:将Trunk
Sequence的值定为ZAP/2,即:我们固定由2号线路/FXO卡做呼叫转移(呼出)的动作,那么我们拨打1号线路/FXO卡时,如果设置了呼叫转
移,Trixbox就能把拨到1号线路的电话由2号线路转移出去了! S%A~ B

至少到现在为止,我还不能将拨到1号线路的电话还是由1号线路转移出去。我个人觉得PSTN信号的单FXO卡是无法完成的! *.N@n;

LEfcZ(e

3. 由外部PSTN线路或手机呼叫Trixbox所连接的两个PSTN电话号码 f,8b+ie=

此时呼叫,系统不会正确处理,不信你用软电话拨打7777或直接用手机拨打Trixbox的两条线路看看。 aK},D&3,

<?'GPwJ2

我们现在来进行最精彩的实验部分: ']Ok#�a]

实验目标:外线呼叫,首先由一级IVR处理,给出语音提示(欢迎致电xxxx,请直拨分机号,或请拨0由总机为您服务。联系小张,请按1;联系小王,请按2;客服座席排队测试,请按3;试听背景音乐,请按4;返回,请按5)
6|?M/$�

按0,来电转移至某个固定电话或手机A; }'BT/0=x

按1,由二级IVR处理,给出语音提示(办公电话请按1;手机请按2;返回请按0) ev_*J+v"

按2,由二级IVR处理,给出语音提示(办公电话请按1;手机请按2;返回请按0) "y~a ^rJ

按3,由自定义的Quere处理 W&
,

按4,播放一段音乐(播放音乐过程中,按0重新播放、按1返回一级IVR) 'Wc@1}[r

按5,回至一级IVR NtuTGmS

2<lA `C,

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

)MrxekDP

具体步骤: hKd'nWY)

先添加System Recordings:强烈建议你直接使用upload with .wav format方式,然后给这些录音在系统中命名,例如Main IVR Menu, Layer2 Menu等 d$A&~'6m:

_�P- 8W>j

然后通过Digital Receptionist添加IVR U^Dw$_i2

注意Enable Direct Dial很重要,允许用户直接拨打分机号 WW'Y@F~e

R$L
Q/)H

再建立一个Queue用于排队测试,例如让这些分机加入排队 e~|'(/

2101 _TG
zO4[

2102 uzW
#_

2201 T tv'r<|Z

2202
)Z KDbWu

2804 `]k`f3>z

提交后系统会自动将格式修正: 4albp~hn!Z

2101,0 3N)>4bQ%L(

2102,0
w7=O

2201,0 B7Hg"~,9c

2202,0 Su%Mee
v!J

2804,0 92~JS"I

XI
|Swk

以上操作,还有多层IVR菜单应用,通过FreePBX操作,应该没有什么难度,我再次就不细述了。如果需要,我另外再补充。 [f@O3u
z

注意别忘了最后设置Inbound Route,将所有来电设置到第一级IVR上,即首层欢迎菜单上。这样才能使外线拨入后首先听到语音提示。 !/En^>o&

lXX1AwiS31

下面看看重点难题:如何将外线呼叫转移到另外的外线(或手机)上? G{aS` wC

有两种方法: E�UR` 2N

1. 建立Queue,然后在Queue中的static agents中输入需要转接的目的外线号,记得前面加9,然后将这个Queue放至IVR中处理。 9!Efq?"r

例如将前台的号码前面加9后定义为QueueQT,然后把QueueQT做为Welcome IVR的按0动作 visuQr7.

2p?W�npL8

2. 建立一个无用户使用的SIP或IAX分机号,然后为该号码设置Follow Me, 在Follow Me中的Extension List中输入9加外线号再加#结束,然后把这个Follow Me项目提供给IVR处理。 &vZ@J6nU[

例如将前台的号码前面加9后面加#后定义为FollowQT,然后把FollowQT做为Welcome IVR的按0动作 :p`(D4(D

{H)U�!Q@I

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

88$oDT7

(完) jBOZvj

�]7C#uC#

[ 本帖最后由 alanpeng 于 2006-11-5 03:11 AM 编辑 ] 9*CA;8!S

-------------------------------------------------------------------------------- @ !vI

作者: dynaguy 时间: 2006-11-5 10:22 `S>:gA9

Z$tbt6|

先赞一个! -#U$r'Z

DZSB6kyf

晚上有时间,再交流一下。 zs[G D9t

-------------------------------------------------------------------------------- Y+ >NG~dE

作者: flow 时间: 2006-11-5 12:25 -
Pgw^1

X&X4p4CQ1

搂主辛苦了,我代表仍在苦苦摸索的弟兄们向你致敬!! 16`
�ug5

-------------------------------------------------------------------------------- P>7G`^}B{

作者: dynaguy 时间: 2006-11-5 12:36 ~3O,+
h

Gb (6q?I

^4=8d(SM

^k''];et

InM:Iv%d)5

QUOTE: vfGh"OS6

如何将外线呼叫转移到另外的外线(或手机)上? %#h9et|T;O

$vAR[/

我是这样做的: TKR]&fh

FreePBX-->Setup-->Extensions-->Custom <|^J$

[X6Wg~v

6CFC;A

QUOTE: UQ^YlN5

Extension Number: 188 iu&u(18/

dial: SIP/DigiVoice/6042222188 VG5^CUb[n

`0_t67@`

Submit-->red bar Save N|24*
9A

/'.ea

上面,DigiVoice是一个SIP Trunk ,6042222188则是手机号,我取其后3位作为分机号。(当然,你已可以干脆建一个6042222188分机!) EXE�[A&e

"OlcH!z<1

如果从内部分机拨打188,TrixBox则接通此手机。 5'O= uc

CL �LRAj(

这样,外线打进来的电话,你就可转到188,于是TrixBox就会拨转到手机。 X n"@47V,

@E.z/pJ/7

因为这时手机号已经几乎等同于分机号,所有对分机的操作几乎也就对手机都适用。试试看,手机也可以放在Queue里。但也还是有一些例外,像打到手机的电话就不能直接转回倒另一个分机(还是有办法实现,但要复杂一点)。 ;r6A,KnV

!k ^ ]T

同理,你也可以用ZAP(PSTN)或IAX来实现,分机设置时要用 ZAP/ZAP Trunk/手机号 或 IAX/IAX Trunk/手机号 #ow#0tko

, )JK/L

[ 本帖最后由 dynaguy 于 2006-11-4 10:01 PM 编辑 ]
gSjmlO"

-------------------------------------------------------------------------------- z :#neN

作者: alanpeng 时间: 2006-11-5 13:23 标题: 回复 #4 dynaguy 的帖子 (@JzQ)NO

C 9Dk%{

谢谢dynaguy提出的第三种方法(自定义分机号),非常好! K1c!|(M&

我用下面这种格式通过了测试: #;n7w< E

Local/9我的手机号码@outbound-allroutes W'q-Xop0

. Yhq?'g5

同时,想问一个别的问题: Xwg1aP$

平时,电信汇线通群内的用户如果使用支持转接键的电话机,是可以将接通的外部来电由R键转给另一个用户(四位内线短号)的,Trixbox接到来电时可否也作类似的动作呢?即: w 1
%H

EJx3G|Ns

如果我的实验环境是在一个汇线通群内部,只利用一片FXO卡在做转接时,可否仅仅送一个短叉簧音(即:<=0.1秒的叉簧中断信号)+分机短号给局
端,模拟转接键R的功能?这样我的Trixbox就可以纯粹作为一个话务台了,接到来电将其转移至别的电话后立即释放通道。 uFX| 7t

/4&!PF '

现在我的Trixbox放在公司汇线通群内,想把它替换原来的前台话务台,可是用户打入电话后,虽然能听到语音提示,也能选按分机号码,但转接成功后该线路通道一直没有释放,此时再有电话打进,则忙音了。除非前面那个电话讲完。 M].Zc8`d

'!TSl.

这是不理想的。因为话务台只需要负责将来电信号成功转接至另外的电话,而不是一只占用通道直至通话结束。 e/K`Yab

8Z:/p>heis

[ 本帖最后由 alanpeng 于 2006-11-5 06:46 PM 编辑 ] PHL;WI(

-------------------------------------------------------------------------------- Yps)X

作者: flow 时间: 2006-11-6 21:50 /z xa}R)

gPN4Pn

请问两位高手,你们的x100p支持来电显示吗?可以显示拨入trixbox的callerid吗? V:}1@ q=K

-------------------------------------------------------------------------------- c3j~b2N

作者: dynaguy 时间: 2006-11-7 02:02 F_#�u.*_

&*J=7W

y^lngNP$

9UzPs4 &n

|5|2`"fe

QUOTE: ;@^cLZ

原帖由 flow 于 2006-11-6 05:50 AM 发表 yo
4Hf/+l

请问两位高手,你们的x100p支持来电显示吗?可以显示拨入trixbox的callerid吗? ?w
@k`},>

|,&L9kzR

可以 v LaAzZ*

-------------------------------------------------------------------------------- sUUJ2131

作者: flow 时间: 2006-11-7 10:46 
}
_

5xG}9xh

dynaguy兄,我给你发了一封短消息,麻烦看一下。 =Jfo`)E

-------------------------------------------------------------------------------- HGt@.[6�

作者: flow 时间: 2006-11-7 10:49 h)ywoof

@LH^q%WT)%

dynaguy兄,我的邮箱是magicsci@gmail.com
,能告诉我你的msn吗?可以发到我的邮箱里。 ij/_.L@

-------------------------------------------------------------------------------- &)=WsN

作者: o123321o 时间: 2006-11-7 17:22 SGGwh

/y(b"

我折腾了半天,一直显示unknown,貌似是PSTN没有来电显示,nnd YYY|{&r}

-------------------------------------------------------------------------------- q Gg~::/Yc

作者: alanpeng 时间: 2006-11-10 18:19 @Jju
,-

bGj3?oP}j

关于转接后释放通道资源的问题 Z0gN!ED

2`IAoV|7$f

终于知道我的问题有解了: Ot_-k794Mi

http://www.voip-info.org/wiki/index.php?page=Asterisk+cmd+Flash
.-�pi`=
_H

I%.BBIFM0

不过具体设置还得花点时间看看能否成功。如果调试完,Trixbox就完全成为一个自动话务总机了,呵呵。 FU3)Q/WG

L=MBrvV%.

建议大家花点时间学习一下Dialplan,这样才能做出复杂应用。 *d1{k

SA)
Y"_0_

我的环境正好要Trixbox发送flash很短的闪断信号作为转接功能,这样的转接与我在最初试验中的使用第二个通道呼出是完全不同的,它转接后立即释放通道资源。
SWUn'
v

附件:


Asterisk.pdf

(2322 K)

附件:


trixbox_without_tears.pdf

(2910 K)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: