﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-一个人的世界-文章分类-Asterisk</title><link>http://www.cnitblog.com/ilk1983/category/6008.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 29 Sep 2011 03:35:47 GMT</lastBuildDate><pubDate>Thu, 29 Sep 2011 03:35:47 GMT</pubDate><ttl>60</ttl><item><title>Asterisk的配置（一）</title><link>http://www.cnitblog.com/ilk1983/articles/33174.html</link><dc:creator>zhbk_ilk</dc:creator><author>zhbk_ilk</author><pubDate>Mon, 10 Sep 2007 00:49:00 GMT</pubDate><guid>http://www.cnitblog.com/ilk1983/articles/33174.html</guid><wfw:comment>http://www.cnitblog.com/ilk1983/comments/33174.html</wfw:comment><comments>http://www.cnitblog.com/ilk1983/articles/33174.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ilk1983/comments/commentRss/33174.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ilk1983/services/trackbacks/33174.html</trackback:ping><description><![CDATA[安装好asterisk之后，开始进行配置，添加了一个sip_additional.conf配置文件<br>sip配置文件如下：<br><br>sip.conf<br><br>################################<br>[general]<br><br>bindport&nbsp;&nbsp;&nbsp; = 5060<br>bindaddr&nbsp;&nbsp;&nbsp; = 0.0.0.0<br>disallow&nbsp;&nbsp;&nbsp; = all<br>allow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = ulaw<br>allow&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = alaw<br>context&nbsp;&nbsp;&nbsp;&nbsp; = from-sip-external<br>callerid&nbsp;&nbsp;&nbsp; = Unknow<br>tos&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0x68<br><br>#include sip_additional.conf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //在sip.conf中包含了sip_additional.conf的配置 <br>###############################<br><br><br><br>sip_additional.conf<br><br>###########################<br>[1001]<br>type&nbsp;&nbsp;&nbsp;&nbsp; = friend<br>secret&nbsp;&nbsp; = 1234<br>record_out = Adhoc<br>record_in&nbsp; = Adhoc<br>qualify&nbsp;&nbsp;&nbsp; = yes<br>port&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 5060<br>nat&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = yes<br>mailbox&nbsp;&nbsp;&nbsp; = 1001@device<br>host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = dynamic<br>dtmfmode&nbsp;&nbsp; = rfc2833<br>dial&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = SIP/1001<br>context&nbsp;&nbsp;&nbsp; = incoming<br>callerid&nbsp;&nbsp; = device&lt;1001&gt;<br>###########################<br><br>配置好了之后重新加载，然后配置SIP终端<br>通过asterisk发现已经注册上了<br>命令如下:<br>asterisk -c&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ；进入控制台<br>*CLI&gt;sip show peers <br>Name/username&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dyn Nat ACL Port&nbsp;&nbsp;&nbsp;&nbsp; Status&nbsp;&nbsp; &nbsp;<br>1001/1001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10.10.16.37&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D&nbsp;&nbsp; N&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5060&nbsp;&nbsp;&nbsp;&nbsp; OK (102 ms)<br>1 sip peers [1 online , 0 offline]
<br><img src ="http://www.cnitblog.com/ilk1983/aggbug/33174.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ilk1983/" target="_blank">zhbk_ilk</a> 2007-09-10 08:49 <a href="http://www.cnitblog.com/ilk1983/articles/33174.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Asterisk主要配置文件目录</title><link>http://www.cnitblog.com/ilk1983/articles/32927.html</link><dc:creator>zhbk_ilk</dc:creator><author>zhbk_ilk</author><pubDate>Tue, 04 Sep 2007 05:18:00 GMT</pubDate><guid>http://www.cnitblog.com/ilk1983/articles/32927.html</guid><wfw:comment>http://www.cnitblog.com/ilk1983/comments/32927.html</wfw:comment><comments>http://www.cnitblog.com/ilk1983/articles/32927.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ilk1983/comments/commentRss/32927.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ilk1983/services/trackbacks/32927.html</trackback:ping><description><![CDATA[<pre class="fragment">[directories]<br>; Make sure these directories have the right permissions if not<br>; running Asterisk as root <br><br>; Where the configuration files (except for this one) are located<br>astetcdir =&gt; /etc/asterisk<br><br>; Where the Asterisk loadable modules are located<br>astmoddir =&gt; /usr/lib/asterisk/modules<br><br>; Where additional 'library' elements (scripts, etc.) are located<br>astvarlibdir =&gt; /var/lib/asterisk<br><br>; Where AGI scripts/programs are located<br>astagidir =&gt; /var/lib/asterisk/agi-bin<br><br>; Where spool directories are located<br>; Voicemail, monitor, dictation and other apps will create files here<br>; and outgoing call files (used with pbx_spool) must be placed here<br>astspooldir =&gt; /var/spool/asterisk<br><br>; Where the Asterisk process ID (pid) file should be created<br>astrundir =&gt; /var/run/asterisk<br><br>; Where the Asterisk log files should be created<br>astlogdir =&gt; /var/log/asterisk</pre>
<br><img src ="http://www.cnitblog.com/ilk1983/aggbug/32927.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ilk1983/" target="_blank">zhbk_ilk</a> 2007-09-04 13:18 <a href="http://www.cnitblog.com/ilk1983/articles/32927.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>安装Asterisk</title><link>http://www.cnitblog.com/ilk1983/articles/32713.html</link><dc:creator>zhbk_ilk</dc:creator><author>zhbk_ilk</author><pubDate>Fri, 31 Aug 2007 09:26:00 GMT</pubDate><guid>http://www.cnitblog.com/ilk1983/articles/32713.html</guid><wfw:comment>http://www.cnitblog.com/ilk1983/comments/32713.html</wfw:comment><comments>http://www.cnitblog.com/ilk1983/articles/32713.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ilk1983/comments/commentRss/32713.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ilk1983/services/trackbacks/32713.html</trackback:ping><description><![CDATA[准备工作：<br>安装好CentOS，注意选择Linux类型的时候要选择Other Linux 2.6x kernel，否则装不上CentOS<br><br>在http://www.asterisk.org/下载Asterisk 1.2.24，然后用SSH上传到CentOS<br>也可以在CentOS下通过wget http://downloads.digium.com/pub/asterisk/releases/asterisk-1.2.24.tar.gz下载<br><br>一般都将asterisk-1.2.24.tar.gz放到/usr/src/目录下<br><br>然后解压<br><code>tar -xvzf asterisk-1.2.24.tar.gz<br><br>cd asterisk-1.2.24.tar.gz<br><br><br>然后检查下列包是否都已安装</code><br>&nbsp;gcc，and associated -devel<br>&nbsp;ncurses, and associated -devel<br>&nbsp;openssl, and associated -devel<br>&nbsp;bison, and associated -devel (1.0.X only)<br><br>如果没有安装就用yum安装一把<br>yum -y install 包名<br><br>一切准备好之后<br>make<br>make install<br>make samples<br><br>OK，Asterisk基本就安装好了。<br><br><br><br><br><img src ="http://www.cnitblog.com/ilk1983/aggbug/32713.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ilk1983/" target="_blank">zhbk_ilk</a> 2007-08-31 17:26 <a href="http://www.cnitblog.com/ilk1983/articles/32713.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转载】 Asterisk拨号方案的配置</title><link>http://www.cnitblog.com/ilk1983/articles/32619.html</link><dc:creator>zhbk_ilk</dc:creator><author>zhbk_ilk</author><pubDate>Thu, 30 Aug 2007 02:31:00 GMT</pubDate><guid>http://www.cnitblog.com/ilk1983/articles/32619.html</guid><wfw:comment>http://www.cnitblog.com/ilk1983/comments/32619.html</wfw:comment><comments>http://www.cnitblog.com/ilk1983/articles/32619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/ilk1983/comments/commentRss/32619.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/ilk1983/services/trackbacks/32619.html</trackback:ping><description><![CDATA[<div>配置文件 &#8220;extensions.conf&#8221; 包含了Asterisk的拨号方案（dial &nbsp;plan）。它的所有操作的控制和执行流程的主要方案。它控制呼入和呼出是如何被处理和路由。这里是你配置连接行为的地方。</div>
<div>&nbsp;</div>
<div>"extensions.conf"
的内容以&#8220;节&#8221;的形式组织。它可以静态设置和定义，作为上下文被执行。设置节有general 和 globals
两种形式，由系统管理员完全定义。一种特殊类型的&#8220;contexts&#8221;是
macros，由用户自定义，命名前缀是&#8220;macro-&#8221;,这是可重用的模式，如同编程语言里的&#8220;过程&#8221;。extensions.conf中每一节都由
[]中的节名开始。这使得extensions.conf具有和windows世界里传统的ini文件非常相似的结构。</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>Asterisk
v1.2中的新东西： 默认情况下，有一个新的选项&#8220;autofallthrough&#8221;被设置成了&#8220;yes&#8221;.
这个设置改变了以前的规则使得遇忙，阻塞，挂起的呼叫被立即终止。如果你正在为IVR写一个extension.你必须使用&#8220;WaitExten&#8221;应用程
序。</div>
<div>&nbsp;</div>
<div>[general]&nbsp;&nbsp; extentions.conf文件的顶部，配置几个设置。</div>
<div>[globals]&nbsp; 接着，在[globals]节中，你可以定义全局变量/常量，以及他们的初始值。</div>
<div>&nbsp;</div>
<div>Contexts 和 Extensions</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; 在[general]和[globals]之后，extentions.conf文件的剩余部分就是dialplan的定义了。</div>
<div>dialplan是由contexts的集合组成的。每个context是由extensions的集合组成。</div>
<div>&nbsp;</div>
<div>Extension 模式</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; 当你在context中定义extension时，你不仅使用文字数字，字母，还要匹配extension模式。</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>Context包括的内容</div>
<div>&nbsp;&nbsp; 一个extension context可以嵌套另一个，参考一下下面的范例：</div>
<div>&nbsp;<span style="font-family: monospace;">Context&nbsp;"default":</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Mark&nbsp;Spencer</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Wil&nbsp;Meadows</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Operator&nbsp;</span><br><br><br><span style="font-family: monospace;">Context&nbsp;"local":</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_9NXXXXXX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Local&nbsp;calls</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;=&gt;&nbsp;"default"&nbsp;</span><br><br><span style="font-family: monospace;">Context&nbsp;"longdistance":</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extension&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Description</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_91NXXNXXXXXX&nbsp;&nbsp;&nbsp;Long&nbsp;distance&nbsp;calls</span><br><span style="font-family: monospace;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;=&gt;&nbsp;"local"</span></div>
<div>&nbsp;</div>
<div><span style="font-family: monospace;">这里我们定义三种 extension</span></div>
<div>第一种content： default 允许拨打三个电话extension: Mark, Wil, and the Operator.</div>
<div>&nbsp;</div>
<div>第二种content： local&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个扩展模式：允许拨打7位数字号码（本地呼叫），同时也包括</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8220;default&#8221; context,这样也允许用户拨打 Mark，Wil，或者是操作员。</div>
<div>&nbsp;</div>
<div>第三种content： longdistance 一种允许拨打长途呼叫的扩展模式。它同时也包括上述的两种模式</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; （default 和 local）</div>
<div>&nbsp;使用扩展context,你可以谨慎的控制哪些人使用计费服务（内线，市话，长途）</div>
<div>&nbsp;</div>
<div>如果一个拨叫号码匹配多个模式，你可以参阅一下&#8220;扩展模式的排序&#8221;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>当Asterisk
从一个通道上收到一个呼入连接，Asterisk从context定义中查询通道命令。context根据用户拨打的
extension定义了不同的命令集。例如，如果用户拨打的是&#8220;123&#8221;，context可以提供提供一套命令集来指导如何去做。如果用户拨&#8220;9&#8221;，
context可以提供另一套命令集来指导做什么，同时context可以提供一套命令集来控制用户拨打的任何以&#8220;555&#8221;开头的号码。</div>
<div>&nbsp;</div>
<div>某些类型的友好连接，比如来自外线的呼入，用户没有拨打extension,在这种情况下，...</div>
<div>&nbsp;</div>
<div>比
方说，举个例子，你有一个信道&#8220;Zap/1&#8221;，它连接到你办公室中的一个电话手持设备。假如在Zap信道的的配置文件
(zapata.conf)中，你为Zap信道1定义了context=john.这样当你使用那个手持设备拨打一个号码时，Asterisk在
extension.conf中寻找名为&#8220;john&#8221;的context，找出它所应该做的(工作)。</div>
<div>在extensions.conf中定义一个名为john的context，应该以下面的样子开始:</div>
<div>&nbsp;</div>
<div>[john]</div>
<div>&nbsp;</div>
<div>每一个context,你需要定义一个或者多个extensions,Asterisk根据不同的号码拨叫用来比较。</div>
<div>每个extension,通过命令集列表告诉了Asterisk应该做什么。</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;Extensions</div>
<div>&nbsp;</div>
<div>extension 有两种类型： literal 和 pattern</div>
<div>&nbsp;</div>
<div>literal
extension
可以是一个号码，就像123。它也可以包括出现在传统电话中的标准的符号*和#，因此，12#89*是一个有效的extension.某些电话拨号盘有一
些特殊的标着 A，B，C 或者 D 的
DTMF键。extension也可以使用这些字母来定义。实际上，extension的名字可以包含任何字母和数字以及某些标点符号。</div>
<div>&nbsp;&nbsp;&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
extension名字是大小写敏感的？是的。有时是大小写敏感的，有时不是。当用户使用他们的VoIP电话拨打名为"OFFICE"的
&nbsp;extension
时，Asterisk不会执行名为&#8220;Office&#8221;的extension中定义的命令。另一方面，extension的名字不是大小写敏感的，因此你不能
在一个content中</div>
<div>定义仅仅是大小写不同的extension.因此你不能为&#8220;OFFICE&#8221;extension定义一套程序集，同时为"office"extension也定义一套程序集。</div>
<div>&nbsp;</div>
<div>预定义的Extension名称。</div>
<div>Asterisk为特定的目标指定了一些extension名称。</div>
<ul>
    <li>i:Invalid </li>
    <li>s:Start </li>
    <li>h:Hangup </li>
    <li>t:Timeout </li>
    <li>T:AbsoluteTimeout </li>
    <li>o:Operator </li>
</ul>
<p>详细信息： <a  href="http://www.voip-info.org/wiki/view/Asterisk+standard+extensions" title="" onfocus="undefined"><u><font color="#0000ff">Asterisk standard extensions</font></u></a><br><br><strong>定义Extension</strong></p>
<p>不同于传统的PBX，extension是和电话，接口，菜单等联系在一起的。在Asterisk中，一个extension是定义成命令执行列表的。就像Dial和GotoIf命令，具有基于不同的条件转到某个地方的能力。</p>
<p>&nbsp;</p>
<p>当一个extension被拨叫，标为优先级1的命令被执行，紧接着是2，等等。</p>
<p>这将一直持续到：</p>
<ul>
    <li>呼叫被挂起。 </li>
    <li>命令返回代码-1（表示失败） </li>
    <li>下一个更高优先级的命令不存在。（注意：Asterisk不会跳过丢失的优先级别） </li>
    <li>呼叫被路由到一个新的extension </li>
</ul>
<p>&nbsp;</p>
<p>extension.conf 文件中的句法，一个extension执行的每一步是下面这个格式的：</p>
<p>&nbsp;</p>
<p><em>exten = extension,priority,Command(parameters)</em></p>
<p>&nbsp;</p>
<p>这里等号也可以用一个箭头来修饰，就是&#8220;=〉&#8221;，一种在很多例子中经常可以被看到的格式。</p>
<p>&nbsp;
好了，假如一个&#8220;context&#8221;，名为&#8220;john&#8221;。在每一个context中，你可以定义一个或多个
extension.每一个extension中，你定义一组命令集。你如何定义这些extension和命令？你需要一个文本编辑器来编辑
extensions.conf文件。当然，也可以使用某些不错的工具：<a  href="http://www.voip-info.org/wiki/index.php?page=Asterisk+GUI" title="" onfocus="undefined"><u><font color="#0000ff">GUI tool</font></u></a>.</p>
<p>&nbsp;</p>
<p>extension中的执行步骤和命令行组件是下面的样子：</p>
<ul>
    <li><em>extension&nbsp;</em> 是extension的标签，可以是字符串常量或者是动态的模式-匹配许多可能的电话号码。 </li>
    <li><em>priority</em>
    通常是正数（特例参见注意）。它是一个extension中的每个命令行的排序号码。第一个可执行命令的priority值为&#8220;1&#8221;。因此当
    Asterisk将一个呼叫转入一个extension时，它将首先寻找priority值为1的命令。如果没有优先值为1的行，那么这个
    extension将不会匹配这个拨入的号码。当执行完优先值为1的命令之后，Asterisk将把priority的值增加到2，除非命令本身决定下一
    个要执行的优先值。如果extension中没有定义下一个priority,Asterisk将完成对这个
    extension的处理，即使是存在一个比丢失的命令的优先级更高的命令。 </li>
</ul>
<p>注意：特殊情况下，字符串也会被用于指定优先级（参见 <a  href="http://www.voip-info.org/wiki/view/Asterisk+standard+extensions" title="" onfocus="undefined"><u><font color="#0000ff">Asterisk standard extensions</font></u></a>）。</p>
<ul>
    <li><em>command</em> 是命令的名称（也被称为&#8220;应用程序&#8221;）。详见 <a  href="http://www.voip-info.org/wiki/index.php?page=Asterisk+-+documentation+of+application+commands" title="" onfocus="undefined"><u><font color="#0000ff">Asterisk Commands List</font></u></a>. </li>
    <li><em>parameters</em> 依赖于命令。某些命令没有参数，在这种情况下省略参数。 </li>
</ul>
<p><strong>范例</strong></p>
<p>&nbsp;&nbsp; exten=&gt;123,1,Answer</p>
<p>&nbsp;&nbsp; exten=&gt;123,2,Playback(tt-weasels)</p>
<p>&nbsp;&nbsp; exten=&gt;123,3,Voicemail(44)</p>
<p>&nbsp;&nbsp; exten=&gt;123,4,Hangup</p>
<p>这是单个名为&#8220;123&#8221;的extension的定义。但一个呼叫被安排到 extension 123,Asterisk将自己回答这个呼叫，播放一个名为&#8220;tt-weasels&#8221;的声音文件，提示用户是否留下语音邮件，然后挂断电话。</p>
<p>应该注意的是，Asterisk没有关注这几行代码在extensions.conf文件中的顺序。你可以以不同的顺序混合这几行代码，就像下面的例子，它与之前的例子没有什么不同，因为Asterisk使用<em>priority</em>来标示每一行的执行顺序。</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;exten=&gt;123,4,Hangup</p>
<p>&nbsp;&nbsp; exten=&gt;123,1,Answer</p>
<p>&nbsp;&nbsp; exten=&gt;123,3,Voicemail(44)</p>
<p>&nbsp;&nbsp; exten=&gt;123,2,Playback(tt-weasels)</p>
<p>&nbsp;&nbsp;<br>定义extension时的其它选项包括被称为&#8220;ex-girlfriend&#8221;逻辑的选项。这个逻辑将匹配extension,不管是来自外部还是内部，关键是看拨入人的呼叫ID(caller id).例如：</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exten=&gt;123/100,1,Answer()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exten=&gt;123/100,2,Playback(tt-weasels)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exten=&gt;123/100,3,Voicemail(123)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exten=&gt;123/100,4,Hangup()</p>
<p>&nbsp;&nbsp;</p>
<p>只有当呼入人的ID号为100时，这个extension才被匹配，并且执行接下来的选项。这个也可以通过模式匹配来完成，如下所示：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; exten=&gt;1234/_256NXXXXXX,1,Answer()</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; and so on ...</p>
<p>&nbsp;</p>
<p>只有以256开头的Caller ID才会匹配&#8220;1234&#8221;这个模式。这在保持本地呼叫时是很有用的。</p>
<p>&nbsp;</p>
<p>你甚至可以做这样的事情：</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; exten=&gt;s,1,Answer</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; exten=&gt;s/9184238080,2,Set(CALLERID(name)=EVIL BASTARD)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; exten=&gt;s,2,Set(CALLERID(name)=Good Person)</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; exten=&gt;s,3,Dial(SIP/goodperson)</p>
<p>&nbsp;</p>
<p>定义context的语法关键字有： exten,include,ignorepat以及switch</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 详见：<a  href="http://www.voip-info.org/wiki/index.php?page=Asterisk+Extension+Matching" title="" onfocus="undefined"><u><font color="#0000ff">How Does Asterisk Handle "Match As You Go" Dialing?</font></u></a></p>
<p>&nbsp;</p>
<p>这种extension的排序办法存在的一个弊端是-如果你需要插入或删除一个priority时，你必须手动重新全部编号。我正在搞这么一个工具用来处理这件事情，感兴趣的话，可以尝试一下:<a  href="http://www.asteriskgui.com/index.php?get=utilities-dialplan" onfocus="undefined"><u><font color="#0000ff">give it a try</font></u></a></p>
<p>&nbsp;</p>
<p>Asterisk1.2以后的版本有一个新的方法处理这件事情。第一个优先级给它编号，接下来的优先级给它命名成&#8220;n&#8221;. 深入的了解：<a  href="http://www.voip-info.org/wiki/index.php?page=Asterisk%20priorities" onfocus="undefined"><u><font color="#0000ff">Asterisk Priorities</font></u></a></p>
<p>&nbsp;</p>
<p><strong>变量和表达式</strong></p>
<p>支持变量的结构 ${VARIABLENAME}</p>
<p>使用表达式的结构${EXPRESSION}&nbsp;,这里表达式可以是常用表达式，比较表达式，加法表达式等等。</p>
<p>标准变量见： <a  href="http://www.voip-info.org/wiki/view/Asterisk+variables" title="" onfocus="undefined"><u><font color="#0000ff">Asterisk variables</font></u></a> 。表达式的描述见： <a  href="http://www.voip-info.org/wiki/view/Asterisk+readme.variables" title="" onfocus="undefined"><u><font color="#0000ff">Asterisk readme.variables</font></u></a></p>
<p>&nbsp;</p>
<p>extensions.conf 文件中的全局变量和信道变量的更多信息，见<a  href="http://www.voip-info.org/wiki/index.php?page=Asterisk+variables" title="" onfocus="undefined"><strong><u><font color="#0000ff">Using Variables in Asterisk Dialplans</font></u></strong></a><br><br>1.2版本中的新的拨号功能，见：<a  href="http://www.voip-info.org/wiki/index.php?page=Asterisk+functions" title="" onfocus="undefined"><strong><u><font color="#0000ff">Using Functions in Asterisk Dialplans</font></u></strong></a></p>
<p>&nbsp;</p>
<p><strong>载入</strong></p>
<p>在设置发生了改变之后，如果想重新加载拨号方案，无需加载所有的Asterisk配置文件。可以使用extension加载命令：<a  href="http://www.voip-info.org/wiki/view/Asterisk+CLI" title="" onfocus="undefined"><u><font color="#0000ff">Asterisk CLI</font></u></a></p>
<p>&nbsp;</p>
<p><strong>一个大文件还是几个小文件？</strong></p>
<p>当在extension.conf文件中使用 <strong>#include&lt;filename&gt;</strong> 声明时，包含了其它的文件。用这个办法你可以启动这样一个系统：extensions.conf是主文件，<strong>users.conf</strong>包含你的本地用户，<strong>services.conf</strong>包含各种服务-例如会议系统。使用这个方法，拨号方案可能更容易维护。<strong>#include&lt;filename&gt;</strong>声明不同于<strong>include&lt;context&gt;</strong>声明。<strong>#include</strong>声明在所有的配置文件中都可以使用。</p>
<p>&nbsp;</p>
<p><strong>转到其它的Asterisk</strong></p>
<p>&nbsp;</p>
<p>语法：</p>
<p>[iaxprovider]</p>
<p>switch=&gt;IAX2/user:[key]@server/context</p>
<p>&nbsp;</p>
<p>指定转到其它的服务器。<strong>user</strong> 和 <strong>key</strong> 需要在被呼入的服务器的iax.conf文件中定义。</p>
<p>&nbsp;</p>
<p><strong>context</strong>是被转入的服务器的extensions.conf文件中的context.</p>
<p>例子： <a  href="http://www.voip-info.org/wiki/view/Asterisk+-+dual+servers" title="" onfocus="undefined"><u><font color="#0000ff">Asterisk - dual servers</font></u></a></p>
<p>&nbsp;</p>
<p><strong>从外部控制 extensions.conf</strong></p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <a  href="http://www.voip-info.org/wiki/view/Asterisk+extensions+from+mysql" title="" onfocus="undefined"><u><font color="#0000ff">Asterisk extensions from mysql</font></u></a></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有的 .conf 文件都可以使用 #include 声明包含另一个.conf 文件。</p>
<p><strong>使用范例：</strong></p>
<p>&nbsp;#include "my-extra-config-file"</p>
<p>[globals]</p>
<p>ALL= Zap/1&amp;SIP/1000&amp;SIP/1001</p>
<p>&nbsp;</p>
<p>[default]</p>
<p>exten=&gt;s,1,Answer</p>
<p>exten=&gt;s,2,Playback(welcome-message)</p>
<p>exten=&gt;s,3,Goto(context-in-include-file,s,1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;;go to include 文件中定义的 context</p>
<p>：</p>
<p>：</p>
<p>&nbsp;</p>
<p><strong>范例：</strong></p>
<p>使用宏创建extension</p>
<p>[globals]</p>
<p>PHONE1=Zap/1</p>
<p>PHONE2=SIP/6002</p>
<p>&nbsp;</p>
<p>[macro-oneline]</p>
<p>exten=&gt;s,1,Dial(${ARG1},20,t)</p>
<p>exten=&gt;s,2,Voicemail(u${MACRO_EXTEN})</p>
<p>exten=&gt;s,3,Hangup</p>
<p>exten=&gt;s,102,Voicemail(b${MACRO_EXTEN})</p>
<p>exten=&gt;s,103,Hangup</p>
<p>&nbsp;</p>
<p>[local]</p>
<p>exten=&gt;6601,1,Macro(oneline,${PHONE1})</p>
<p>exten=&gt;6602,1,Macro(oneline,${PHONE2}) <br></p><img src ="http://www.cnitblog.com/ilk1983/aggbug/32619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/ilk1983/" target="_blank">zhbk_ilk</a> 2007-08-30 10:31 <a href="http://www.cnitblog.com/ilk1983/articles/32619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>