当前位置:文档之家› Asterisk权威指南(第3版)中文第07章外线连接

Asterisk权威指南(第3版)中文第07章外线连接

Asterisk权威指南(第3版)中文第07章外线连接
Asterisk权威指南(第3版)中文第07章外线连接

第七章 外线连接

目录

7.1 干线(Trunking)基础 (2)

7.2 用于外线连接的基本Dialplan (3)

7.3 PSTN线路 (4)

7.3.1 传统PSTN干线 (4)

7.3.2 安装PSTN干线(PSTN Trunks) (6)

7.4 VoIP (13)

7.4.1 PSTN终结(termination) (13)

7.4.2 PSTN再生 (14)

7.4.3 VoIP to VoIP (15)

7.4.4 配置VoIP干线(VoIP Trunks) (16)

7.5 结论 (22)

在之前的章节里,我们已经介绍了很多重要知识,这些知识是对于使Asterisk系统能正产工作是必不可少的。然而,我们还没有完成一件对于任何PBX都必不可少的事情:即,将Asterisk与外部世界连接起来。在本章中,我们即来讨论这件工作。

之所以说Asterisk的软件架构具有重要意义,很大程度上是由于这样一个事实,Asterisk 平等的对待每一个channel。这一点完全不同于传统PBX,在传统PBX中,外线(用于连接外部世界)和分机(用于连接内部用户和资源)是完全不同的。事实上,Asterisk dialplan用相似的方法处理所有channel,这意味着你可以在Asterisk系统中非常容易的实现一些在传统PBX非常难以实现(或不可能实现)的工作。

然而,这种灵活性也是有代价的。由于系统并不会固有的知道内部资源(例如一部内线分机)和外部资源(例如,一个电信线路)的不同,Asterisk系统需要你来保证你的dialplan 恰当的处理了每种类型的资源。

7.1干线(Trunking)基础

干线(Trunking)的目的是在两个实体间提供一个共享连接。举例来说,公路干线是把两个镇子连接起来的高速公路。铁路上广泛的使用术语“干线(trunk)”,来指代那些将支线铁路连接到一起的主要线路。

同样地,在电信领域,干线用于将两个系统连接起来。电信运营商利用通讯干线把他们的网络连接到一起,而对PBX来说,将PBX与外部世界连接起来的线路一般就被称作干线(尽管电信运营商一般不会认为这些是干线)。从技术的观点看,PBX干线的定义并不像其它例子那么清晰(PBX干线使用了与终端线路完全不同的技术),但作为一个概念,干线仍然是非常重要的。举例来说,在VoIP系统中,一切通讯实际上是点对点的(所以从技术的观点看,并不真实的存在干线),但是这个概念仍然是有用的,它可以帮助我们区分连接到外部世界的VoIP资源和连接到用户分机(例如一部SIP电话机)的VoIP资源。

大概最容易的理解方式是把干线理解为一组提供外线路由的线路集合。所以,在Asterisk PBX中,你可能有VoIP服务商提供长途呼叫的干线,有连接PSTN线路的干线,以及将你的不同地点的办公室连接在一起的干线。这些干线可能实际上是通过同一个网络连接,但在你的dialplan中,你可以用完全不同的方法处理它们。

尽管我们相信VoIP最终将完全取代PSTN,许多VoIP线路使用的概念(例如电话号码)继续存在更多是由于历史原因而不是技术需求,但是我们认为,在我们完全进入VoIP时代前,讨论一下在Asterisk中如何使用传统PSTN线路还是非常有用的。

如果你的Asterisk系统计划只使用VoIP线路,那也没问题,请直接阅读本章的VoIP部分,我们会告诉你应当怎么做。不过我们强烈建议阅读PSTN部分,因为其中包含了很多有用的基础知识,虽然这些并不是理解和使用Asterisk所必须的。

7.2用于外线连接的基本Dialplan

在传统PBX中,访问外线一般都需要通过拨打一个号码前缀来实现注1。我们一般用数字9作为这个前缀。

在Asterisk中,同样可以指定9作为外线路由前缀,但是由于Asterisk dialplan要智能的多,完全没有必要强制用户在呼叫外线前加拨9。典型地,你会为你的系统配置一个分机范围(如100-199),以及一个feature code范围(*00到*99)。任何这个范围之外的,匹配了你设定的国家码和区域码的呼叫,都会被视为外线呼叫。

如果你通过一个电信运营商提供全部的外线资源,你可以通过几条简单的样式匹配处理外线呼叫。本节提供的例子是针对NANP(North American Numbering Plan)的。如果你的国家不在NANP中(NANP服务于加拿大,美国,以及几个加勒比海国家),你可能会需要不同的样式匹配。

在 [globals] 部分中包含两个变量,叫做 LOCAL 和 TOLL 注2。这些变量的目的是当你需要更换电信运营商时简化你的dialplan管理。它们允许你只修改dialplan的一个地方,但会对所有引用这个channel的地方生效:

[globals]

LOCAL=DAHDI/Go ; assuming you have a PSTN card in your system

TOLL=SIP/YourVoipCarrier ; as defined in sip.conf

在 [external] 部分中包含实际的dialplan代码,这些代码将识别呼叫的号码并将它们传递给 Dial() application注3:

[external]

exten => _NXXNXXXXXX,1,Dial(${LOCAL}/${EXTEN}) ; NANP的10位号码样式匹配

exten => _NXXXXXX,1,Dial(${LOCAL}/${EXTEN}) ; NANP的7位号码样式匹配

exten => _1NXXNXXXXXX,1, Dial(${LOCAL}/${EXTEN}) ; NANP的长途号码样式匹配

exten => _011.,1, Dial(${TOLL}/${EXTEN}) ; NANP的国际电话号码样式匹配

; 这部分的功能与上面相同。

; 这是为了喜欢拨外线前先拨“9”的用户设计的

exten => _9NXXNXXXXXX,1, Dial(${LOCAL}/${EXTEN:1})

exten => _9NXXXXXX,1, Dial(${LOCAL}/${EXTEN:1})

exten => _91NXXNXXXXXX,1, Dial(${LOCAL}/${EXTEN:1})

exten => _9011.,1, Dial(${LOCAL}/${EXTEN:1})

在任意分机或设备使用的context中,你可以用一个 include=> 指令来允许访问 external context:

[LocalSets]

include => external

非常重要的一点是,不要在可能处理来电的任何context中包含访问外线 的代码。风险在于仿冒机器人程序将最终获得访问你外线的方法(你将被 这种仿冒机器人程序的常见所吓到)。

我们怎么强调都不过分的是,你一定要保证没有外部资源可以访问你的付 费电话线路。

7.3PSTN线路

公共交换电话网络(PSTN – Public Switched Telephone Network)已经存在超过一个世纪了。它是许多对我们今天有重大影响的技术的先驱,从Internet到MP3播放器。

7.3.1传统PSTN干线

固定电话运营商采用两种技术交付电话线路:模拟的和数字的。

7.3.1.1模拟电话

最初的电话系统完全是模拟的。你通过声音发出的音频信号,被用于产生一种运载到通话的另一端的电讯号。这种电讯号具有与原始声音一样的特性。

模拟线路具有一些与其它你可能想连接到Asterisk的线路所不同的特性:

●没有信令通道 —— 大部分信令是机电信号

●断线监测通常会延迟数秒,而其并不是完全可靠的

●极少的远端监测(例如,应答监测就不充分)

●线路差异性,这意味着不同线路的音频特性是不同的,并且需要调试

你希望连接到你的Asterisk系统的模拟线路需要连接到Foreign eXchange Office (FXO)端口。由于标准计算机并没有这种FXO端口,所以你必须购买FXO板卡并安装到你的系统上以实现连接传统模拟电话线注4。

FXO 和 FXS

对任何模拟线路来说,存在两个端点:局端(office端,典型指PSTN的中心局),和终端(station端,典型指电话,也包括板卡,如Modem板卡或PBX系统的线路板卡)。

中心局(the central office)负责提供:

●提供馈电(通常是48V直流)

●提供振铃电压(通常是90V交流)

●产生拨号音

●检测摘机状态(摘机或挂机)

●发送补充信令,如主叫号码(Caller ID)

终端(the station)负责:

●提供振铃器(或者至少能够以某种方法处理铃流电压)

●提供拨号盘(或者其它发送DTMF的方法)

●提供一个叉簧开关(hook switch)以指示线路的状态

一个Foreign eXchange (FX) 端口通过它与什么连接而命名,而不是它做什么。所以,举例来说,一个 Foreign eXchange Office (FXO) 端口实际上是终端:它连接到中心局。一个 Foreign eXchange Station (FXS) 端口实际上是提供中心局服务的端口(换句话说,你可以把一个模拟终端插入到FXS端口上)。

正是由于这个原因,在Asterisk配置文件里的信令设置好像是反的:FXO端口使用FXS信令;FXS端口使用FXO信令。当你理解了物理端口类型的命名是基于它与什么连接时,在Asterisk 中的信令名就更加容易理解了:由于FXO端口连接到中心局,所以它需要表现的像个终端,因此需要FXS信令。

注意,将FXO端口换成FXS端口,并不是你简单的做一些配置就可以实现的。FXS端口和FXO端口需要完全不同的电路。大部分支持Asterisk的模拟板卡都支持通过安装在主板卡上的子卡来提供正确的channel类型,这就意味着你在定义你板卡的端口类型时具备了一些灵活性。

模拟端口通常不用于中型和大型系统。它们通常用于小型办公室(小于10根外线;少于30部电话)。你决定使用模拟线路可能是基于如下因素:

●你所在区域的数字线路有限

●费用(模拟线路在低密度时较便宜,但在高密度时较贵)

●后勤因素(如果你已经安装的模拟线路,你可能希望保留它们)

从技术的观点看,你一般应当更倾向于选择数字线路而不是模拟线路。但是,现实并不总是顺应技术的发展,所以模拟线路还会继续存在一些年。

7.3.1.2数字电话

数字电话技术被开发出来是为了克服模拟电话的一些限制。数字线路的一些优点包括:

●经过长距离后没有幅度衰减

●减少了线路噪音(尤其是长途线路)

●在一根线路上承载多个通话的能力

●更快的呼叫建立和拆除速度

●更丰富的信令信息(尤其是使用ISDN时)

●对电信运营商而言费用更低

●对用户而言费用更低(在高密度情况下)

在Asterisk系统中(或任何PBX系统),有如下几种数字线路你可能会用到:

T1(24 channels)

在加拿大和美国使用(大多数用于ISDN‐PRI)

E1(32 channels)

在世界上其它地区使用(ISDN‐PRI 或 MFC/R2)

BRI(2 channels)

用于ISDN‐BRI线路(Euro‐ISDN)

注意,物理线路可以进一步通过运行在其上的协议来定义。举例来说,T1线路可以被用于ISDN‐PRI,或者CAS;而E1线路可以被用于ISDN‐PRI,CAS,或者MFC/R2。我们将在下一节讨论这些不同的协议。

7.3.2安装PSTN干线(PSTN Trunks)

基于你已经安装的硬件的不同,安装PSTN板卡的过程也会不同。我们将按照一般情况讨论安装,这将适合于所有的Digium PSTN板卡。其它制造商也会提供基于他们硬件的安装脚本,这将自动处理你的大部分工作。

7.3.2.1下载和安装DAHDI

DAHDI接口是Digium Asterisk Hardware Device Interface的缩写,DAHDI定义了PSTN板卡和Asterisk之间通信的软件框架。即使你没有任何PSTN硬件,我也推荐你安装DAHDI,因为这是获得一个有效时钟源的简单、可靠的方法注5。完整的DAHDI安装指导可以在第3章找到。

禁止加载额外的DAHDI Modules

DAHDI默认会加载所有编译好的modules到内存。由于这不是必须的,让我们从现在开始禁止加载任何硬件modules。如果在配置文件中没有任何module被加载,DAHDI就会加载dahdi_dummy 驱动,这个驱动为Asterisk提供了一个从内核获得时钟的接口,从而使诸如MeetMe和IAX2这样时钟依赖的modules可以正常工作。

从DAHDI2.3.0起,通过加载 dahdi_dummy 获得时钟的要求不再存在。 相关的功能现在集成到dahdi kernel module中去了。

定义DAHDI会加载哪些modules的配置文件位于/etc/dahdi/modules。为了禁止加载额外的modules,我们需要做的事就是编辑modules文件并通过在每一行前面加#号注释掉所有的modules。当你完成了这一点,你的modules配置文件应当看起来如下:

你也可以利用 dahdi_genconf modules 来生成适当的空配置文件。

dahdi_genconf application 会搜索你的系统硬件,如果什么都没有找到, 会创建一个不会加载任何硬件modules的modules文件。

然后你可以通过重启你的DAHDI来卸载任何已经加载的现有驱动,并且只在初始化脚本中加载dahdi_dummy modules:

在你可以使用你的硬件之前,你还需要配置 /etc/dahdi/system.conf 文件;这一过程在本章下两节描述。

7.3.2.2配置数字线路

电信运营商开发数字电话技术是为了减少长途线路费用,同时提升传输质量。整个PSTN 骨干网已经完全实现数字化多年了。数字线路的关键是实现声音信号的数字化。不过数字干线也会允许更复杂和更可靠的信令。几个标准被不断开发出来,对每个标准而言,只是有部分的区别。

你可以使用 dahai_hardware 和 lsdahdi 帮助你确定你的系统包含那些电 话技术硬件。你也可以使用 dahdi‐genconf modules 来产生一个

/etc/asterisk/modules 文件,该文件是基于找到的硬件产生的。

7.3.2.2.1PRI ISDN

Primary Rate Interface ISDN(一般称为PRI)是一个设计为主要运行于DS1(T1或E1)线路上的,用于运营商与客户之间的协议。PRI使用一个DS0信道作为信令通道(称为D信道)。一个典型的PRI信道是划分为一组B信道(实际承载呼叫的承载信道),和一个用于信令的D信道。尽管最常见的作法是PRI线路承载在单一的物理线路上(例如T1和E1),但是把PRI线路分散在多个DS1线路上也是可行的,甚至于有多个D信道注6。

尽管有许多不同的配置PRI的方法,我们希望避免这些选择把你弄糊涂(许多方法已经过时了或至少不再通用),并且提供了一些通用配置方法的例子。

当安装电话板卡硬件时,请确保升级了 /etc/dahdi/modules 文件以使能 与你的硬件适应的modules,然后通过初始化脚本(/etc/init.d/dahdi)重 载 DAHDI。你也可以使用dahdi_genconf modules 命令生成 modules 文件。

大部分用于北美的PRI线路都使用具有下列特性的T1线路:

●Line code: B8ZS ( bipolar with 9‐zero substitution )

●Framing: ESF ( extended superframe )

你还需要配置两个文件。其中 /etc/dahdi/system.conf 应按如下配置:

loadzone = us

defaultzone = us

span = 1,1,0,esf,n8zs

bchan = 1‐23

enchocanceller = mg2,1‐23

hardhdlc =24

另一个 /etc/asterisk/chan_dahdi.conf 应按如下配置:

[trunkgroups]

[channels]

usecallerid = yes

hidecallerid = no

callwaiting = yes

callwaitingcallerid = yes

threeewaycalling = yes

transfer = yes

canpark = yes

cancallforward = yes

callreturn = yes

echocancel = yes

echocancelwhenbridge = yes

relaxdemf = yes

rxgain = 0.0

txgain = 0.0

group = 1

callgroup = 1

pickgroup = 1

pickupgroup = 1

immediate = no

switchtype = national ; commonly referenced to as NI2

context = from‐pstn

group = 0

echocancel = yes

signaling = pri_cpe

channel => 1‐23

某些运营商采用Nortel的DMS交换机,这种交换机一般采用DMS100协议而不是标准的ISDN 协议。在这种情况下,你需要把 switchtype 设置为 DMS100:

switchtype = dms100

在美国和加拿大之外,PRI线路主要承载在E1线路上。

在欧洲,用于PRI的E1线路一般具有如下特性:

●Line code: CCS

●Framing: HDB3 (high‐density bipolar)

并且 /etc/asterisk/chan_dahdi.conf 应当看起来如下:

[trunkgroups]

[channels]

usecallerid = yes

hidecallerid = no

callwaiting = yes

usecallingpres = yes

callwaitingcallerid = yes

threewaycalling = yes

transfer = yes

canpark = yes

cancallforward = yes

callreturn = yes

echocancel = yes

echocancelwhenbridged = yes

relaxdtmf = yes

rxgain = 0.0

txgain = 0.0

group = 1

callgroup = 1

pickupgroup = 1

immediate = no

switchtype = qsig

context = pri_incoming

group = 0

signalling = pri_cpe

channel => 1-15,17-31

7.3.2.2.2BRI ISDN

Basic Rate Interface ISDN(通常称作BRI,或者直接称作ISDN)可以看作PRI的一个小兄弟。BRI只提供2个64Kbps的B通道和一个16Kbps的D通道。BRI在北美地区很少使用(我们不推荐使用BRI,不管出于什么原因),但是在一些欧洲国家BRI广泛应用,甚至已经基本取代了模拟线路。

在Asterisk下的BRI支持主要取决于你安装了何种BRI板卡。BRI板卡的厂商会提供专门的安装指导。

当安装电话板卡硬件时,请确保升级了 /etc/dahdi/modules 文件以使能 与你的硬件适应的modules,然后通过初始化脚本(/etc/init.d/dahdi)重 载 DAHDI。你也可以使用dahdi_genconf modules 命令生成 modules 文件。

7.3.2.2.3MFC/R2

MFC/R2协议可以被认为是ISDN协议的先驱。它首先用在模拟线路上,但是现在也大量应用在E1线路上,E1线路也用于承载ISDN‐BRI。MFC/R2协议在加拿大、美国和西欧

并不常见,但是它在某些地区非常流行(特别是拉丁美洲和亚洲),主要是因为它适合于运营商提供较为廉价的服务。

这个协议有许多不同的风格,在每个国家都由不同的变体。

OpenR2 项目提供了 libopenr2 库,为了你的Asterisk系统能支持R2线路,你需要安装这个库。在安装 libopenr2 之前,你需要完成 DAHDI 的安装。

编译和安装的顺序是:

1.DAHDI

2.Libopenr2

3.Asterisk

一旦安装了 OpenR2 ,你就可以使用 r2test application 来查看一下支持的变体列表: $ r2test -l

Variant Code Country

AR Argentina

BR Brazil

CN China

CZ Czech Republic

CO Colombia

EC Ecuador

ITU International Telecommunication Union

MX Mexico

PH Philippines

VE Venezuela

关于更多在Asterisk中配置R2的信息,请参阅Asterisk源码目录下(搜索 “mfcr2”)的 configs/chan_dahdi.conf.sample 。

此外,OpenR2包含一些在不同国家实现Asterisk与网络连接的配置例子文件。如果需要阅读关于不同国家变体的信息,搜索 /doc/asterisk 目录并查看相应目录下的文档: $ ls doc/asterisk/

ar br ec mx ve

作为一个例子,OpenR2 提供了一个用于在墨西哥连接 Telmex 或 Axtel 的例子配置文件。我们逐步展示这个例子。首先,你必须通过修改 /etc/dahdi/system.conf 来配置DAHDI,如下所示:

loadzone = us

defaultzone = us

span = 1,1,0,cas,hdb3

cas = 1-15:1101

cas = 17-31:1101

span = 2,1,0,cas,hdb3

cas = 32-46:1101

cas = 48-62:1101

下一步,你必须通过修改 /etc/astereisk/chan_dahdi.conf 来配置Asterisk,如下所示:

signalling = mfcr2

mfcr2_variant = mx

mfcr2_get_ani_first = no

mfcr2_max_ani = 10

mfcr2_max_dnis = 4

mfcr2_category = national_subscriber

mfcr2_mfback_timeout = -1

mfcr2_metering_pulse_timeout = -1

; this is for debugging purposes

mfcr2_logdir = log

mfcr2_logging = all

; end debugging configuration

channel => 1-15

channel => 17-31

7.3.2.3配置模拟线路

有许多公司生产用于Asterisk的PSTN板卡。这些板卡需要安装驱动程序,这样Linux 才可以识别它们(DAHDI包含了Digium的板卡驱动)。从这一点看,配置是被Asterisk module chan_dahdi处理的。

你可以使用 dahdi_hardware 和 lsdahdi 来确定你的系统包含哪些电话 板卡硬件。

当安装电话板卡硬件时,请确保升级了 /etc/dahdi/modules 文件以使能 与你的硬件适应的modules,然后通过初始化脚本(/etc/init.d/dahdi)重 载 DAHDI。你也可以使用dahdi_genconf modules 命令生成 modules 文件。

为了配置一张FXO板卡能够在Asterisk上工作,需要两个文件。

第一个文件并不是Asterisk配置文件,而是位于 /etc/dahdi 目录下的文件注7。这个文件,system.conf,允许你定义一些基本参数,同时指定在系统中有效的channels。我们的例子假设是一张有4个FXO端口的板卡,但是其它不同的组合也是可以的,这取决于你的硬件。 loadzone = us ; tonezone defines sounds the interface must produce

; (dialtone, busy signal, ringback, etc.)

defaultzone = us ; define a default tonezone

fxsks = 1-4 ; which channels on the card will have these parameters

一旦你的板卡和Channels被系统识别,你还必须通过文件 /etc/asterisk/chan_dahdi.conf 在Asterisk中配置它们:

[channels]

;

; To apply other options to these channels, put them before "channel".

;

signalling = fxs_ks ; in Asterisk, FXO channels use FXS signaling

; (and yes, FXS channels use FXO signaling)

channel => 1-4 ; apply all the previously defined settings to this channel

在这个例子中,我们告诉Asterisk,系统中的头4个DAHDI channels是FXO端口。

7.3.2.3.1The s extension

如果你使用模拟channels连接PSTN,那么我们需要解释下 extension s 。当一个来电进入一个context,但是没有指定目的 extension 时(例如,通过PSTN网络振铃一个FXO端口),它会被传递给 s extension。(这里s的意思是“start”,这个extension是当没有携带extension 信息的来电的起始入口)。这个extension在dialplan中实现从一个部分到另一个部分的跳转时也十分有用。举例来说,如果我们对一系列DID号码的处理都是跳转到同一个地方,我们就可以将它们都跳转到s extension处理,而不是为每一个DID拷贝同样的dialplan代码。 因为这实在是我们的dialplan中需要的,让我们把它添加进去。我们将对来电执行三个动作(应答,播放一个声音文件,然后挂机),所以我们的 s extension 将需要3个priorities。我们把这3个priorities放在[incoming]下面,因为我们决定所有的来电都从这个context开始注8:

[incoming]

exten => s,1,Answer()

same => n,Playback(tt-weasels)

same => n,Hangup()

显然的,你一般不会想应答一个电话然后挂掉。典型的,一个来电要么被一个自动应答机应答,要么直接振铃一部电话(或一组电话)。

7.4 VoIP

在电信世界里,VoIP还是相对比较新的概念。在上个世纪或VoIP出现之前,把你和PSTN 网络联系起来的唯一办法是利用本地电话公司提供的专用线路。现在,VoIP允许你把两个用户联系起来而根本不引入PSTN(尽管在大部分VoIP场景,仍旧存在PSTN元素,特别是在使用传统E.164号码的场合)。

7.4.1PSTN终结(termination)

在VoIP完全取代PSTN之前,我们都会需要将呼叫从VoIP网络连接到PSTN网络。这个过程称为终结(termination)。这意思是说,在VoIP网络上的某些点,连接PSTN的网关需要从VoIP网络接收呼叫并把它们连接到PSTN网络上。从PSTN网络的角度看,这些呼叫看起来就是从“终结点”发起的。

Asterisk可以被用作终结设备。事实上,由于Asterisk非常方便处理协议转换,用作终结设备是Asterisk系统一种非常适合的应用。

为了提供PSTN终结,Asterisk设备需要能够处理所有连接的PSTN网络的协议。一般来说,这意味着你的Asterisk设备需要PRI线路来处理PSTN连接,以及SIP channels来处理来自VoIP网络的呼叫。基本原理是相同的,无论你是运行一个为完全部署VoIP电话的办公室提供PSTN trunks的小型系统,还是运行一个在关键地点部署网关设备并为数千个用户提供PSTN终结服务的复杂网络。

来自VoIP网络的呼叫会进入Dialplan中为SIP来电指定的context,并且dialplan会将呼叫中继到PSTN接口。这非常简单,支持PSTN终结的部分dialplan代码如下: [from-voip-network]

exten => _X.,1,Verbose(2, Call from VoIP network to ${EXTEN})

same => n,Dial(DAHDI/g0/${EXTEN})

在现实中,你一般需要处理更复杂的路由计划,需要考虑诸如地理位置、合作政策、费用、可用的资源等等。

由于大部分PSTN线路都允许你拨叫世界上的任意位置的任意号码,而且 你都需要为已发生的费用买单,所以加强PSTN终结网关的安全性是怎么 强调其重要性都不过分的事情。犯罪分子花费了很多努力去破解电话系统 (特别是没有很好设置安全性的Asterisk系统),如果你没有很小心的关 注安全性的各个方面,那么你很容易成为话费欺诈的牺牲品。这只是时间 早晚问题而已。

千万不要允许任何不安全的VoIP连接访问包含PSTN终结的context。 7.4.2PSTN再生

显然的,如果你希望将呼叫从VoIP网络转到PSTN网络,那么你可以也希望可以从PSTN 接受呼叫到你的VoIP网络。这个过程一般称作再生(origination)。这简单的指出呼叫是从PSTN网络产生的。

为了实现再生,电话号码是必须的。因此你需要从本地电话公司获得用于连接到你的Asterisk系统的线路。根据你所在国家和地区的不同,有几种不同的线路可以提供用于PSTN 再生,从最基本的POTS线路到运营商级的SS7线路。

用于PSTN再生目的的电话号码一般称为直接拔入号码(DIDs)。这种叫法 在某些场合并不严谨(例如,传统模拟线路的号码就不能被认为是DID), 但是这个术语这么用已经非常流行了。从历史上说,DID专指连接到客户 端设备(CPE)的干线关联的号码。

由于电话号码是被传统电信业控制的,你要么从运营商直接获取电话号码,要么从那些大批购入号码再拆成较小的块转卖的公司处获得。如果你获得了诸如PRI这样的线路,你一般可以购买与这个线路一起交付的DID号码。

为了接受来自你用于PSTN再生的线路的呼叫,你一般需要能处理被叫号码。这是因为PSTN干线一般不止一个号码,并且运营商需要指出那个号码是被叫,这样你的Asterisk系

统才知道如何路由这个呼叫。这个被叫号码一般称作被叫号码识别服务(DINS,Dialed Number Identification Service)号码。DINS号码和DID号码不一定必须一致注9,但一般它们是一致的。当你向运营商购买线路时,你需要要求它们发送DNIS(如果他们不理解这个要求,你可能需要考虑其它运营商了)。

在Dialplan中,处理呼入线路的context需要知道如何处理呼入号码。如下例所示: [from-pstn]

; This is the context that would be listed in the config file

; for the circuit (i.e. chan_dahdi.conf)

exten => _X.,1,Verbose(2,Incoming call to ${EXTEN})

same => n,Goto(number-mapping,${EXTEN},1)

[number-mapping]

; This context is not strictly required, but will make it easier

; to keep track of your DIDs in a single location in your dialplan.

; From here you can pass the call to another part of the dialplan

; where the actual dialplan work will take place.

exten => 4165551234,1,Dial(SIP/0000FFFF0001)

exten => 4165554321,1,Goto(autoattendant-context,start,1)

exten => 4165559876,1,VoiceMailMain() ; a handy back door for listening

; to voice messages

exten => i,1,Verbose(2,Incoming call to invalid number)

在 number‐mapping context中,明白的列出了所有需要处理的DID号码,再加上对未列出的DID号码的无效号码处理句柄(你可以把无效号码转给前台,或者自动应答机,或者任意播放一段无效提示的context)。

7.4.3VoIP to VoIP

最终,对PSTN的需要可能消失,大部分语音通讯将通过网络进行。

隐藏在SIP协议后的原始思想是它曾经是一个点到点(Peer‐to‐Peer)协议。从技术上讲,它今日仍旧是。然而,事情现在已经变得非常复杂了。诸如安全、隐私、公司政策、一体化、 集中管理等等把事情变得非常复杂,远远超过了简单的在一部SIP话机里输入一个URL而其它地方的另一部SIP话机就会振铃响应的应用。

SIP协议变得膨胀而复杂。实现一套基于SIP的系统和网络变得比实现传统电话PBX网络复杂的多。注10

我们并不打算在本书中讨论复杂的VOIP系统的设计和实现问题,但是我们会讨论一些将Asterisk系统配置为支持VOIP系统之间互联的方法。

7.4.4配置VoIP干线(VoIP Trunks)

在Asterisk中,并不需要单独安装VoIP模块(除非由于某种原因,你没有编译Asterisk 要求的模块)。有几种不同的VoIP协议都可以用于Asterisk,但我们将集中讨论两种最流行的:SIP和IAX。

7.4.4.1在Asterisk系统之间配置SIP干线(SIP Trunks)

SIP是最流行的VoIP协议——它是如此流行以至于许多人以为其它的VoIP协议已经作废了(它们并没有作废,但是这并不能否认SIP已经统治VoIP领域许多年了)。

SIP协议是点对点(peer‐to‐peer)协议,而且并没有正式的干线特性。这意思是说,无论你将一部SIP话机连接到你的SIP服务器,还是把两个SIP服务器连接起来,对SIP连接来说都是一样的。

7.4.4.1.1通过SIP连接两个Asterisk系统

将两个Asterisk系统连接起来,并允许在它们彼此间呼叫的需要是很普遍的需求。比如你有一家公司有两个办公地点并在每个地点部署了一台PBX,或者比如你是一家公司的PBX 管理员,而你非常喜欢Asterisk并在家里也架设了一个。本节对配置两个Asterisk服务器能够通过SIP互通提供了一个快速指导。在我们的例子中,我们将这两个服务器称为 serverA 和 serverB 。

首先必须修改的文件是 /etc/asterisk/sip.conf 。这是配置SIP账号的主要配置文件。首先,如下内容必须被添加到 serverA 的 sip.conf 中。它定义了对端服务器需要使用的SIP 账号:

[serverB]

;

; Specify the SIP account type as 'peer'. This means that incoming

; calls will be matched on IP address and port number. So, when Asterisk

; receives a call from 192.168.1.102 and the standard SIP port of 5060,

; it will match this entry in sip.conf. It will then request authentication

; and expect the password to match the 'secret' specified here.

;

type = peer

;

; This is the IP address for the remote box (serverB). This option can also

; be provided a hostname.

;

host = 192.168.1.102

;

; When we send calls to this SIP peer and must provide authentication,

; we use 'serverA' as our username.

;

username = serverA

;

; This is the shared secret with serverB. It will be used as the password

; when either receiving a call from serverB, or sending a call to serverB.

;

secret = apples

;

; When receiving a call from serverB, match it against extensions

; in the 'incoming' context of extensions.conf.

;

context = incoming

;

; Start by clearing out the list of allowed codecs.

;

disallow = all

;

; Only allow the ulaw codec.

;

allow= ulaw

请注意修改 host 选项以匹配你自己系统配置的IP地址

然后将下述代码输入到serverB的 /etc/asterisk/sip.conf 中。它差不多和我们在serverA 中的代码一样,除了账户名称和IP地址不同:

[serverA]

type = peer

host = 192.168.1.101

username = serverB

secret = apples

context = incoming

disallow = all

allow = ulaw

现在你应该通过Asterisk CLI命令验证一下这些配置是否已经成功载入Asterisk了。首先可以试一下 sip show peers 命令。如同这个命令名字所暗示的,它可以显示所有已经配置的SIP 账号:

*CLI> sip show peers

Name/username Host Dyn Forcerport ACL Port Status

serverB/serverA 192.168.1.101 5060 Unmonitored

1 sip peers [Monitored: 0 online, 0 offline Unmonitored: 1 online, 0 offline]

你也可以在serverB上试一下 sip show peers 命令。这个命令可以显示很 多细节。

在两个Asterisk服务器之间配置SIP呼叫的最后一步是修改 /etc/asterisk/extensions.conf 的dialplan文件。举例来说,如果你希望在serverA上向6000到6999发起的呼叫都被传递给serverB,你需要在serverA的dialplan中增加如下一行:

exten => _6XXX,1,Dial(SIP/${EXTEN}@serverB)

7.4.4.1.2将Asterisk系统连接到一个SIP服务提供商

如果你注册了一个SIP服务提供商,你或许已经获得了拨出或接受电话呼叫的服务。这种配置会根据你选择服务提供商的不同而稍有不同。理想情况下,你注册的SIP服务提供商会提供Asterisk的配置示例以帮助你尽快联通系统。如果他们没有提供,那么,我们将尝试给你提供一些通用配置以帮助你开始。

如果你能从你的SIP服务提供商收到呼叫,那么服务提供商一般会要求你的服务器能够注册到他们的服务器上。为了做到这一点,你必须在 /etc/asterisk/sip.conf 的 [general] 部分中增加注册行:

[general]

...

register => username:password@your.provider.tld

...

下一步,你需要在 sip.conf 中为你的服务提供商创建一个入口点。如下例所示:

[myprovider]

type = peer

host = your.provider.tld

username = username

secret = password

; Most providers won't authenticate when they send calls to you,

; so you need this line to just accept their calls.

insecure = invite

dtmfmode = rfc2833

disallow = all

allow = ulaw

现在已经完成了账号定义,你还必须在dialplan中增加几行以允许你向服务提供商发起呼叫:

exten => _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@myprovider)

7.4.4.1.3加密SIP呼叫

Asterisk支持TLS加密SIP信令,以及SRTP加密媒体流。在本节中,我们将在两台Asterisk 之间利用SIP TLS和SRTP建立呼叫。第一步是确保所有依赖软件都已经安装好了。确保你已经安装了OpenSSL和LibSRTP。如果任何一个没有安装,请先安装这些依赖软件,然后再重装Asterisk以确保Asterisk已经包含了对TLS和SRTP的支持。一旦完成,请确保 res_srtp modules已经被编译并安装。要安装OpenSSL,CentOS下的安装包是 openssl‐devel ,Ubuntu 下的安装包是 libssl‐dev。要安装 LibSRTP,CentOS下的安装包是 libsrtp‐devel,Ubuntu下的安装包是 libsrtp0‐dev。

下一步我们将配置SIP TLS。你必须通过双方服务器上 /etc/asterisk/sip.conf 中[general]部分中的 tlsenable 来使能TLS。你可以指定一个IP地址来绑定TLS的侦听IP。这个例子中,我们采用IPv6的通配符地址,意思是允许TLS连接到系统的所有IPv4和IPv6地址上: [general]

tlsenable = yes

tlsbindaddr = ::

再下一步就是获取证书了。为了验证配置和功能的目的,我们打算利用随Asterisk发布的helper脚本生成自签发(self‐signed)证书。如果你是在真实环境中使用,你可能不希望使用自签发证书。可是,如果你想做,有不少应用程序可以帮助你很容易的管理你自己的认证授权(CA),比如 TinyCA。

我们需要用到的脚本是 ast_tls_cert,它在Asterisk源文件的 contrib./scripts/directory 目录下。我们需要生成一个CA证书和两个服务器证书。首先利用 ast_tls_cert 生成CA证书和serverA的服务器证书。然后再利用 ast_tls_cert 生成serverB的服务器证书:

$ cd contrib/scripts

$ mkdir certs

$ ./ast_tls_cert -d certs -C serverA -o serverA

$ ./ast_tls_cert -d certs -C serverB -o serverB -c certs/ca.crt -k certs/ca.key

$ ls certs

ca.cfg ca.crt ca.key serverA.crt serverA.csr serverA.key serverA.pem

serverB.crt serverB.csr serverB.key serverB.pem tmp.cfg

现在证书已经创建好了,它们需要被移动到serverA和serverB上的适当位置。我们将使用 /var/lib/asterisk/keys/ 目录来存放证书。将下列文件移动到serverA:

●ca.crt

●serverA.pem

将下列文件移动到serverB:

●ca.crt

●server.pem

将认证文件准备好后,我们就可以完成Asterisk的配置了。我们需要告诉Asterisk我们刚刚创建的服务器证书。虽然我们采用的是自签发证书,我们仍然需要指出证书的位置。在serverA中 /etc/asterisk/sip.conf 的[general]部分中,增加如下内容:

[general]

tlscertfile = /var/lib/asterisk/keys/serverA.pem

tlscafile = /var/lib/asterisk/keys/ca.crt

在serverB做同样的修改:

[general]

tlscertfile = /var/lib/asterisk/keys/serverB.pem

tlscafile = /var/lib/asterisk/keys/ca.crt

当你创建服务器证书时,Common Name字段必须与服务器主机的

hostname一致。如果你采用 ast_tls_cert 脚本,这可以通过‐C选项实现。 如果呼叫时发生了服务器证书验证问题,你可能需要修复Common Name 字段。另一个选择是,出于测试目的,你可以将/etc/asterisk/sip.conf里 [general]部分中的 tlsdont verify server 选项设置为 yes,这样Asterisk即 使在服务器证书验证失败的情况下也会允许呼叫进行。

在7.4.4.1.1一节,我们创建了在serverA和serverB之间呼叫电话的必要配置。现在我们修改一下这些配置文件,以让Asterisk知道在这两个服务器之间的呼叫是需要加密的。唯一的变化是在每个服务器的入口配置中增加 transport = tls 选项。

在serverA上:

[serverB]

type = peer

host = 192.168.1.102

username = serverA

secret = apples

context = incoming

disallow = all

allow = ulaw

transport = tls

在serverB上:

[serverA]

type = peer

host = 192.168.1.101

username = serverB

secret = apples

context = incoming

disallow = all

拨号方案(Dialplan)入门笔记

拨号方案(Dialplan)入门笔记 刚学习这玩意,很详细的说明,就不写了,慢慢的去研究吧,不明白的可以去看下“电话未来之路”(我看了N次,才大概弄明白点意思),所以,也算是吧自己的理解写到上面吧。作为笔记。。 ............................................................................................................ .................................................................................... 一:拨号方案的语法 1:拨号方案的文件在extensions.conf 中定义,一般都存在于目录/etc/asterisk 下面。 2:拨号方案由4部分组成:contexts、extensions、priorities、applications. Context : 个人理解就是对拨号进行分组,方便调用,就想面向对象里的类一样,划分为一个类一个类,由[] 括起来 例:[text] ....... 这就是一个contexts Priority: Extension 执行的步骤,都以1 开始,看下面的Extension 说明就明白了,所以先说 Priorty Extension :Asterisk重要执行的指令,就是对电话执行那些处理,或理解为一个电话操作的流程。 语法:exten => 完整的extension 由三部分组成: 例:exten => name,priority,application() .........application 表示应用里面的动作。先这么理解吧 就像这样:[text] exten => 8002,1,Answer() exten => 8002,2,Hangup() ;......这个例子意思是当拨打分机8002 的时候先执行接听,随即是挂断电话,当然要先在sip.conf 下的分机8002 参数设置context=text Application: 意思是电话流程中的应用或动作,就像上面例子中的 "Answer()和Hangup()",

公司质量手册及程序文件信息沟通管理程序

1目的 建立和疏通信息流通渠道,加强信息流通接口管理,确保与公司质量管理体系运作的相关信息能得到及时的沟通和处理。 2 范围 适用于与本公司整体运作有关的各类内外部信息沟通的管理。 3定义和术语 无 4 职责 各部门负责工作范围内的企业内外部的信息收集和整理。 质量部负责与产品质量相关的信息,并做好相关传递、处理、汇总及保存工作。 销售部负责与市场动态相关的信息,并做好相关传递、处理、汇总及保存工作。 管理部负责与企业管理相关的信息,并做好相关传递、处理、汇总及保存工作。 总经理负责对信息收集、统筹及其在内部沟通全过程的监督和控制。 5 程序 工作流程:沟通内容(信息)之分类→信息的收集→信息重要度分级→信息沟通 →沟通效果评价→沟通改进→沟通内容(信息)的归档与保存沟通内容(信息)之分类 5.1.1 外部信息 5.1.1.1 与产质量量有关的外部信息 a.客户、产品检查机构、质量技术监督机构、认证机构等检查或监测结果及反馈的信息。 b.产品标准类信息。 c.市场动态、行业动态(包括竞争对手)中与质量相关的信息。 d.供应商的质量信息及投诉等。 e.其它外部与产质量量相关的各类信息。 5.1.1.2 与企业管理相关的外部信息 a.政府及有关部门颁布的与企业运作有关的信息,如法律、法规、条例等。 b.市场、行业动态(包括竞争对手)中与企业管理相关的信息。 c.与企业有合作关系的社会机构、团体、企业的相关反馈信息。

5.1.2 内部信息 a. 体系运行情况、质量方针目标的实施情况、生产过程情况、产品检查情况等。 b. 员工对有关产品质量的建议和意见等。 c. 企业规章制度的建立、推行、运作效果等相关情况。 d. 财务、人事、行政、后勤、安全、卫生等情况。 e. 员工有关企业内部管理的建议和意见等。 信息的收集 信息(数据)每月收集、分析、传递、汇总至少一次,各部门按部门职能和各运行程序的规定收集和整理相关的信息。 信息重要度分级 根据信息的紧急及重要程度,分为三级: A、一级数据为重要且紧急的数据,指直接影响顾客满意度的数据; B、二级数据为不重要但紧急的数据; C、三级数据为日常信息,不需标识。 数据的标识由数据收集部门在信息单的右上角打“√”说明。 信息沟通 5.4.1 沟通方式及追踪落实 5.4.1.1 会议 5.4.1. 会议计划 a例行性会议 b临时性会议 5.4.1. 例行性会议

Asterisk安装指南

Asterisk安装指南 2010-03-20 10:49 1、选择操作系统 据说Asterisk对大多Linux支持的都比较好,内核版本2.6.9-55.EL安装起来很顺利,2.4的麻烦一些。注意安装系统的时候选择上开发环境的包。2、在/usr/src目录中下载Asterisk相关安装包并解压 #cd /usr/src https://www.doczj.com/doc/1a2964173.html,/pub/libpri/releases/libpri-1.4.10.tar.gz https://www.doczj.com/doc/1a2964173.html,/pub/zaptel/releases/zaptel-1.4.12.1.tar.gz(dahdi asterisk1.6以后就不用这个,用https://www.doczj.com/doc/1a2964173.html,/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.6.1+2.6.1.tar.gz) https://www.doczj.com/doc/1a2964173.html,/pub/asterisk/releases/asterisk-1.6.2.tar.gz https://www.doczj.com/doc/1a2964173.html,/pub/asterisk/releases/asterisk-addons-1.6.2.0.tar.gz https://www.doczj.com/doc/1a2964173.html,/pub/asterisk/releases/asterisk-sounds-1.2.1.tar.gz # tar -xvzf *.tar.gz 3.安装libpri # cd libpri-1.4.9 # make # make install 4.安装zaptel # cd .. # cd zaptel-1.4.12.1 # make # make install # make config 5.安装asterisk # cd .. # cd asterisk-1.4.24.1 # ./configure # make # make install

Asterisk常用调试命令

Asterisk基本配置 Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括: 1模拟接接口,如你的电话线或模拟电话. 2数字线路,如T-1和E-1线路 3Voip协议,如SIP和IAX 目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2 使用接口配置文件 1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道. 2.zapata.conf:硬件配置Asterisk的接口. 3.extension.conf:拨号方案文件. 4.sip.conf:配置SIP协议的文件 5.iax.conf:配置呼入和呼出IAX通道的文件 ******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和 chan_sip.so Asterisk译为星号(*)在很多应用中被用做通配符,Astrisk做为PBX系统的完美名称,原因之一是Asterisk可以连接数目庞大的接口类型,包括: 1模拟接接口,如你的电话线或模拟电话. 2数字线路,如T-1和E-1线路 3Voip协议,如SIP和IAX 目前正式版本是IAX2,但是IAX1的所有格式都已经停掉.所以当说到IAX都是特拽IAX2 使用接口配置文件 1.Zaptel.conf:硬件接口基层配置,我们将建立一个FX0和一个FXS通道. 2.zapata.conf:硬件配置Asterisk的接口. 3.extension.conf:拨号方案文件. 4.sip.conf:配置SIP协议的文件 5.iax.conf:配置呼入和呼出IAX通道的文件 ******编辑完zaptel.conf文件,需要使用/sbin/ztcfg -vv装载配置到硬件(不须要详细输出可以省略-vv);修改信令方法需要重启.在编辑sip.conf和iax.conf文档后,分别需要装载chan_iax2.so和 chan_sip.so******

《Asterisk 使用资料》

Asterisk目录及配置文件 /etc/asterisk/Asterisk主目录,包含其它关于Asterisk的配置文件;*zaptel.conf这个配置文件放在/etc,因为其它软件也可以使用Zaptel这个硬件及其驱动,所以不是放在 /etc/asterisk里. /usr/lib/asterisk/modules/这个目录包含所有可以加载Asterisk模块(应用程序\编辑器\格式和有用通道),在Asterisk启运时会加载这些模块(可以编辑modules.conf). /var/lib/asterisk/比较重要的是astdb文件与agi-bin目录;astdb包含Asterisk当地数据库信息. sounds/所有声音提示的文件在里面,包括Asterisk原代码中的sounds.txt文件 mohmp3/如果配置了音乐保持,应用程序会在这个目录下查找mp3(用CBR从文件中去除身份标签). keys/使用公钥和私钥系统认证与一个由RSA数字签名形成的一对等连接.公钥和私钥的扩展名分别为.pub和.key firmware/这个目录含了很多Asterisk相兼容的设备固件,它只有iax/这个子目录,其中有Digium的IAXy的二进制固件镜像. images/只有在较多的支持并且利用图解式的图像设备被发布,这个目录将会与相应的目录有更大的关联. /var/lib/asterisk/agi-bin agi-bin包含所有脚本,可以通过许多已经建立的AGI应用程序与Asterisk连接. /var/spool/asterisk outgoing/ gcall/ tmp/ voicemail/ ================配置文件================ /etc/asterisk/asterisk.conf主要配置文件, /etc/zaptel.conf硬件接口的基本层.修改这个配置文件要用modprobe装载Linux Kernel使用模块. /etc/asterisk/zapata.conf为硬件配置Asterisk的接口. /etc/asterisk/extensions.conf拨号方案. /etc/asterisk/sip.conf SIP协议配置文件 /etc/asterisk/iax.conf呼入和呼出IAX通道 /etc/asterisk/extensions.conf拨号方案配置文件

最新全套ISO9001:2015管理手册程序文件

精选范文及其他应用文档,如果您需要使用本文档,请点击下载,祝您生活愉快,工作顺利,万事如意! 精选应用文档,如果需要,请下载,希望能帮助到你们! 最新全套ISO9001:2015管理手册程序文件

目录 0.1章颁布令 3 0.2 章管理方针、目标 4 0.3章公司组织机构 5 0.4章管理职责描述 5 1章范围9 2章引用标准9 3章术语和定义9 4章公司质量/环境管理体系建立的背景环境10 4.1 公司的内外部环境10

4.2 相关方的需求和期望10 4.3 管理体系范围11 4.4 管理体系及其过程11 5章领导作用13 5.1 领导作用与承诺13 5.2 管理方针14 5.3 岗位职责与权限14 6章策划15 6.1 应对风险和机遇的措施15 6.2 管理目标及其实现的策划17 6.3 变更的策划18 7章支持19 7.1 资源19 7.3 意识22 7.4 顾客沟通/信息交流22 7.5 文件化信息22 8章运行23 8.1 运行的策划和控制23 8.2 产品和服务的要求24 8.3 设计与开发25

8.4 外部提供过程、产品和服务的控制28 8.5 销售和服务提供29 8.6 产品放行32 8.7 不合格品控制/应急准备及响应 32 9章绩效评价33 9.1 监视、测量、分析和评价33 9.2 内部审核35 9.3 管理评审35 10章改进37 10.1 总则37 10.2 不合格与纠正措施37 10.3 持续改进38 附录A: 质量管理职能分配表 39 附录B: 环境管理职能分配表41 0.1章颁布令 ZHLD/QEM.SC-2016《质量/环境管理手册》(以下简称管理手册)是依据ISO9001:2015和ISO14001:2015两个标准,结合公司实

asterCRM安装配置手册

asterCC安装配置手册 一.安装环境 1.安装程序:astercc-0.14-beta-rc1.zip 2.操作系统:CentOS Linux or Redhat Linux with mysql 3.硬件要求:X86 CPU 1GHz 1GB RAM 20GB HardDisk Ethernet Adaptor 二.安流流程 1.安装CentOS Linux or Redhat Linux 2.下载安装程序: https://www.doczj.com/doc/1a2964173.html,/news/astercc-and-astercc-box-released-014-beta-rc1 3.ssh登录后台,解压程序包 [root@sc38 ~]# unzip astercc-0.14-beta-rc1.zip 4.进入astercc-0.14-beta-rc1,更改可执行权限并执行install.sh脚本,根据提示进行安装 [root@sc38 astercc-0.14-beta-rc1]# chmod 755 install.sh [root@sc38 astercc-0.14-beta-rc1]# ./install.sh Please enter database information database host(default localhost): 设置数据库地址,默认为localhost database port(default 3306): 设置数据库连接端口,默认为:3306 database name(default astercc): 设置数据库名,默认为astercc database user name(default root): 设置数据库连接用户,默认为root database user password(default null):eLaStIx.2oo7 设置数据库连接密码,如果本机已安装Elastix,则密码为eLaStIx.2oo7 database bin path(default /usr/bin): 设置mysql的程序路径,默认指定/usr/bin Please enter the Asterisk infomation:

Object-C 经典入门教程

Object-C 入门教程 分类:Sip&asterisk2009-05-04 16:34 16409人阅读评论(2) 收藏举报大纲 o开始吧下载这篇教学 o设定环境 o前言 o编译 hello world o创建 Classes@interface o@implementation o把它们凑在一起 o详细说明...多重参数 o建构子(Constructors) o访问权限 o Class level access o异常情况(Exceptions)处理 o继承、多型(Inheritance, Polymorphism)以及其他面向对象功 能id 型别 o继承(Inheritance) o动态识别(Dynamic types) o Categories o Posing o Protocols o内存管理Retain and Release(保留与释放) o Dealloc o Autorelease Pool o Foundation Framework ClassesNSArray o NSDictionary ?优点与缺点 ?更多信息 开始吧 下载这篇教学 ?所有这篇初学者指南的原始码都可以由objc.tar.gz下 载。这篇教学中的许多范例都是由 Steve Kochan 在 Programming in Objective-C. 一书中撰写。如果你想得到更 多详细信息及范例,请直接参考该书。这个网站上登载的所有 范例皆经过他的允许,所以请勿复制转载。 设定环境 ?Linux/FreeBSD: 安装GNUStep为了编译 GNUstep

应用程序,必须先执行位于 /usr/GNUstep/System/Makefiles/GNUstep.sh 的 GNUstep.sh 这个档案。这个路径取决于你的系统环境, 有些是在 /usr, some /usr/lib,有些是/usr/local。 如果你的 shell 是以 csh/tcsh 为基础的 shell,则应 该改用 GNUStep.csh。建议把这个指令放在 .bashrc 或 .cshrc 中。 ?Mac OS X: 安装XCode ?Windows NT 5.X: 安装cygwin或mingw,然后安装 GNUStep 前言 ?这篇教学假设你已经有一些基本的 C 语言知识,包括 C 数 据型别、什么是函式、什么是回传值、关于指针的知识以及基 本的 C 语言内存管理。如果您没有这些背景知识,我非常建议 你读一读 K&R 的书:The C Programming Language(译注:台 湾出版书名为 C 程序语言第二版)这是 C 语言的设计者所写 的书。 ?Objective-C,是 C 的衍生语言,继承了所有 C 语言的特 性。是有一些例外,但是它们不是继承于 C 的语言特性本身。 ?nil:在 C/C++ 你或许曾使用过 NULL,而在 Objective-C 中则是 nil。不同之处是你可以传递讯息给 nil(例如 [nil message];),这是完全合法的,然而你却不能对 NULL 如法炮 制。 ?BOOL:C 没有正式的布尔型别,而在 Objective-C 中也不 是「真的」有。它是包含在 Foundation classes(基本类别库) 中(即 import NSObject.h;nil 也是包括在这个头文件内)。 BOOL 在 Objective-C 中有两种型态:YES 或 NO,而不是 TRUE 或 FALSE。 ?#import vs #include:就如同你在 hello world 范例中看 到的,我们使用了#import。#import 由 gcc 编译程序支援。 我并不建议使用 #include,#import基本上跟 .h 档头尾的 #ifndef #define #endif 相同。许多程序员们都同意,使用这 些东西这是十分愚蠢的。无论如何,使用 #import 就对了。这 样不但可以避免麻烦,而且万一有一天 gcc 把它拿掉了,将会 有足够的 Objective-C 程序员可以坚持保留它或是将它放回 来。偷偷告诉你,Apple 在它们官方的程序代码中也使用了 #import。所以万一有一天这种事真的发生,不难预料 Apple 将 会提供一个支持 #import 的 gcc 分支版本。 ?在 Objective-C 中, method 及 message 这两个字是可以 互换的。不过messages 拥有特别的特性,一个 message 可以 动态的转送给另一个对象。在Objective-C 中,呼叫对象上的 一个讯息并不一定表示对象真的会实作这个讯息,而是对象知 道如何以某种方式去实作它,或是转送给知道如何实作的对象。

质量手册、程序文件的管理制度(新编版)

质量手册、程序文件的管理制 度(新编版) Safety management is an important part of enterprise production management. The object is the state management and control of all people, objects and environments in production. ( 安全管理 ) 单位:______________________ 姓名:______________________ 日期:______________________ 编号:AQ-SN-0648

质量手册、程序文件的管理制度(新编版) 1、目的与适用范围 为了确保在质量体系运行中的各个场所使用的文件是有效版本,特制定本制度。 本制度适用于《质量手册》、《程序文件》的更改,发放和回收的管理。 2、管理要求 2.1全质办是《质量手册》、《程序文件》的归口管理部门。 2.2《质量手册》、《程序文件》在贯彻实施过程中若发现差距或不符合实际情况时,各职能部门要以书面形式反馈全质办,全质办向管理者代表提出更改报告,填写文件更改通知单,经管理者代表报准后进行更改、控版和回收。

2.3全质办指定专人负责《质量手册》、《程序文件》按规定范围进行发放、更改和因收,对其使用和保管进行监控。 2.4全质办受管理者代表委托解释《质量手册》和《程序文件》的有关内容。 2.5技术科负责对《质量手册》、《程序文件》进行标准化审查。 2.6《质量手册》、《程序文件》持有者要保证其有固定的存放位置,以便在任何情况下都能对其进行更改、回收等。 2.7《质量手册》、《程序文件》持有者要妥善保管,不得丢失,不准外借,更 不准私自提供他人转抄或复印,若发现类似问题,应予以追究责任。 XXX图文设计 本文档文字均可以自由修改

Elastix安装配置手册

Elastix安装配置手册 一.安装环境 1.安装光盘:elastix-1.6-cn.iso 2.操作系统:Linux CentOS 3.硬件要求:X86 CPU 1GHz 1GB RAM 20GB HardDisk Ethernet Adaptor 二.安流流程 首先将Elastix 光盘插入到您的电脑光驱中,开启电脑(您可能需要通过BIOS设置使电脑通过CD启动),安装程序将自动分区和格式化你的硬盘和安装所有的需要的安装包,安装过程非常简单,在典型的机器上大概花费时间不会超过20分钟。 1.下载ISO映象文件: https://www.doczj.com/doc/1a2964173.html,/index.php/en/menudownloads.html 2.安装时,显示屏幕上会出现如下提示画面; 3.按回车后,如下图所示,此处是选择键盘类型,这里选择”us”;

4.anaconda安装将开始安装(如果您电脑无足够内存,安装程序将在text 模式下安装); 5.接下来会出现如下提示,此处是用来选择时区,中国国内选择Asia/Shanghai(亚洲/上海);

6.接着出现下图,此处是设定root的密码(注意:两次输入需要一致),安装完登录时需要此密码; 7.接下来的过程一直到安装完成都是自动的,不需要输入任何信息,以下是安装过程; a.检索安装信息;

b.检查附属包; c.从安装光盘复制文件到硬盘;

d.开始安装包进程; e.正在安装包;

f.当所有的需求包都自动安装完毕,光驱将自动打开,将出现如下屏幕 g.把CD从光驱取出,关闭光驱,系统自动重启;

LUCKY DOG1攻略

总之这款游戏灵活性还是很高的,前面越狱篇基本可以采用万能越狱法,或者铁了心要走个人路线的,以后再用万能越狱法+逃亡篇个人路线走一次,就可以补足完成度。 万能逃狱法我写到攻略里了,见附件。( F( |7 ^! c T, V* @) \3 b! r$ } : ?8 _% N1 m8 ?4 N : T6 n. z1 O0 C . }/ h. a7 a5 z% P% v+ x A 话说这游戏攻略也不算少了,但是……没汉化……而且,有的选项居然还要猜!!责备Bernardo那里我猜错好几次【挠墙】总之我终于综合整理+翻译+配合游戏文本把中文版攻略给搞出来了orz 不废话了,上攻略:! ?4 r! [( H% F h, ?7 C4 v 个人路线: 2 h* z- h' J, J/ w Giulio(紫毛)

. ?" w/ H! v1 E7 A , q2 L* ` I. W$ A% v8 w 8 l$ p) D0 k8 @6 k. f* s - [" u9 O8 d3 ] f! O 1 A" b/ N- E( N* e" h4 z/ d

4th 3 j# h; ^5 B7 l/ ^+ T5 v+ F 4 {Luchino 囚犯 * m7 G$ F8 A+ r( |% [, M0 j 5th 2 o5 x- u/ g/ e# e Luchino! o* d5 w6 Y) x6 G# V 囚犯 6th Luchino 囚犯 3 o( U; o L6 b1 \ 7th - z7 [1 @' W+ L/ `4 T% G) f0 P Bernardo 看守 确定执行逃狱计划& W' i8 g! Y. y: _/ S >> 逃亡編 << 6 ~0 w/ y% q; A/ L- f4 M 1st 接住Giulio0 D; \" z! _3 I) G( _+ U 担心Brenardo 同意Luchino的话 同意Luchino的话2 [0 n _8 A" Y 一个人探索 4 Q& l' p* i! \" E 2nd / |. X- j0 ^- w& Y- ?让Luchino去 还是赶快溜掉比较好吧0 `! p( C X1 V& k+ d 看着Giulio Luchino 想办法让她闭嘴 让Luchino来帮忙 % Z5 p. e: i2 g. `/ v% N 3rd 袒护Bernardo 陪他一起拷问 看着Luchino 扣动扳机8 d; _. }' r, ]' ]稍微手下留情一点吧 >> 迪班篇 << -- ※END分歧点/ i% ]! B7 }- O, y. o8 U% Q ( k- f. \2 z6 @

Asterisk的SIP type和身份认证

Asterisk的SIP type和身份认证 在Asterisk中对某个peer的类型分为3种:peer, user和friend 看看voip-info对这三种类型的解释 ?peer: A SIP entity to which Asterisk sends calls (a SIP provider for example). If you want a user (extension) to have multiple phones, define an extension that calls two SIP peers. The peer authenticates at registration. ?user: A SIP entity which places calls through Asterisk (A phone which can place calls only). Users authenticate to reach services with their context. ?friend: An entity which is both a user and a peer. This make sense for most desk handsets and other devices. Asterisk will create two objects, one peer and one user, with the same name. where it can be found (IP address/host name) and that it is reachable from now on. 简单的说,在这篇文档里, type=peer定义对方是一个服务提供者, 它允许你的Asterisk通过这里定义的服务商打电话; 而user则定义对方是你的一个客户端, 允许对方通过你的Asterisk打电话. friend就是两者兼有. 但是实际情况是什么? 试试这样的定义: [1001] username=1001 secret=xxxxx host=dynamic port=5060 type=peer context=from-extensions 然后用一个SIP客户端来尝试注册到你的Asterisk上, what happened? 你会发现客户端也能注册上! 其实type的真正意义在于Asterisk怎么去处理发往外部和来自外部的请求. type=peer 如果type是peer,有两层含义. 1. 可以将对方作为一个SIP Service Provider, 允许你的Asterisk通过对方进行呼出. 2. 如果对方在逻辑上是一个客户端, asterisk将根据传入的Invite请求来对对方进行身份验证, 但需要注意的是这里的验证不是通过username和secret, 而是通过对方的address和port. 这里分两种情况: * 对方的address和port没有匹配到你在sip.conf中对任何一个peer的设置, 如果你的Asterisk 允许匿名呼入(allowguest=yes), 那么, 该呼入将被传到在sip.conf的general配置中的context 上. 如果不允许匿名呼入, 直接拒绝该呼入. * 对方的address和port匹配到了任何一个sip.conf种的peer设置, 那么改呼入将被传到该peer 指定的context上.

质量手册、程序文件的管理制度

编号:SY-AQ-01352 ( 安全管理) 单位:_____________________ 审批:_____________________ 日期:_____________________ WORD文档/ A4打印/ 可编辑 质量手册、程序文件的管理制 度 Management system of quality manual and procedure documents

质量手册、程序文件的管理制度 导语:进行安全管理的目的是预防、消灭事故,防止或消除事故伤害,保护劳动者的安全与健康。在安全管理的四项主要内容中,虽然都是为了达到安全管理的目的,但是对生产因素状态的控制,与安全管理目的关系更直接,显得更为突出。 1、目的与适用范围 为了确保在质量体系运行中的各个场所使用的文件是有效版本,特制 定本制度。 本制度适用于《质量手册》、《程序文件》的更改,发放和回收的管 理。 2、管理要求 2.1全质办是《质量手册》、《程序文件》的归口管理部门。 2.2《质量手册》、《程序文件》在贯彻实施过程中若发现差距或不 符合实际情况时,各职能部门要以书面形式反馈全质办,全质办向管理 者代表提出更改报告,填写文件更改通知单,经管理者代表报准后进行 更改、控版和回收。 2.3全质办指定专人负责《质量手册》、《程序文件》按规定范围进 行发放、更改和因收,对其使用和保管进行监控。

2.4全质办受管理者代表委托解释《质量手册》和《程序文件》的有关内容。 2.5技术科负责对《质量手册》、《程序文件》进行标准化审查。 2.6《质量手册》、《程序文件》持有者要保证其有固定的存放位置,以便在任何情况下都能对其进行更改、回收等。 2.7《质量手册》、《程序文件》持有者要妥善保管,不得丢失,不准外借,更 不准私自提供他人转抄或复印,若发现类似问题,应予以追究责任。 这里填写您的公司名字 Fill In Your Business Name Here

asterisk+freepbx+astercrm的安装----lamp rpm安装

Linux下安装呼叫中心服务器(ASTERISK+FreePBX) 一、环境要求: 操作系统:centos 5.0以上(以最小化形式安装) Linux内核版本:2.6.22 Asterisk版本:asterisk V.1.6.2.18 FreePBX版本:FreePBX:2.9.0 以rpm方式安装好的LAMP环境 以root身份登录 二、所需软件包 https://www.doczj.com/doc/1a2964173.html,/pub/telephony/asterisk/asterisk-1.6.2.1 8.tar.gz https://www.doczj.com/doc/1a2964173.html,/freepbx-2.9.0.tar.gz 三、安装步骤 1、Lamp的安装 下载所有软件包到/usr/local/src路径 配置yum源,安装相关软件 yum –y update yum install –y httpd http-devel mysql mysql-devel mysql-server php php-devel php-mysql yum install php5 php5-cli php5-mysql php-pear libapache2-mod-php5 php5-curl php5-gd php-db yum install php php-mysql php-common php-gd php-mbstring php-mcrypt php-devel php-xml

yum install e2fsprogs-devel keyutils-libs-devel krb5-devel libogg libselinux-devel libsepol-devel libxml2-devel libtiff-devel gmp php-pear php-pear-DB php-gd php-mysql php-pdo kernel-devel ncurses-devel audiofile-devel libogg-devel openssl-devel mysql-devel zlib-devel perl-DateManip sendmail-cf sox yum install gcc gcc-c++ wget bison mysql-devel mysql-server php php-mysql php-pear php-pear-DB php-mbstring nano tftp-server httpd make ncurses-devel libtermcap-devel sendmail sendmail-cf caching-nameserver sox newt-devel libxml2-devel libtiff-devel php-gd audiofile-devel gtk2-devel subversion kernel-devel yum install festival festival-dev yum install ncurses-base ncurses-bin ncurses-term libncurses5 libncursesw5 libncurses5-dev libncursesw5-dev yum install zlib1g zlib1g-dev yum install bison bison-doc yum install install libxml2 libxml2-dev yum install libtiff4 libtiff4-dev yum install libasound2 libgsm1 libltdl3 libpq4 libspeex1 libsqlite0 libtonezone1 libaudiofile0 libaudiofile-dev yum install libnet-telnet-perl mime-construct libipc-signal-perl libmime-types-perl libproc-waitstat-perl mkdir /var/lib/mysql chown –R mysql:mysql /var/lib/mysql /etc/init.d/httpd start chkconfig –level 35 httpd on mysql_install_db chown –R mysql.mysql /var/lib/mysql

Asterisk安装和测试

Asterisk安装 (红色字体部分为需要键入或修改的部分)

下载准备 系统环境:Linux CentOS 5.0,安装开发工具以及开发库。 Asterisk 源代码包asterisk-1.6.1.20.tar.gz,版本:1.6.1.20。 SIP软电话使用eyebeam 版本:1.5.8。 1.切换用户(需要输入管理员密码),执行 su root 2.进入源码包存放文件夹 [root@asterisk-test1 ~]#cd /usr/local/src 3.下载 [root@asterisk-test1 ~]#wget https://www.doczj.com/doc/1a2964173.html,/pub/telephony/asterisk/releases/asterisk1.6.1.20. tar.gz 编译安装Asterisk 1.解压源代码包 [root@asterisk-test1 ~]# tar -zxvf asterisk-1.6.1.20.tar.gz 2.进入包目录 [root@asterisk-test1 ~]# cd asterisk-1.6.1.20 3.环境检测和预配置 [root@asterisk-test1 asterisk-1.4.5]# ./configure(其实这样直接进行configure并非十分规范。应当先使用“./configure –help”命令来 查看一些可用的选项和参数,然后根据实际情况才进行定制操作。)当环境预检测和预配置工作 做完时,最后会显示以上反馈信息。并且建立好Makefile。 注意:系统如果缺少安装必须的包,此步骤可能会出现configure: error错误,解决方案见后文可能遇到的问题 configure: creating ./config.status config.status: creating build_tools/menuselect-deps config.status: creating makeopts config.status: creating channels/h323/Makefile config.status: creating include/asterisk/autoconfig.h .$$$$$$$$$$$$$$$=..

asterisk配置小结

asterisk配置简单解说 软件版本 asterisk 1.2.7.1 gix101e sip 130 中文 一:通话设置部分 1:软件安装 debian系统下面可以使用如下命令安装,如果是其他发行版可以自己编译安装或者使用相应的包安装。 vax:/home/ailantian# apt-get install asterisk 2:帐户设置 sip的帐户设置 vax:/home/ailantian# cd /etc/asterisk/ vax:/etc/asterisk# ls adsi.conf codecs.conf logger.conf res_odbc.conf adtranvofr.conf dnsmgr.conf manager.conf rpt.conf agents.conf dundi.conf meetme.conf rtp.conf alarmreceiver.conf enum.conf mgcp.conf sip.conf alsa.conf extconfig.conf misdn.conf sip_notify.conf asterisk.adsi extensions.ael modem.conf skinny.conf asterisk.conf extensions.conf modules.conf telcordia-1.adsi cdr.conf features.conf musiconhold.conf voicemail.conf cdr_custom.conf festival.conf osp.conf vpb.conf cdr_manager.conf h323.conf oss.conf zapata.conf cdr_odbc.conf iax.conf phone.conf cdr_pgsql.conf iaxprov.conf privacy.conf cdr_tds.conf indications.conf queues.conf 这个目录下面的sip.conf bindaddr=192.168.100.144;这个填自己的ip地址。 allow=all;允许所有的解码类型。 添加下面的字段。下面的是帐户信息。 [777] type=friend username=777 secret=777 host=dynamic ; This device registers with us [888] type=friend username=888 secret= host=dynamic ; This device registers with us [333] type=friend username=333 secret= host=dynamic 然后还需要修改的文件是extensions.conf 然后才能够互通,否则可能会收到404,或者407错误。

Tekla常用设置(简)解读

1、当一张Xsteel的图纸转化为CAD的图纸时,被文字或尺寸标注遮挡处的线条时常会断开,问:怎样才能让两条线不断开? 要在绘制图纸中或转化到DXF / DWG 中显示连续线(例如穿过文本或图 纸标记画直线),可将以下变量设置为off: ? XS_USE_LINECLIP_IN_EXPORT (对于DXF / DWG 输出)。 ? XS_USE_LINECLIP (对于绘制的图纸)。 2.修改多边形形状时,系统默认的多边形的第一条边是无法调整的;要通过增加顶点移动来调整多边形的形状。 3、不要使用剪切来减短部件。由于在导出信息到 NC 文件时剪切并不总能影响部件长度,这会导致工厂错误。采用移动部件控柄或使用细部 > 接合来代替。 不要使用接合来延长部件。这会导致与连接和细部相关的错误。采用移动部件控柄来代替。 4、如何在报表中将连续的文字独立的列: A、在报表中的文本域中添加文本<,>; B、同时在输出文件时将报表的名称的后缀改为<*.csv>格式. C、打开时采用EXCEL打开即可. 5、定义轴线标签边框 要定义轴线标签边框大小,请使用工具>高级选项>图纸属性中的XS_DRAWING_GRID_LABEL_FRAME_FIXED_WIDTH变量。默认值为零,表明轴线标签边框的宽基于轴线标签的宽。要增加或减少边框的宽,请以毫米为单位输入需要的值。 XS_DRAWING_GRID_LABEL_FRAME_FIXED_WIDTH 6、滚轮鼠标 要设置滚动(不按住)滚轮时的缩放比例,使用变量 XS_ZOOM_STEP_RATIO_IN_MOUSEWHEEL_MODE。 要设置滚动并按住滚轮时的缩放比例,使用变量 XS_ZOOM_STEP_RATION_IN_SCROLL_MODE。 7、如何修改13.0系统默认的字体样式和标注样式 xs13.0的字体样式系统默认是Comic Sans MS 标注样式是Bookman Old Style 我太喜欢这些字体,我想把他们全部修改为宋体,虽然出图后也可以把他们修改为自己想要的那种字体,但感觉不是很方便,请问可以在系统下修改吗?我想一出图不经修改就可以是我想要的那种字体: 1.在这里也可以改,后面的为输出CAD转换的字体,*1.0的为修改字宽. // Examples: (remove the comment marks // to make the lines effective) // Arial Narrow = ARIALN.TTF * 1.0 // ISOCPEUR = ISOCP.SHX * 1.0 // ISOCTEUR = ISOCT.SHX * 1.0 2.在BAT文件中可以修改模型轴线的字体 rem *** Fonts --------------------------------------------------- set XS_DEFAULT_FONT=Arial Black set XS_DEFAULT_FONT_SIZE=10 set XS_TEXT_FONT=Arial Narrow rem set XS_VIEW_TITLE_FONT=Arial Narrow 8、将图形文件从XSTEEL转到CAD中的时候,图面上的字体有的时候会有位

相关主题
文本预览
相关文档 最新文档