Trixbox下使用x100p卡做FXO通道外呼的实现

原创 2008年08月23日 01:04:00
项目背景:
    最近朋友介绍一个小项目,其中涉及到网络电话,要实现pc2phone的拨号通话,自然用到了VOIP相关的技术。今天先把文章的整体信息写出来,后面再完善,对于Asterisk我了解还很少,不准确之处大家多多提点。
概要介绍:
    在这之前没接触过这方面的东西,google一番之后认识了Asterisk,以及在其基础上集成封装的Trixbox。通过了解,Trixbox自动安装了Asterisk以及其所需的软件包、硬件驱动等,同时集成了FreePBX,包括web管理界面,另外还有CDR记录在mysql中。
    要实现pc2phone有多种方式,一种是用SIP接入语音网关,一种是用IAX接入提供商的Asterisk,一种是申请电信运营商的IP电话通道(如公用电话、IC电话等,这些有特别的计费反极信号,在后面会提到),还有一种就是用自家的电话线(这种就不能按IP资费计费了,走的是家用电话资费)。因为一期主要是做功能演示,为了坚决的贯彻节约成本的原则,买了一块Wildcard X100P 卡(在淘宝上花了98大洋),插上电话线就开工了。
实现过程:
    第一步,安装Trixbox 。网上有Trixbox的ISO下载,刻成光盘,从光驱启动即可。在这个地方我遇到郁闷了我两天的问题。我当时贪心,下载的是最新版本trixbox- 2.6.0.18-i386.iso。安装过程没有问题,但启动过程中出现找不到引导区的问题。后来一步一步降版本,终于找到trixbox- 2.4.2.0.iso 才完成安装。同时要注意的是,这是基于CentOS 5 Linux Kernel 2.6.18-53.1.4.e15内核的安装版本,安装过程中会自动全部格式化掉硬盘。切记切记。
    第二步,配置。Trixbox在安装过程中就对Asterisk进行了默认的配置,新增两个SIP类型的extension就可实现pc2pc的通话了,终端使用的是xlite。(具体的配置过程后面补上来,网上也有很多的)
    第三步,开发自己的软终端电话。对于Asterisk来说,SIP、IAX以及ZAP IP电话等都可以与之通信。我使用的是IAX,原因有两个,一是在网上找到了开源的库,二是IAX对于NAT的穿透比SIP容易,因为其信令和数据都用的同一端口4569。当然,Trixbox已经实现了NAT的穿透,总之各有优缺点。
    第四步,FXO外呼的实现。由于刚接触星号,很多底层以及细节的东西都不是很了解,所以在这个地方遇到很多问题。按照我解决的过程来描述。Trixbox自带安装了zap的驱动,所以在PCI插上x100p之后,即可检测到该卡了。
    在CLI控制台输入 zap show status可看到:
    trixbox1*CLI> zap show status
    Description                              Alarms     IRQ        bpviol     CRC4     
    Wildcard X100P Board 1                   OK         0          0          0        

    说明检测到了X100P,同时电话线也是正常连接的。Trixbox默认了9开头的外呼规则(outbound routes),名为 9_outside,可在web管理UI上看到,trunk sequence默认的是走的ZAP。于是一时振奋不已,连忙9加上自己的手机号,多次测试,却都不能接通。现象就是在xlite上看到接通了,但是手机并没有响。。。论坛帖子如下:
    http://www.trixbox.com.cn/viewthread.php?tid=2372&extra=page%3D1
    在群里也问了很多朋友,都没能解决。网上说的都是默认的就可以打出去了,怎么我偏偏遇着就打不出去呢,让我还一阵心酸啊。最后在一个日文网站上发现这几句(无意中搜到的,虽然对日本有成见,但这次着实很感激):
    原文地址是:http://ttanimu.spaces.live.com/?_c11_BlogPart_BlogPart=blogview&_c=BlogPart&partqs=amonth%3D7%26ayear%3D2007

X100Pというアナログモデムカードを利用するとAsteriskPSTNと接続できます。

これのセットアップを行います。

genzaptelconf

を実行します。これで

ztcfg -vv

の実行結果が

1 channels configured.

なら成功です。

<?xml:namespace prefix = o />

 

X100Pからプッシュ契約していないアナログ回線で外線発信する場合は

"/etc/asterisk/zapata-auto.conf"

channel => 1

の行の直前に

pulsedial=true

を入れておけば発信できるようになります。

 

    红色的部分非常重要!!!是添加在/etc/asterisk/zapata-auto.conf文件中的,全部的文件内容如下:

; Autogenerated by /usr/sbin/genzaptelconf -- do not hand edit
; Zaptel Channels Configurations (zapata.conf)
;
; This is not intended to be a complete zapata.conf. Rather, it is intended
; to be #include-d by /etc/zapata.conf that will include the global settings
;

; Span 1: WCFXO/0 "Wildcard X100P Board 1"
;;; line="1 WCFXO/0/0"
signalling=fxs_ks
callerid=asreceived
group=1
;context=from-pstn
pulsedial=true
context=default
channel => 1

       不认识日文,但估计应该就是那个所谓的判断反极信号的配置了,否则无法在x100p上实现外呼。另外,绿色部分是默认的context,跟zap show chennels里面的pseudocontext不一致,换成红色的才能呼出去,这个我还没有明白为什么。于是外呼问题解决。然后同时另一个问题又出来了,手机是ring了,但是接听没有声音。网上搜索出来无声音的情况,都是SIP在NAT后的问题,也就是 RTP穿越NAT的问题。而我的问题是终端与服务器在同一内网,Asterisk通过电话线外呼,所以与NAT并没有关系。问题集中在zap相关的配置上了。

    /etc/zaptel.conf是自动更新的,主要是配置硬件信息,我只有一个FXO口,所以其中包含以下内容:

# Autogenerated by /usr/sbin/genzaptelconf -- do not hand edit
# Zaptel Configuration File
#
# This file is parsed by the Zaptel Configurator, ztcfg
#

# It must be in the module loading order


# Span 1: WCFXO/0 "Wildcard X100P Board 1"
fxsks=1

# Global data

loadzone        = cn
defaultzone     = cn


    其中的 两个 = cn 是我手动改的,默认是us 。

    /etc/asterisk/zapata.conf 是配置硬件口和通道映射,以及相关通道属性的。

;
; Zapata telephony interface
;
; Configuration file

[trunkgroups]

[channels]

language=cn
context=from-zaptel
signalling=fxs_ks

rxwink=300              ; Atlas seems to use long (250ms) winks
;
; Whether or not to do distinctive ring detection on FXO lines
;
;usedistinctiveringdetection=yes

usecallerid=yes
hidecallerid=no
callwaiting=yes
usecallingpres=yes
callwaitingcallerid=yes
threewaycalling=yes
transfer=yes
cancallforward=yes
callreturn=yes
callprogress=yes
echocancel=yes
echocancelwhenbridged=no
;echotraining=800
hanguponpolarityswitch=yes
rxgain=0.0
txgain=0.0
group=1
callgroup=1
pickupgroup=1
immediate=no
busydetect=yes
busycount=5
toneduration=100


;faxdetect=both
faxdetect=incoming
;faxdetect=outgoing
;faxdetect=no

;Include genzaptelconf configs
#include zapata-auto.conf

;channel => 1

group=1

;Include AMP configs
#include zapata_additional.conf


    这个问题也是查了很多,都没能解决,结果在不是该问题的帖子里面找到了解决方法。以上红色的是参考http://www.voipuser.org/forum_topic_10148.html进行添加的,默认的是没有的


     再进入到CLI控制台,

trixbox1*CLI> zap restart
 Destroying channels and reloading zaptel configuration.
  == Parsing '/etc/asterisk/zapata.conf': Found
  == Parsing '/etc/asterisk/zapata-auto.conf': Found
  == Parsing '/etc/asterisk/zapata_additional.conf': Found
    -- Registered channel 1, FXS Kewlstart signalling
    -- Automatically generated pseudo channel

     至此,外呼通话实现。初次呼出的接通时间比较长,在10秒以上。。。。这个还待解决。今天先写到这里,后面再来完善。


Write Your Own Operating System Tutorial(2)

Lesson 2: Making Our First Bootable DiskIn this lesson, we will learn how to create a boot program o...
  • tangl_99
  • tangl_99
  • 2003-01-20 09:50:00
  • 1667

Trixbox与迅时FXO口语音网关对接配置手册

  • 2010年11月18日 09:06
  • 94KB
  • 下载

Cisco路由器FXO咬线解决方法

  • 2010年03月18日 12:50
  • 586KB
  • 下载

FXO口应用场景

由于没有实战经验,纯属理论分析,不能保证100%完全正确。   一、断电逃生 1、  未上电时,SLIC、SLAC和DSP都不能工作,此时通过继电器直接将FXO口与FXS口相连, 相当...
  • liujianfeng1984
  • liujianfeng1984
  • 2013-09-25 00:41:39
  • 2912

快速安装Trixbox(AAH)

此篇文章转载自http://www.trixbox.com.cn。1.安装ISO警告:安装ISO将格式化和清除请硬盘上的所有数据!下载trixbox ISO文件,刻录光盘,建议采用ImgBurn刻录,...
  • zweitian
  • zweitian
  • 2007-08-12 10:39:00
  • 1123

trixbox 及elastix 默认的密码

trixbox 及elastix 默认的密码
  • jianghao616
  • jianghao616
  • 2010-10-08 09:31:00
  • 857

PBX、FXO、FXS等通信相关知识

1。PBX:俗称程控交换机、集团电话。 2。FXS:Foreign Exchange Station,外部交换站(接内线)。简单理解,FXS 是 PBX 上用来连接电话机用的接口。该接口提供连接电话机...
  • u011824009
  • u011824009
  • 2014-02-21 17:16:57
  • 754

Trixbox中插入PSTN模拟卡 X100P(未完,待续)

==============================================查看硬件配置# dahdi_hardware================================...
  • berryreload
  • berryreload
  • 2012-08-15 22:16:49
  • 2086

FXS/FXO, BRI/PRI, IPPBX, IAD

FXO - Foreign Exchange Office 外部交换局。简单的理解它是 PBX 交换机上用来同公共电话网相连的接口。也就是是中央交换局交换机和数字电话交换系统之间的一个中继端连接。相对...
  • blade2001
  • blade2001
  • 2014-06-27 06:02:11
  • 1298

FXS和FXO接口的区别

FXS和FXO接口的区别        在VOIP网络中,语音网关(VoIP Gateway)是PSTN电话向VOIP电话过渡的产物,因此语音网关在VOIP网络环境中扮演一个重要的角色。那么提到语音网...
  • jaxkxu
  • jaxkxu
  • 2010-08-16 14:48:00
  • 12663
收藏助手
不良信息举报
您举报文章:Trixbox下使用x100p卡做FXO通道外呼的实现
举报原因:
原因补充:

(最多只允许输入30个字)