freeswitch dialplan 笔记

本文来自csdn lidphttp://blog.csdn.net/perfectpdl,转载注明出处,谢谢

我建了一个 Freeswitch 内核研究 交流群, 45211986, 欢迎加入, 另外,提供基于SIP的通信服务器及客户端解决方案,

承接 sip/ims 视频客户端开发,支持接入sip软交换,ims核心网,支持 语音,视频,即时通信功能,视频格式支持 h263,h264,mpeg4 软编软解,提供硬件编解码接口对接,提供服务器,有兴趣请联系我。


Freeswitch包含xml 格式dialplan,asterisk likedialplan以及外部语言接口的dialplan,

Dialplan放在conf/dialplan目录,由三个主要文件组成:

default.xml—The primary FreeSWITCHDialplan configuration

public.xml—Handles calls coming in toFreeSWITCH from another location

features.xml—A special context for handlingspecific dialing features

default/—Files in this directory getincluded in the default context

public/—Filesin this directory get included in the public context

Xml格式dialplan从高到低分group ,Context,extenstion,级别.Group是Context的集合,

每个Context一个或者多个extenstion的组合,是一个逻辑上的概念,extension 实际上也是一个逻辑上的概念,他并不是传统pbx上分机的概念,一个extension 代表一个小的,根据被叫号码指定的一个功能集合,一个extension被其name唯一标示,freeswitch默认配置包含三个Context, 名字分别为default,public和features,default为主dialplan,注册到freeswitch的分机会被路由到此context,大部分都在这里实现,public是从外部(未注册)或者那些未认证的客户端呼叫到freeswitch时采用的Context,features context是一些呼叫特性的实现,每个extension是根据条件执行的一系列application,一般是根据被叫号码指定的一系列规则,这些application 构成了可编程pbx的基础,context, extension,application(action)关系如下:

每个进入freeswitch的呼叫都在freeswitch里预先定义了其 context,DialPlan,及extenstion,这些规则指定了如何路由这个呼叫,系统默认xml dialplan的context为default.

/usr/local/freeswitch/conf/dialplan/default.xml

为freeswitch内部分机(验证)的默认dialplan,Context name 为default,里面包含许多例子

此文件同时包括/usr/local/freeswitch/conf/dialplan/default/*.xml目录下的所有文件,

所以如果想在default context下添加自己的dialplan,令写一个xml放在 default目录即可。

另外,如果想添加自己的context,可以在/usr/local/freeswitch/conf/dialplan/ 添加一个xml文件,

与default.xml类似,/usr/local/freeswitch/conf/dialplan/public.xml为非注册到freeswitch的终端呼入的dialplan,Context 名为 public,/usr/local/freeswitch/conf/dialplan/public/目录可以添加context为public的extension.

在xml配置文件里包含其他目录下文件的方法为用宏X-PRE-PROCESS,如下例子包含default目录下的所有xml文件到此xml文件。

<X-PRE-PROCESS cmd="include"data="default/*.xml"/>

Freeswitch默认提供了大量测试demo,根据被叫号码对应不同功能,列表如下:

Extension:

Function:

1000—1019

Local Extensions

** + Extension Number

Intercept a ringing phone (that is, "call pickup")

2000

Sample call group: Sales

2001

Sample call group: Support

2002

Sample call group: Billing

3000-3399

Sample conference rooms

4000 or *98

Retrieve voicemail

5000

Demo IVR

5900

FIFO queue park

5901

FIFO queue retrieve

6000

Valet park retrieval, manual

6001-6099

Valet park/retrieval, automatic

9178

Example fax receive

9179

Example fax transmit

9180

Ring test, far end generates ring tone

9181

Ring test, send U.K. ring tone

9182

Ring test, send music as ring tone

9183

Answer, then send U.K. ring tone

9184

Answer, then send music as ring tone

9191

ClueCon registration

9192

Information dump

9195

Delayed echo test

9196

Echo test

9197

Milliwatt tone (test signal quality)

9198

Tetris

9664

Music on hold

这些功能的实现默认都在default.xml中。

Xml dialplan大量使用兼容perl的正则表达式,大多用在${destination_number}的比较上,

常用的如

^789 --------------------------匹配与789开头的

789$ ---------------------------匹配以789结尾的

\d-------------------------------匹配 0-9任意数字

^\d$----------------------------以任意数字开头的

^\d{3}$ ---------------------匹配以三个数字开头的

^(\d{5})$--------------------匹配以五个数字开头的,并把变量保存到$1中

^(9\d{10}|123)$ 匹配以123开头或者以9,加上10个数字开头

等等。

另外,freeswitch提供控制台命令regex,可以测试指定字符串是否与某个模式匹配,

格式为regex 字符串|模式,如:

freeswitch@internal> regex1234|^\d{4}

返回true.

你可能感兴趣的:(switch)