解决方案

ASTERISK入门

seo靠我 2023-09-25 15:30:56

subscriber:加入某个group,从而遵从某一个call restricion

subscriber group:可以使用1种call restriction。

call restriction:SEO靠我将numbering plan中各项取出,各自组成成不同的呼叫限制方案

numbering plan:通用,是一个整体的计划,里面包括长途,本地,等各种形式的方案

————————————————————SEO靠我-

以上,用于拨入号码的预处理,实际上是一种过滤,下面才是真正的呼叫处理。

————————————————————–

route:一种策略,根据号码匹配的模式,选择走哪个trunk。

trunk:实际上做通SEO靠我一个链路,供route选择。

analog的,一个POTS就是一条analog trunk

analog的数量由设备定,

ip trunk没有限制数量,并且一个ip trunk连到对方IPPBX后,对方的sSEO靠我ubscriber 数量是不确定的,由那个IP PBX决定。

Asterisk,开始吧

————————————————————–

什么是asterisk?开源电话平台

Asterisk 通过了电话的开源平台SEO靠我。基本上就是一个软件的PBX。

最初是Digium 公司的Mark Spencer 编写的,这个公司就是他创立的,专门生产并销售Asterisk使用的硬件。Asterisk 简直就是一场电话的革命。

为什SEO靠我么使用Asterisk?

现在电信行业的混乱,因为各种专利技术应用在各种层次的网络上,导致很大的混乱。Asterisk 就是答案——给电信行业普遍的混乱环境带来秩序的革命。

专利技术有什么错?

没错,如果专SEO靠我利技术独立工作的话。就像你有剃须刀和剃须膏没错一样!但是让各种技术互相操作,专利技术就会除了要价过高、客户不满,以及缓慢的开发速度等问题之外的刻板和局限。

我们要Asterisk做什么?

根据情况而定。在SEO靠我一个小实验室,一个pc(x86),500MHz 的奔三,合适的内存,合适的电源,还有Linux (其他os也可以支持)。此外还有Digium 板卡插在系统中,以便连接本地PSTN。

Asterisk支持SEO靠我什么技术?

与 VoIP, PSTN, ISDN, AIX, SIP 有关的任何东西。

比较好的Asterisk参考书?

<电话未来之路>(http://www.asterisk-docs.o…

找到,编译,SEO靠我安装,在第3,4章中,包含了到哪里去找那些文件之类的信息。还有编译时的需要注意的选项,需要配置的模块,和在运行时载入的模块。

相关:

gcc, glibc-kernheaders, cpp, binutiSEO靠我ls, glibc-headers, glibc-devel

此外, 安装bison 和 open ssl

大多数标准的distro都自带

推荐distro:基于RedHat和 RH的 distro (版本SEO靠我没指定)

组件:

Asterisk

Zaptel

libpri

Asterisk:Asterisk 程序文件,还有配置,监控的工具

Zaptel: Zapata 项目中硬件的核心模块和驱动,如果要与PSTN或者其SEO靠我他网络接口,需要它。

libpri: 与Primary Rate Interface ISDN的接口库。

还有,如果基准时间参考,需要安装ztdummy 模块(第3章中解释)

有用的网页:

PSTN: httSEO靠我p://en.wikipedia.org/wi…

G.729: http://en.wikipedia.org/wi…

G.711: http://www.freesoft.org/CI…

Digium: SEO靠我http://en.wikipedia.org/wi…

Asterisk: http://en.wikipedia.org/wi…

Free World Dial-up: http://en.wikipeSEO靠我dia.org/wi…

Asterisk Architecture: http://www.asteriskdocs.or…

重要链接:

Putty:

http://www.chiark.greenend…

ASEO靠我sterisk 通道:

http://www.voip-info.org/w…

重要信息:

Asterisk machine on the LAN: 90.0.0.3

Asterisk的目录结构:(更确切的说SEO靠我,是Asterisk使用的目录)

/etc

包含了zaptel.conf文件(只有一个)

/usr/lib/asterisk/modules

所有的asterisk可载入的模块都在这里,一般来说,所以的模块都SEO靠我是启动的时候载入的

注意:要更改启动时载入的模块,或者是模块载入的方式,你可以修改/etc/asterisk/modules.conf文件

/etc/asterisk

包含了所有的asterisk配置文件

/SEO靠我var/lib/asterisk

agi-bin: agi 脚本

固件:兼容设备固件

映像:在这个目录下寻找映像(如果通道支持)

关键字:这个文件中有基于RSA一类的认证关键字

mohmp3:当配置了持有音乐的SEO靠我时候,这个目录是放置mp3的(注意,mp3应该使用恒比特率编码,并且没有id标签。)

sounds:所有的语音提示

/var/spool/asterisk

qcall:撤销了——包含了特殊呼叫方法的呼叫信息SEO靠我文件——不是打电话的好方法,因为这种方式太硬性了——不再使用。使用outgoing替代。

Outgoing:现在打电话的法国闹事——呼叫信息目录普遍使用。

Tmp:中间/临时数据

Voicemail:语音和SEO靠我问候语。通过修改/etc/asterisk/voicemail.conf文件可以修改。

/var/run

处理系统中运行进程的id(包括asterisk)

/var/log/asterisk

AsteriskSEO靠我在这里生产日志,通过/etc/asterisk/logger.conf来配置。

/var/log/asterisk/cdr-csv

用来存储呼叫详细记录,逗号分割,例如csv(地址簿格式)

重要:很多时间会SEO靠我使用cdr,ast附件包的代码可以在mysql数据库中存储cdr,用于记录呼叫详细记录

外部交换借口/通道接口

FXO :Digium Dev-Lite kit上的红口:Foriegn eXchange SEO靠我Office:这个通道(接口)的动作角色是fxo,利用fxs协议——就是说这个模块需要插入到pstn。

FXS(Digium卡的绿口):Foriegn eXchange Station,它表现得像fxsSEO靠我,读的是fxo协议——所以要插入终端设备——注意,这里插pstn,会烧坏!

配置Foriegn eXchange Station文件:

让你对常见的通道接口进行管理/comm 通道硬件,决定如何在连接的设SEO靠我备之间进行握手。

注意:使用zapata.conf文件完成非常重要的通道配置——激活或者失效类似回形针、回声处理之类的功能。详细程度到pstn添加到那个端口,信令控制等——如果这里配置不正确,甭指望系统SEO靠我能工作正常。

拨号计划:

在extensions.conf中指定。

Dialplan:

拨号计划:在 /etc/asterisk 文件中

拨号计划语法由以下组成部分:

上下文(context) :

写在[]里面 ,SEO靠我 定义上下文来创建独立的空间

注意:最重要的一个上下文的应用就是提供安全性:要获得更多信息,看安装文件中SECURITY 文件。

例如:

[incoming]

statement 1—

statement 2—SEO靠我

[next-context]

注意:当下一个定义的上下文开始的时候,现在这个上下文就结束了。

分机:非常简单。与普通的PBX一样。分机号的意思是你在连接到系统之后拨打的号码以获得某个终端/服务-不仅是 aSEO靠我sterisk

分机以如下格式定义:

exten =>

分机的组成部分:exten => name, priority, application()

例如 exten => 123, 1, Answer() SEO靠我的意思是当另一端拨打123,调用asterisk/apps /Answer(),优先级别为1。优先级别通常从1开始。数字越小,级别越高。例如,级别1就比级别2要高。(现在,有一些称为非数字化的级别——SEO靠我非常好,继续读!)一个很好的例子:

exten => 123, 1, Answer()

exten => 123, 2, Hangup()

会发生什么情况,无论什么人拨打123,系统都会首先执行answerSEO靠我(),然后当answer结束的时候,过渡到hungup()。你看,都是执行的顺序和优先级。

还有一些特殊的分机,例如s,比如我们前面的例子中123的位置,后面再解释

记住:

所有的优先级别都是从1开始,其他SEO靠我的必须遵循这个顺序。Ast不会处理其他的,会认为是出错。

分机可是任何,不仅是数字,例如名字。

优先级:我想在前面讨论分机的时候已经讨论了优先级别。

非数字的优先级:

我们会在Answer() … HanguSEO靠我p() 后使用n来代替实际的优先级别数字。

exten => 123, 1, Answer()

exten => 123, n, Hangup()

Asterisk会自动给优先级别+1, 所以你就不用每次记SEO靠我着并输入这个数字了

Also, in Asterisk v2, we’ve got a way to put labels tp priorities:

exten => 123, 1, Answer()SEO靠我

exten => 123, n(Hangup), Hangup()

Applications:

应用程序:

应用程序是真正执行你的拨号计划的程序。拨号计划定义了顺序——应用程序就按照它去做。工作内容可以是任SEO靠我何东西,从播放声音到接受当前通道上的按键输入。(http://www.voip-info.org/w…了解asterisk通道,虽然听起来很好笑,但是我是对通道很迷惑)

简而言之,应用程序是真正干活的,SEO靠我当有人拨打123的时候,参考以上示例。

我们可以通过友好的邻居应用程序传递参数,把它们放在逗号或者竖线分割的列表中。

例如:

exten => 123, 1, DoSomething(Arg_1,Arg_2SEO靠我,Arg_3,..,Arg_n)

或者exten => 123, 1, DoSomething(Arg_1|Arg_2|Arg_3|..|Arg_n)

开源中,你随意!

特别分机:

‘s’是个特别的分机——它SEO靠我处理环境中任何的输入,没有特定目标。S意味着开始。

例如

[incoming]

exten => s,1,application( )

exten => s,2,application( )

exten => SEO靠我s,3,application( )

现在,只要呼叫进入,就带有最高级别,进入s。当我们补充了应用程序之后,我们就是创建了自己的拨号计划

填入应用程序名(分配正确的优先级别)

exten => s,1,AnSEO靠我swer( )

exten => s,2,Playback(hello-world)

exten => s,3,Hangup( )

这就是asg拨号计划了

这个拨号计划会:

1. 接电话 (接听已经建立了通道的SEO靠我呼叫,这个呼叫就是从这个通道来的,在进行任何处理之前,先把电话接听.没有参数传递。

2. 播放语音,给出了语音文件的路径,通常在 /var/lib/asterisk/sounds/, gsm 格式,后缀SEO靠我名为.gsm。如果有多个文件都符合这个文件名,ast就播放那个cpu负载(翻译成本)最小的,翻译成本与不同的文件格式有关。在cli下面输入show translation可以看到,参数,语音文件名,还SEO靠我有路径,如果这个文件没有在标准路径下。

3. 挂掉活动通道,主叫方就是从这个通道进行呼叫的,很必要,确保主叫没有继续拨号计划。没有参数

为拨号计划添加逻辑:

Background() 应用程序: 它与 plSEO靠我ayback() 非常像, 只是在播放语音的时候,如果用户拨打号码,语音中断,然后呼叫那个分机。例如,主叫拨打分机x,会以第一优先级转到分机x上面去。

语法:

Background(sound_file)SEO靠我

例子:

extend => s,n,Background(sound_filename)

回拨语音文件,直到用户输入分机号,——在创建语音菜单的时候有用。

但是playback()不会接受输入,会一直拨,直SEO靠我到语音文件结束。

Goto() 应用: 如其名,主叫跳到某个 context / extension / priority上去.

语法:

Goto(context, extension, priority)SEO靠我

例子:

exten => 1,n,Goto(incoming,s,1)

把控制权交给下一个上下文,分机s, 优先级别 1 – 预先订制拨号计划跳转的流程,

链接:

Xlite sip电话- 免费的: httpSEO靠我://www.xten.com/index….

载入Ubuntu:

Ubuntu, 是一个比较新的桌面友好的distro ,放在Asterisk专用的机器上.

重要内容:

Ubuntu 很好 – 对桌面来说

SEO靠我们必须装很多内容才能在ast服务器上用.

所以一般来说: 不要使用桌面disrto ,如果你计划在上面跑服务器的话- Fedora 是更好的选择.

但是也没有坏处- 有耐心,万事可达.

载入Ubuntu的基SEO靠我本原因就是为了图形化工具Firefox和Acrobat。只是费很多CPU和内存,x历史遗留问题。

所以我们继续的是一台新机器,从新开始运行ast

下面开始真正体验ast系统。经过良好调整的Ubuntu可以SEO靠我阅读PDF文档。

带有safe_asterisk 脚本的ast二进制文件在/usr/sbin中,昨天咱们编译过了如果ast异常,safe_asterisk脚本会引起ast的core dump,默认情况下SEO靠我是在第9终端开启ast。

开始ast我们使用safe_asterisk脚本,或者运行ast二进制文件来手工启动ast。在运行safe_asterisk脚本的时候,在9终端上载入ast的CLI(终端号可以SEO靠我配置),执行ast二进制文件载入ast,作为后台程序

我们还可以用初始化脚本来启动或者关闭ast。

见书71页

求助:

asterisk -h

其它命令行参数:

-c 显示Asterisk CLI (或控制面板)SEO靠我

-v 设置 CLI 的详细程度- 例如v (verbose), vv (very verbose), vvv (very very verbose)

-g 告诉asterisk 创建core dump,SEO靠我一会用gdb调试

-r 远程-连接到一个已经运行的Asterisk进程上 (与网络远程连接没有关系)

-rx远程执行 – 执行引号内的命令 ( "restart now") 不需要真的启动CLI

还有好多命SEO靠我

Beginning an affair with Asterisk – Day 6

asterisk-dev 准备好 -

asterisk-dev的配置:

Distro: Ubuntu 5.10 (BreSEO靠我ezy Badger)

Asterisk version: 1.2.1

运行配置: 图形下完全多用户模式(运行级别5)

asterisk-dev 机器上还装载了很多其他内容.

本章的任务:

1. Linux下XSEO靠我lite客户端的配置,以便与asterisk-dev上我们的测试 Asterisk 服务器共同工作.

链接:

Xten 网站: http://www.xten.com/

Xlite 下载页面e: http:SEO靠我//www.xten.com/index….

2. 录些 gsm 音频格式的音频文件:

welcome messege

timeout messege

我们使用免费的基于Windows的软件(aghhh..)SEO靠我 来进行录制,格式转换和音频标准化 . 它工作非常好,并且最重要符合我们的要求- 快速录制,不需要撞墙很长时间。

链接: 录制/ 转换/ 处理软件-

录制: Recordpad Trial VersionSEO靠我 – http://www.nch.com.au/reco…

音频转换(WAV to GSM): Switch Freeware Version – http://www.nch.com.au/switSEO靠我

音频编辑和处理: Wavepad Trial Version – http://www.nch.com.au/wave…

轻松快速创建音频文件,转换格式,并且标准化到正常的语音级别,让声音没有分叉。可SEO靠我惜不是开源并且在Linux下… .

注意:以上软件只是生成测试录音,为学习而已。Enterux Solutions (或者客户端, Enterux) 许可证要求不需用于任何商业目的。

这个开源的 zgsmSEO靠我play 可用来测试我们的新gsm音频文件,在 Linux上

链接: http://freshmeat.net/relea…

3. 写第一个拨号方案:

我们的分机配置文件 extensions.conf如下SEO靠我:

[incoming]

欢迎界面,

exten => s,1,Background(enterux/welcome)

exten => i,1,Playback(enterux/invalid-extensSEO靠我ion)

exten => i,n,Goto(incoming,s,1)

exten => t,1,Playback(enterux/call-will-be-disconnected)

exten => SEO靠我t,n,Hangup()

; 呼叫方可以拨打的用户分机

exten => 0,1,Dial(SIP/0) ; Operator

exten => 1,1,Dial(SIP/1) ; Sales staff SEO靠我– 使用&连接多个接收者,例如 SIP/staff_1&Sip/staff_2 – 最先接起来的电话就被连接。

exten => 2,1,Dial(SIP/2) ; Support staff -使用&SEO靠我连接多个接收者,例如 SIP/staff_1&Sip/staff_2 – 最先接起来的电话就被连接。

exten => 202,1,Goto(incoming,s,1)

exten => 201,1,GoSEO靠我to(incoming,s,1)

要使上面的拨号计划起作用, sip.conf 需要如下设置:

[201]

user=201

type=friend

secret=1234

host=dynamic

contextSEO靠我=incoming

[202]

user=202

type=friend

secret=1234

host=dynamic

context=incoming

[1234]

user=1234

type=friend

seSEO靠我cret=1234

host=dynamic

context=incoming

;用户添加 0-operator, 1-sales ,2-support

[0]

user=0

type=friend

secret=SEO靠我1234

host=dynamic

context=incoming

[1]

user=1

type=friend

secret=1234

host=dynamic

context=incoming

[2]

user=2SEO靠我

type=friend

secret=1234

host=dynamic

context=incoming

配置Xlite,完成拨号计划。

参考103页(拨号计划基本章节)

4.观察结果:

如果一个登录到ast服务SEO靠我器上的一个软电话拨打201/202,预记录就会播放欢迎语音。

"Welcome to Enterux Solutions. Press 0 for an operator, 1 for sales anSEO靠我d 2 for Support. Thank you."

拨打0,1 , 2之后,通过Dial() 应用程序拨打合适的用户

如果分机号码不对,就播放语音

"You have dialled an invalSEO靠我id extension. Please try again.".

软件电话 Xlite 没有声音了,出错说找不到声音驱动

分别试验了Kiax ,Linphone. Twinkle

Twinkle好用了. SEO靠我(仍然出错 "无法读 .DCOPserver_asterisk-dev_0; Please check that the dcopserver program is running" 在启动栏 – 这SEO靠我样就好了).继续,测试拨号计划

链接:

Twinkle SoftPhone: http://www.twinklephone.co…

装好Twinkle (and a little prayer) 我们修改SEO靠我#1号拨号计划:

extensions.conf 文件:

[incoming]

; 欢迎

exten => s,1,Background(enterux/welcome)

exten => i,1,PlaybaSEO靠我ck(enterux/invalid-extension)

exten => i,n,Goto(incoming,s,1)

exten => t,1,Playback(enterux/call-timeoSEO靠我ut)

exten => t,n,Playback(enterux/thankyou)

exten => t,n,Hangup()

exten => 0,1,Playback(enterux/connectSEO靠我ing-to-operator)

exten => 0,n,Dial(SIP/0,10,r) ; Operator

exten => 0,n,Playback(enterux/line-not-answeSEO靠我ring)

exten => 0,n,Hangup()

exten => 0,102,Playback(enterux/line-busy)

exten => 0,103,Hangup()

exten => SEO靠我1,1,Playback(enterux/connecting-to-sales)

exten => 1,n,Dial(SIP/1,10,r) ; &连接多个分机号码

exten => 1,n,PlaybSEO靠我ack(enterux/line-not-answering)

exten => 1,n,Hangup()

exten => 1,102,Playback(enterux,line-busy)

exten SEO靠我=> 1,103,Hangup()

exten => 2,1,Playback(enterux/connecting-to-support)

exten => 2,n,Dial(SIP/2,10,r) ;SEO靠我 &连接多个分机号码

exten => 2,n,Playback(enterux/line-not-answering)

exten => 2,n,Hangup()

exten => 2,102,PlaybSEO靠我ack(enterux/line-busy)

exten => 2,103,Hangup()

exten => 202,1,Goto(incoming,s,1)

exten => 201,1,Goto(inSEO靠我coming,s,1)

(参考107页)

sip.conf如下:

[201]

user=201

type=friend

secret=1234

host=dynamic

context=incoming

[202]

usSEO靠我er=202

type=friend

secret=1234

host=dynamic

context=incoming

[1234]

user=1234

type=friend

secret=1234

host=dySEO靠我namic

context=incoming

;用户添加 operator, sales and support

[0]

user=0

type=friend

secret=1234

host=dynamic

conSEO靠我text=incoming

[1]

user=1

type=friend

secret=1234

host=dynamic

context=incoming

[2]

user=2

type=friend

secret=1SEO靠我234

host=dynamic

context=incoming

以下是拨号计划的内容:

系统可接收 0,1,2,201,202.

现在,我们的接线总机连到了201和202上面——就是说,欢迎信息只在拨打20SEO靠我1和202分机时播放。

我们添加了超时、忙碌和没有应答的功能。阅读106页代码。

Ast的设置是,当没有人接听电话的时候,被叫分机就响2声,然后回拨错误消息。如果被叫的分机应答了,ast就接通,两个人可以SEO靠我占用一个全双工通道。

这是个非常简单的配置,只有最基本的应答函数,最基本的呼叫处理和连接两个用户的能力,用Dial()这个应用程序。我们实际测试过,虽然有实质的延迟,2-4秒,就好像是一个人在讲话,另一SEO靠我个人在重复。这确实存在。有能力的话就写几行代码让两个语音通道互连(相似类型或者不同类型)。

现在我们只试验 "incoming" 这一条,还添加了另外的 "internal" 并对这个文件extensiSEO靠我ons.conf 进行了验证:

[incoming]

; Extensions for welcoming caller

exten => s,1,Background(enterux/welcome)

exSEO靠我ten => i,1,Playback(enterux/invalid-extension)

exten => i,n,Goto(incoming,s,1)

exten => t,1,Playback(eSEO靠我nterux/call-timeout)

exten => t,n,Playback(enterux/thankyou)

exten => t,n,Hangup()

exten => 202,1,Goto(SEO靠我incoming,s,1)

exten => 201,1,Goto(incoming,s,1)

; 呼叫正确的分机

exten => 0,1,Playback(enterux/connecting-to-oSEO靠我perator)

exten => 0,n,Dial(SIP/0,10,r) ; Operator

exten => 0,n,Playback(enterux/line-not-answering)

extSEO靠我en => 0,n,Hangup()

exten => 0,102,Playback(enterux/line-busy)

exten => 0,103,Hangup()

exten => 1,1,PlaySEO靠我back(enterux/connecting-to-sales)

exten => 1,n,Dial(SIP/1,10,r) ;

exten => 1,n,Playback(enterux/line-nSEO靠我ot-answering)

exten => 1,n,Hangup()

exten => 1,102,Playback(enterux,line-busy)

exten => 1,103,Hangup()

eSEO靠我xten => 2,1,Playback(enterux/connecting-to-support)

exten => 2,n,Dial(SIP/2,10,r) ; & 连接 SIP/staff_1&SEO靠我Sip/staff_2

exten => 2,n,Playback(enterux/line-not-answering)

exten => 2,n,Hangup()

exten => 2,102,PlaySEO靠我back(enterux/line-busy)

exten => 2,103,Hangup()

[internal]

exten => 0,1,Goto(Internal,0,1)

exten => 1,1,SEO靠我Goto(Internal,1,1)

exten => 2,1,Goto(Internal,2,1)

sip.conf 文件如下所示:

[201]

user=201

type=friend

secret=1234SEO靠我

host=dynamic

context=incoming

[202]

user=202

type=friend

secret=1234

host=dynamic

context=incoming

[1234]

useSEO靠我r=1234

type=friend

secret=1234

host=dynamic

context=incoming

; 0: operator, 1:sales and 2:support

[0]

user=SEO靠我0

type=friend

secret=1234

host=dynamic

context=internal

[1]

user=1

type=friend

secret=1234

host=dynamic

contexSEO靠我t=internal

[2]

user=2

type=friend

secret=1234

host=dynamic

context=internal

0,1 , 2的条款发生了变化从[incoming] 到 [iSEO靠我nternal]

与以前类似,只是现在要使用的是不同的contexts。

—————————————————

在 Asterisk 拨号计划中使用变量

在拨号计划中使用变量

在 asterisk中设置变量:

JOSEO靠我HN=SIP/1

引用变量Asterisk:

exten => 123,1,Dial(${JOHN})

很简单.

注意:不需要大写变量名 – 这里是为了清晰

变量的类型:

全局变量:

所有的context都可以访问SEO靠我的变量。

全局变量在拨号计划的最前面[globals] context中声明.

还可以在拨号计划中声明全局变量:

[global]

JOHN=SIP/1

或者

[some context]

exten => 123SEO靠我,1,SetGlobalVar(JOHN=SIP/1)

全局变量的生命周期是到ast关闭为止。

渠道变量:

渠道变量与特定呼叫或者呼叫通道有关。

渠道变量的生命周期限制在呼叫的范围内.

有许多预定义的渠道变量-SEO靠我 见README.variables 文件 doc/ subdirectory.

设置渠道变量:

exten => 123,1,Set(MAGICNUMBER=42)

环境变量:

提供了通过dialplansSEO靠我访问Unix环境变量的方法.

参考环境变量:

UNIXPATH=${ENV(PATH)}

Asterisk中的模式匹配:

Asterisk 会尝试匹配任何以下划线开头的符号

你可以在模式匹配中使用如下的符号:

XSEO靠我 表示 0 到 9

Z 表示 1 到 9

N 表示 2 到 9

[] 表示范围 (例如, [15-7] 匹配1,5,6 or 7)

. 通配符

举例:

_9. 会匹配所有以9开头的数字,例如 92, 932344SEO靠我,99999,91,等.

_XXX 匹配3个数字的串,每个数字的范围是0到9,例如321, 999,123, 等.

使用匹配模式,:通常手工添加每个可能的分机是非常枯燥乏味的。模式匹配简单多了。

出线中继(SEO靠我Outbound trunk):要让用户可以通过ast网络拨打外面的电话号码,我们可以启用出线中继。

比较好的方案如下:

-> 使用变量名来引用中继名。这可以让我们即时修改中继,不会引起错误

-> 使用编写SEO靠我正确的 context来合理划分拨号计划. 这可以保证系统免受意外,或者恶意的未经授权的使用。

下面看一些函数和条件分支,看看extensions.conf

[incoming]

; s 和 t分机

exteSEO靠我n => s,1,Background(enterux/welcome)

exten => t,1,Hangup()

; 接受对201的呼叫

exten => 201,1,Goto(s,1)

; GotoIfSEO靠我() 函数

exten => 345,1,Set(TEST=greet)

exten => 345,n,GotoIf([{TEST}=greet]?10:20)

; Asterisk 给 GotoIf传递一SEO靠我串参数

exten => 345,10,Playback(weasels-eaten-phonesys)

exten => 345,20,Playback(office-iguanas)

; 倒数,使用 GSEO靠我otoIf() 和命名的优先级

exten => 346,1,Set(COUNT=10)

exten => 346,n(say),SayNumber(${COUNT})

exten => 346,n,SetSEO靠我(COUNT=[{COUNT}-1])

exten => 346,n,GotoIf([{COUNT}>0]?say:thank)

exten => 346,n(thank),Playback(auth-tSEO靠我hankyou)

exten => 346,n,Hangup()

; 基于Caller Id 识别的呼叫拒绝

exten => 347,1,Set(REJECT_NUM=201) ; The number SEO靠我to be rejected (can also be done without a variable)

exten => 347,n,Set(CALLER=${CALLERIDNUM})

exten =SEO靠我> 347,n,GotoIf([{CALLER}=${REJECT_NUM}]?reject-messege:welcome)

exten => 347,n(reject-messege),PlaybaSEO靠我ck(abandon-all-hope)

exten => 347,n,Hangup()

exten => 347,n(welcome),Playback(welcome)

exten => 347,n,HSEO靠我angup()

; 不同的呼叫拒绝示例347

exten => 348,1,GotoIf([{CALLERIDNUM}=201]?30:20)

exten => 348,20,Goto(201,1)

exteSEO靠我n => 348,30,Playback(abandon-all-hope)

exten => 348,n,Hangup()

; 按时间播放语音,利用GotoIfTime()函数

exten => 349,SEO靠我1,Playback(good)

exten => 349,n,GotoIfTime(04:00-11:59,*,*,*?good-morn)

exten => 349,n,GotoIfTime(12:0SEO靠我0-16:59,*,*,*?good-aft)

exten => 349,n,GotoIfTime(17:00-03:59,*,*,*?good-eve)

exten => 349,n(good-mornSEO靠我),Playback(morning)

exten => 349,n(good-aft),Playback(afternoon)

exten => 349,n(good-eve),Playback(eveSEO靠我ning)

exten => 349,n,Hangup()

; Planning on holiday

exten => 350,1,GotoIfTime(*,*,26,jan?closed,s,1)

; 以SEO靠我上的意思是说,如果是1月 26,按照以下的优先级别 1 of s 的close context分机优先级别,否则是open context的 1 of s extension

; 如下所示

exten =SEO靠我> 350,n,Goto(open,s,1)

exten => 350,n,Hangup()

[open]

exten => s,1,Playback(welcome)

exten => s,n,HangupSEO靠我()

[closed]

exten => s,1,Playback(sorry2)

exten => s,n,Hangup()

你可以拨打相应的分机

B2BUA的hardphone call flow

2006-SEO靠我10-25 11:37:03

大中小

基本流程很正常,已经很熟悉

说其中的细节:

B2BUA的方式,就是两个UA背靠背,分别接通两边的会话,做个中间人。

5088@141 ————> PBX 12 ————–>SEO靠我 5010@131

———————->

INVITE 5010@12

TO:5010@12

FROM:5010@12

VIA:141

CONTACT:5088@141

<———————-

100

TO:5010@12

FSEO靠我ROM:5010@12

VIA:141

CONTACT:5010@12

——————->

INVITE 5010@131

TO:5010@131

FROM:5088@12

VIA:12

CONTACT:5088@12SEO靠我

<——————-

180

TO:5010@131

FROM:5088@12

VIA:12

<———————

180

TO:5010@12

FROM:5088@12

VIA:141

CONTACT:5010@12

<————SEO靠我———

200

TO:5010@131

FROM:5088@12

VIA:12

CONTACT:5010@131

———————->

ACK 5010@131

TO:5010@131

FROM:5088@12

VIA:1SEO靠我2

<———————

200

TO:5010@12

FROM:5088@12

VIA:141

CONTACT:5010@12

———————->

ACK 5010@12

TO:5010@12

FROM:5088@12

VISEO靠我A:12

<———————–

BYE 5088@12

TO:5088@12

FROM:5010@12

VIA:131

————————->

200

TO:5088@12

FROM:5010@12

VIA:131

CONTASEO靠我CT:5088@12

<———————

BYE 5088@141

TO:5088@12

FROM:5010@12

VIA:12

———————->

200

TO:5088@12

FROM:5010@12

VIA:12

“SEO靠我”的新闻页面文章、图片、音频、视频等稿件均为自媒体人、第三方机构发布或转载。如稿件涉及版权等问题,请与 我们联系删除或处理,客服邮箱:html5sh@163.com,稿件内容仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同 其观点或证实其内容的真实性。

网站备案号:浙ICP备17034767号-2