freepbx-使用指南(中文)


1 FreePBX 使用指南 企业开源语音通信解决方案 原著作者:Alex Robar 翻译: James.zhu James.zhu@hiastar.com zhulizhong@gmail.com QQ: 522137361 2 www.hiastar.com 深圳 星昊通科技 感谢家人的理解和支持,两个月内没有时间陪伴你们! 感谢Asterisk,FreePBX 开发人员的工作! 出版说明: 本书是根据FreePBX 英文书籍翻译而成,作为开源技术推广教程,不作为商业销售用途。 相关Asterisk,elastix,FreePBX的技术问题,请登录 www.voip88.com 获得免费技术帮助。 目录 第一章 安装 FreePBX ...................................................................................................................... 13 在 CentOS 5.2 环境下安装 FreePBX ....................................................................................... 13 安装支持包 ..................................................................................................................... 14 设置数据库 ..................................................................................................................... 18 设置文件访问权限 ......................................................................................................... 20 FreePBX 基本安装 ........................................................................................................... 21 在 Ubuntu Server 8.10 环境下安装 FreePBX .......................................................................... 23 安装必要的支持包 ......................................................................................................... 24 设置数据库 ..................................................................................................................... 26 设置文件访问权限 ......................................................................................................... 28 FreePBX 基本安装 ........................................................................................................... 29 总结 ......................................................................................................................................... 31 第二章 模块管理维护 .................................................................................................................... 32 通过在线代码仓库更新模块 ................................................................................................. 33 通过在线数据仓库安装新模块插件...................................................................................... 39 从文件安装更新模块 ............................................................................................................. 42 总结 ......................................................................................................................................... 44 第三章 设备和分机 ........................................................................................................................ 46 分机工作模式 ......................................................................................................................... 46 终端类型 ......................................................................................................................... 49 SIP 终端 .................................................................................................................... 49 IAX2 终端 ................................................................................................................. 49 Zap (DAHDI) FXS 终端接口 ...................................................................................... 49 自定义终端 ............................................................................................................. 50 一般终端设置域 ............................................................................................................. 50 一般全局分机/用户设置域 .................................................................................... 50 终端基本设置项 ..................................................................................................... 53 SIP/IAX2 基本配置项 ............................................................................................... 53 其他 SIP 域 .............................................................................................................. 54 语音编码转换 ......................................................................................................... 57 额外的 IAX2 域 ........................................................................................................ 59 一般 Zap/Dahdi 选项 ............................................................................................... 60 额外 Zap 设置选项 .................................................................................................. 60 一般自定义域 ......................................................................................................... 62 在 Extensions 模式下创建新分机 .................................................................................. 63 为 Extensions 模式设置 FreePBX ............................................................................ 63 设置分机 ................................................................................................................. 64 在 DeviceAndUser 模式下创建分机 ............................................................................... 67 DeviceAndUser 下配置 FreePBX .............................................................................. 67 设置用户 ................................................................................................................. 68 设置设备 ................................................................................................................. 70 语音邮箱设置 ................................................................................................................. 73 语音邮箱发送选项 ................................................................................................. 73 管理语音邮箱信息 ................................................................................................. 75 目录列表 ................................................................................................................. 78 总结 ......................................................................................................................................... 79 第四章 中继 .................................................................................................................................... 80 中继类型 ................................................................................................................................. 80 设置一个新中继 ..................................................................................................................... 82 一般中继设置域 ............................................................................................................. 83 Zap/Dahdi 中继 ................................................................................................................ 86 IAX2 和 SIP 中继 .............................................................................................................. 87 ENUM 中继 ...................................................................................................................... 89 DUNDi 中继 ..................................................................................................................... 89 自定义中继 ..................................................................................................................... 90 检查中继状态 ......................................................................................................................... 91 使用 Asterisk CLI,检测中继状态 .................................................................................. 91 通过 FreePBX 脚本语言检测中继状态 .......................................................................... 94 总结 ......................................................................................................................................... 95 挂断呼叫 ................................................................................................................................. 97 分机和语音邮箱 ..................................................................................................................... 98 振铃组 ..................................................................................................................................... 99 电话会议 ............................................................................................................................... 103 昼夜控制模式 ....................................................................................................................... 106 电话薄 ................................................................................................................................... 108 总结 ....................................................................................................................................... 110 第六章 高级呼入目的地 .............................................................................................................. 112 呼叫队列 ............................................................................................................................... 112 队列优先级 ................................................................................................................... 113 队列 ............................................................................................................................... 115 添加队列 ............................................................................................................... 116 队列选项 ............................................................................................................... 118 呼叫方队列位置播报 ........................................................................................... 122 周期播报 ............................................................................................................... 123 时间条件控制 ....................................................................................................................... 124 时间组 ........................................................................................................................... 124 IVR (数字接线员) ................................................................................................................... 129 总结 ....................................................................................................................................... 133 第七章 呼叫路由 .......................................................................................................................... 134 呼入路由 ............................................................................................................................... 134 呼入路由优先级 ........................................................................................................... 137 默认分机随行和 VmX Locater .............................................................................................. 140 默认的分机随行 ........................................................................................................... 141 VmX Locater ................................................................................................................... 145 呼出路由和最低资费路由 ................................................................................................... 147 总结 ....................................................................................................................................... 152 第八章 电话录音 .......................................................................................................................... 154 录音格式 ............................................................................................................................... 155 录音过程中的编码转换问题 ....................................................................................... 156 基本录音选项 ....................................................................................................................... 156 电话录音 ............................................................................................................................... 157 对分机进行录音 ........................................................................................................... 158 对队列录音 ................................................................................................................... 159 对会议进行录音 ........................................................................................................... 161 录音文件维护 ....................................................................................................................... 162 使用 cron ....................................................................................................................... 164 总结 ....................................................................................................................................... 166 第九章 自定义你的 PBX ............................................................................................................... 169 自定义音乐等待 ................................................................................................................... 169 使用音乐等待语音文件 ............................................................................................... 170 使用媒体流音乐等待文件 ........................................................................................... 172 自定义语音提示 ................................................................................................................... 175 录制自定义语音提示文件 ........................................................................................... 175 合并现有的语音文件 ................................................................................................... 177 目录查询选项 ....................................................................................................................... 179 自定义热键功能码 ............................................................................................................... 180 回拨 ....................................................................................................................................... 182 直接拨入系统访问 (DISA)..................................................................................................... 185 CallerID 查找源 ...................................................................................................................... 188 HTTP 源类型 .................................................................................................................. 192 MySQL 源类型 ....................................................................................................................... 194 PIN Sets .................................................................................................................................. 195 其他应用模块 ....................................................................................................................... 198 其他目的地 ........................................................................................................................... 200 总结 ....................................................................................................................................... 203 第十章 系统保护,备份和还原 ................................................................................................... 206 系统保护 ............................................................................................................................... 206 不间断电源 ................................................................................................................... 207 冗余设备 ....................................................................................................................... 207 冗余服务器 ................................................................................................................... 207 电源浪涌保护 ............................................................................................................... 209 系统备份 ............................................................................................................................... 209 设置备份 ....................................................................................................................... 210 维护和保存备份文件 ........................................................................................................... 213 如何维护备份 ............................................................................................................... 213 保护备份文件 ............................................................................................................... 214 还原文件 ............................................................................................................................... 214 总结 ....................................................................................................................................... 217 第十一章 安全和访问控制........................................................................................................... 218 系统软件包 ........................................................................................................................... 218 更新 Ubuntu 服务器 ..................................................................................................... 219 更新 CentOS .................................................................................................................. 219 维护 Asterisk 版本 ................................................................................................................. 220 MySQL 安全设置 ................................................................................................................... 222 MySQL 密码 ................................................................................................................... 222 删除历史记录 ............................................................................................................... 223 关闭远程访问 MySQL ................................................................................................... 223 远程访问和关闭服务 ........................................................................................................... 223 修改端口号 ................................................................................................................... 224 使用 iptables 限制访问 ................................................................................................. 224 VPN 或者 SSH 隧道 ........................................................................................................ 225 Linux 环境下的 SSH 隧道 ...................................................................................... 225 Windows 环境下的 SSH 隧道 ............................................................................... 226 FreePBX 的管理员帐号 ......................................................................................................... 229 启用管理员帐号认证 ................................................................................................... 229 管理管理员帐号和权限 ............................................................................................... 230 总结 ....................................................................................................................................... 232 附录 A FreePBX 模块 .................................................................................................................... 234 基本模块 ............................................................................................................................... 234 呼入控制 ............................................................................................................................... 236 内部选项或者配置 ............................................................................................................... 237 支持 ....................................................................................................................................... 239 系统管理 ............................................................................................................................... 239 第三方模块 ................................................................................................................... 242 附录 B 功能热键 ........................................................................................................................... 244 黑名单 ................................................................................................................................... 244 呼叫前转 ............................................................................................................................... 245 呼叫等待 ............................................................................................................................... 246 核心 ....................................................................................................................................... 246 昼夜模式 ............................................................................................................................... 248 口述录音 ............................................................................................................................... 248 免打扰 ................................................................................................................................... 249 分机随行 ............................................................................................................................... 249 对讲 ....................................................................................................................................... 250 电话薄目录 ........................................................................................................................... 250 录音 ....................................................................................................................................... 252 快速拨号 ............................................................................................................................... 252 语音邮箱 ............................................................................................................................... 253 附录 C Voicemail.conf 选项 ........................................................................................................... 255 附录 D 一般中继配置 .................................................................................................................. 261 前言 FreePBX 是一款强大的语音通信解决方案,帮助管理员利用Asterisk和开源的FreePBX搭 建,管理安装,配置和维护企业级的IPPBX。此书涵盖的内容包括服务器安装到配置 PBX的分机,语音邮件,呼叫路由,数字接线员和其他的功能模块。 每个章节讨论一些特定的FreePBX功能。此章节介绍了一步步的安装步骤设置和每个 功能的界面配置。这些章节覆盖率从基本安装到安全策略的所有文档。 本书涵盖的内容 第一章,安装FreePBX。我们将讨论在Linux环境下,安装Asterisk和FreePBX的基 本要求。我们将在Centos和Ubutun 环境下,一步步配置Apache和MYSQL 和下载 Asterisk和FreePBX。 第二章: 插件管理维护,我们介绍模块化的FreePBX结构和在线安装数据仓库, 还有安装,升级,删除的基本步骤。 第三章: 设备和分机,我们将涉及在FreePBX环境下分机的概念。同时我们还要讨论 在FreePBX 环境下分机的工作模式和其他的终端类型。我们将提供配置分机,用户, 和语音邮件的步骤。 第五章: 中继,我们介绍中继的概念和通过中继连接PBX,和外部进行通信的方法。我 们将提供如何配置中继的方法。同时,我们也要讨论如何检查,配置中继的状态,确 保中继配置无误。 前言 第五章: 基本呼叫功能模块,我们将解释呼入的应用模块概念。通过界面提供的配置 选项来实现呼叫落地,转接到分机,或者进入语音邮箱。一步步的安装配置指导告诉 用户如何配置振铃组,会议,昼夜模式模块和电话薄路径。 第六章: 高级呼叫应用模块,我们提供一步步的安装指导,告诉用户如何配置队列,时 间条件和IVR 数字接线员。 第七章: 呼叫路由,根据第五章,第六章创建的呼入路由,我们讨论呼入通话的相 关应用模块。同时,我们讨论如何设置指定的呼出路由,获得最低资费路由通 话。 第八章: 通话录音, 我们继续研究FreePBX的录音功能。一步步的安装文档将提示如 何设置固定的或可选择录音模式对特定的分机,会议,队列进行录音。 第九章: 定制自己的PBX,我们介绍一些FreePBX的特别功能来支持PBX定制。一步 步的配置指导提示如何配置自定义的音乐等待,语音提示,功能热键码,应用模块 和其他目的地。我们讨论如何设置FreePBX的回拨,如何对外部呼叫提供拨号音。 同时我们将涉及如何通过配置freePBX来检查其他资料源来检查来电显示信息,和如 何设置密码设置来保护各种FreePBX功能。 第十章: 系统保护,备份和还原,我们将讨论如何应对IPPBX系统死机或者不能工作的 问题。我们讨论还原系统文件,万一系统出现问题环境下的各种方法。 第十一章: 安全策略和系统访问, 我们提供需要采取的步骤来确保各种非法访问和攻 击。安装指导提示用户升级操作系统,升级Asterisk,对MySQL 设置安全策略,对 远程访问设置安全策略和配置FreePBX管理员帐号。 附录 A: FreePBX模块, 提供所有通过在线安装的可用模块和功能。 附录 B: 功能代码热键, 列出所有默认功能代码热键 附录C: 语音邮箱配置选项,提供所有相关的语音邮箱的选项和发送接收方法。 附录D: 一般中继设置,通过一般的中继配置指导。 [ 2 ] 前言 测试环境准备 尽管本书没有使用太多的Linux命令工具,本书假设读者已经具有基本的linux技术知 识和通信知识。所有命令都加以解释,读者完全可以通过学习,掌握本书内容。 因为涉及了系统安装配置的介绍,所以硬件环境应该至少可以安装linux操作系统, Asterisk和FreePBX。硬件要求没有太严格的规定,服务器的处理能力取决于多少呼 叫量,和具体的功能模块。服务器必须是新安装系统,无其他应用软件。建议安装 Centos 或者Ubuntu. 本书读者 本书是为系统管理员或者二次开发的开发人员准备,当然包括了IPPBX的实施工程 师。对有意使用FreePBX 替代昂贵的IPPBX的读者来说,本书是非常有用的工具书。 通过此书可以了解如何利用开源的软件包来搭建公司稳定的IPPBX。 标注风格 本书中很多地方的文本采用了不同的输入风格。以下例子介绍了不同的风格和 含义. 一段代码: #!/bin/bash # Change this path to reflect your backup storage # location (default is /var/lib/asterisk/backups) BACKUPS=/var/lib/asterisk/backups 命令行输入或输出: sed -i "s/Port 22/Port 38000/" /etc/ssh/sshd_config /etc/init.d/ssh restart [ 3 ] 前言 新名词或者重要关键词加黑: "In order to set up a backup, click on the Tools tab at the top of the navigation menu on the left". 警告或重要信息. 技巧或小窍门. 第一章 安装 FreePBX FreePBX 是一款采用Linux,Apache,MySQL 和PHP技术开发的Asterisk动态IPPBX 软件包。在介绍FreePBX 核心管理员功能之前,我们需要经过几个步骤来完成安装和 配置这些框架控件。尽管在Linux 环境下,安装Asterisk 和FreePBX 已经变得相当简 单,但是还是建议安装时要留意。这些安装步骤是服务器的基本步骤,涉及了是否成 功安装,是否稳定运行的技术内容。 每一种安装部署需求可能有所不同,我们在本章提供如何在Centos 5.2 和 Ubutun 8.10 安装FreePBX 和Asterisk。 在 CentOS 5.2 环境下安装 FreePBX CentOS 是基于红帽子Red Hat Enterprise Linux 发展而来的操作系统,本身具有强大 的安全性和稳定性。目前来看, CentOS是在Asterisk和FreePBX 应用中比较受欢迎的 操作系统。在安装CentOS 5.2时,需要安装以下支持包: • Applications ° Editors ° Text-based Internet • Development ° Development Libraries ° Development Tools 安装FreePBX • Servers ° ° ° ° ° DNS Mail Server MySQL Database Server Server Configuration Tools Web Server • Base System ° Administration Tools ° Base 其他无需安装的支持包可以不选择安装,不会影响系统性能。另外,在安装系统时, 必须关闭 SELinux . 一旦完成基本的 CentOS 5.2 安装,需要安装一些必要的Asterisk 支持包。 安装支持包 FreePBX 要求安装一些必要的支持包来保证系统能够正确运行。大部分的支持包,默 认系统安装时没有被安装,需要用户再次下载。这里提醒用户,必须成功安装所有的 支持包,免得在后续的过程中出现问题,希望再次确认! 首先确认所有的系统支持包是最新的版本。登录系统以root 权限执行各项软件包更新: yum update -y 系统执行版本检测和更新,安装下载时间可能好久,时间长短这要看你的网络速 度如何,是否可以连接网络等等因素。通常可能几分钟到几小时。 确认系统更新成功以后,建议客户重新启动系统: shutdown -r now [ 8 ] 第一章 现在系统已经更新到了最新的状态,用户可以安装必要的支持包。以下支持包是必须 安装的: Package Purpose LibTIFF development headers Used for dynamic generation of images (such as call usage graphs) PHP GD library As with LibTIFF, the GD libraries are used by PHP to dynamically generate images PHP MySQL library Allows FreePBX to read and write to its MySQL database backend Kernel or SMP kernel development headers Used to allow DAHDI to build its modules against the running kernel Audio file development headers Allows FreePBX to transcode recordings and music-on-hold files when they are uploaded MySQL development headers These headers are required when building applications that use MySQL databases (FreePBX is based on a MySQL database backend) 以root 权限,执行以下安装命令: yum install libtiff-devel php-gd php-mysql php-pear kernel-devel kernel- smp-devel audiofile-devel mysql-devel -y 注意,安装命令应该是一行。. 确认以上所有安装包安装成功以后,开始安装Asterisk 源代码,通过以下命令转到src 目录: cd /usr/src 源代码安装 Asterisk 许多Linux 发布版发布了很多asterisk的支持包,这些包依赖于各自 的系统。我们建议安装 Asterisk, Asterisk-Addons, LibPRI, 和 Zaptel/dahdi 从源代码安装,避免安装不当引起的问题。 [ 9 ] 安装 FreePBX Asterisk 核心代码安装包括4个模块—Asterisk, Asterisk-Addons, DAHDI 和 LibPRI: • "Asterisk" 是asterisk 主要电话引擎。 • Asterisk-Addons 包含了经常使用的应用接口,例如通话记录保存的模块, CDR,此模块需要保存到MySQL 数据库,以便FreePBX调用。 • DAHDI 是Digium Asterisk 硬件设备接口,通常所说的Asterisk语音板卡驱动 模块,负责Asterisk和语音板卡的通信(包括FXO,FXS,E1)。 • LibPRI 软件包是Asterisk 用来支持数字中继线路的接口( PRI, BRI和QSIG 中 继。 输入以下命令下载源代码 Asterisk, Asterisk-Addons, DAHDI, and LibPRI: wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current.tar.gz wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4- current.tar.gz wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/ dahdi-linux-complete-current.tar.gz wget http://downloads.digium.com/pub/libpri/libpri-1.4-current.tar.gz 减压压缩文件: tar zxf asterisk-1.4-current.tar.gz tar zxf asterisk-addons-1.4-current.tar.gz tar zxf dahdi-linux-complete-current.tar.gz tar zxf libpri-1.4-current.tar.gz 按照顺序,依次编译,编译安装DAHDI 语音卡驱动模块: cd dahdi-linux-complete-2.* make all make install make config 编译 Asterisk: cd ../asterisk-1.4.* ./configure make install make samples [ 10 ] 第一章 编译安装Asterisk-Addons 模块: cd ../asterisk-addons-1.4.* ./configure make install 编译安装LibPRI 模块支持 PRI, BRI和 QSIG: cd ../libpri-1.4.* make make install PEAR是PHP扩展与应用库(the PHP Extension and Application Repository)的缩写。它是 一个PHP扩展及应用的一个代码仓库。PEAR 包含一个数据库模块,称之为 "DB", 。 它是一个抽象层应用,配合连接数据库引擎。FreePBX 使用了 PEAR DB 模块连接了 MySQL和PostgreSQL。安装pear 数据库包: pear install db 最后的必要安装包是 LAME MP3 解码器. LAME 没有被包含在Centos 标准的支持 包里面,所以用户需要手动下载安装。最新版本的LAME 版本可以到从网站获取 http://lame. sourceforge.net/. 执行以下命令下载安装LAME: cd /usr/src wget http://superb-east.dl.sourceforge.net/sourceforge/lame/lame-398- 2.tar.gz 减压 LAME: tar zxf lame-398-2.tar.gz 编译安装LAME: cd lame-398-2 ./configure make make install [ 11 ] 安装 FreePBX 最后,我们执行后台程序: asterisk & 注意,这是临时的启动Asterisk办法。 一旦安装了FreePBX startup script 启动脚本,系 统启动时会自动启动Asterisk服务。 设置数据库 FreePBX 使用 MySQL 数据库来保存所有界面显示的内容和配置选项。 在默认的 CentOS 5.2 环境下,MySQL 数据库是没有被配置和启动的。我们必须首 先启动MySQL 数据库,然后设置为系统默认启动。如果此步骤没有设置,需要每 次手动启动。这样可能造呼叫记录可能丢失。执行命令: /etc/init.d/mysqld start chkconfig mysqld on 设置一个MySQL root 访问权限。Root 权限是MySQL 管理员的最高级别,可以有 权访问所有的数据库。所以,千万确认设置root 密码权限,以免有安全隐患。设 置密码: mysqladmin -u root password newpassword root 账户使用新密码替换旧密码。 系统应该创建一个独立于Asterisk 以外的账户。一般为了方便,root 账户可以管理 Asterisk,但是这里涉及了一个安全的问题。所以Asterisk 用户应该独立于Apache 用 户。为Asterisk 系统添加一个asterisk 用户: useradd -c "Asterisk PBX" -d /var/lib/asterisk asterisk 使用mysqladmin 命 令 创 建一个 A s t e r i s k 数 据 库 来 保 存 A s t e r is k 配 置 文 件 和 呼 叫 记 录 文 件 。 mysqladmin -u root -p create asterisk mysqladmin -u root -p create asteriskcdrdb 输入 MySQL root 密码。 [ 12 ] 第一章 FreePBX 已经创建了 "prepared SQL statements" 来设置数据库结构。下面我们 来安装FreePBX installer 文件: cd /usr/src wget http://internap.dl.sourceforge.net/sourceforge/amportal/freepbx- 2.5.1.tar.gz 这里举例使用了2.5.1 版本,用户可以下载其他的最新版本。 减压FreePBX: tar zxf freepbx-2.5.1.tar.gz 到 FreePBX SQL 目录下: cd freepbx-2.5.1/SQL 这里有两个独立的文件,包括newinstall.sql 和 cdr_mysql_table.sql. newinstall.sql file 包含必要的 SQL 命令建立table来保存所有的FreePBX配置文件 数据,例如分机,呼叫应用模块,呼叫路由等等信息. cd_mysql_table. sql 文 件 包 含 命 令来 创 建 C D R 保 存 环 境 记 录 。 运 行 以 下 命 令 来 安 装 数 据 库 : mysql -u root -p asterisk < newinstall.sql mysql -u root -p asteriskcdrdb < cdr_mysql_table.sql Enter your MySQL root password when prompted. 现在,我们必须获得Asterisk 用户权限和CDR 用户权限。获得用户权限: mysql -u root -p 输入用户密码。 [ 13 ] Installing FreePBX 确认使用你自己的密码替换 freepbxdbpassword 。 mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'freepbxdbpassword'; mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY 'freepbxdbpassword'; mysql> flush privileges; mysql> \q 设置文件访问权限 最后一步是设置适当的文件访问权限。这里使用 sed 命 令 来 帮 助 我 们 习 惯 权 限 。 语 法 是 : sed -i "s/pattern_to_find/replacement_pattern/" /path/to/file 因为FreePBX 需要和Asterisk 做一些交互,Apache web 服务器必须允许asterisk 用 户执行某些命令。为Apache 添加asterisk 用户: sed -i "s/User apache/User asterisk/" /etc/httpd/conf/httpd.conf sed -i "s/Group apache/Group asterisk/" /etc/httpd/conf/httpd.conf 必须允许FreePBX 覆盖所有默认的Apache路径. 执行命令: sed -i "s/AllowOverride None/AllowOverride All/" /etc/httpd/conf/httpd.conf [ 14 ] Chapter 1 Asterisk run 路径也需要修改 (保存Asterisk PID 文件) 到 /var/run/asterisk: sed -i "s/astrundir => \/var\/run/astrundir => \/var\/run\/asterisk/" / etc/asterisk/asterisk.conf 必须建立一个文件路径,以便 Asterisk可以写入PID: mkdir /var/run/asterisk 配置PHP设置,允许大文件上传( 20 MB), FreePBX 模块支持默认的 8 MB 限制. 修 改此设置,执行命令: sed -i "s/post_max_size = 8M/post_max_size = 20M/" /etc/php.ini sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 20M/" /etc/php. ini 最后, asterisk 用 户 基 本 的 运 行 环 境 需 要 的 文 件 路 径 成 功 创 建 。 Asterisk 正常工作模式下使用以下文件: chown -R asterisk:asterisk /var/spool/asterisk/ chown -R asterisk:asterisk /var/log/asterisk/ chown -R asterisk:asterisk /var/run/asterisk/ 到现在为止,系统配置安装文件基本完成,重新启动系统使之生效。 FreePBX 基本安装 现在,我们的系统已经支持了基本的系统安装包,必要的支持包和可以工作的MySQL 数据库。我们可以安装FreePBX,运行 installer: cd /usr/src/freepbx-2.5.1 ./install_amp install 用户将输入一些必要的配置选项来生成一个文件 /etc/amportal.conf. 如果安装过程 中出现错误,可以直接删除配置文件: rm -f /etc/amportal.conf [ 15 ] Installing FreePBX 问题 建议设置 Enter your USERNAME to connect to the 'asterisk' database 连接Asterisk 数据库的用户名,输入 "asterisk" ,然后按 Enter键. Enter your PASSWORD to connect to the 'asterisk' database 用于验证的用户密码,连接Asterisk 数据 库,获得数据库执行权限。输入密码和然后 Enter 键。 Enter the hostname of 'asterisk' database MySQL 数据库服务器IP 地址或者主机名, 然后按 Enter 键。 Enter a USERNAME to connect to the Asterisk Manager Interface 输入连接Asterisk Manager Interface (AMI)尽快的用户名。此用户是admin 权限,输入用户名,然后按 Enter键。 Enter a PASSWORD to connect to the Asterisk Manager Interface 输入对应的AMI 用户密码,用于连接AMI尽 快。强烈建议修改默认的密码 amp111,设置 新密码,然后按 Enter键。 Enter the path to use for your AMP web root 默认的路径是 /var/www/html。 输入 web root 路径,然后按 Enter 键。 Enter the IP ADDRESS or hostname used to access the AMP web-admin 输入Asterisk 服务器的IP地址,然后按Enter 键。 [ 16 ] Chapter 1 问题 建议设置 Enter a PASSWORD to perform call transfers with the Flash Operator Panel Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser] Enter directory in which to store AMP executable scripts Enter directory in which to store super-user scripts Flash Operator Panel 是一个可视化的PBX 监 控操作面板。通过此界面,用户可以看到系统 的主要呼叫的状态,例如桥接,转接和挂机等 等。强烈建议修改系统的默认密码,设置新的 用户密码。 支持FreePBX 使用 extensions 模 式 或者 deviceanduser 模 式 。以 后 可 以 修 改 。建 议 安 装 默 认 设 置 来 安 装 。 输入安装AMP 基本路径。强烈建议用户安装 默认的路径安装系统程序。建议按照默认设置 安装,系统文件安装在 /var/lib/ asterisk/bin 。 输入超级用户的脚本程序路径。此脚本必须获 得root 权限才能执行。建议安装在默认的路 径 /usr/local/sbin。 到目前为止,安装已经完成,使用命令设置系统自动启动,以便让FreePBX 自 动启动: echo "/usr/local/sbin/amportal start" >> /etc/rc.local 在 Ubuntu Server 8.10 环境下安装 FreePBX Ubuntu Server 也是一款比较受欢迎的Debian GNU/Linux平台。这个系统也 是安装Asterisk,FreePBX的好的选择。 [ 17 ] Installing FreePBX Ubuntu Server 8.10 环境下选择安装以下服务器: • DNS server • LAMP server • Mail server • OpenSSH server 完成安装以后,我们开始安装必要的支持包。 安装必要的支持包 同样,在Ubutun 环境下安装FreePBX需要一些必要的支持包。首先更新系统软件包: sudo aptitude update sudo aptitude upgrade -y 输入帐号密码更新软件包,确认执行以上两行命令。 更新过程需要一些时间,时间长短根据网络访问速度决定。输入以下命令执行安 装: sudo aptitude install build-essential autoconf automake libtool flex bison libssl-dev libnewt-dev libncurses5-dev linux-headers-$(uname -r) sox curl mysql-client libmysqlclient-dev php5 php5-cli php5-gd php5-curl php5-mcrypt php5-xmlrpc php5-mhash php5-suhosin php5-common php5-xsl libapache2-mod-php5 php-pear lame subversion -y [ 18 ] Chapter 1 注意,以上命令是一行。 必要的安装包安装以后,开始安装Asterisk。 首先,转到系统目录src 下: cd /usr/src 从源代码安装 Asterisk 许多Linux发行版发布了asterisk 安装包,为了避免出现问题, 建议从源代码安装。 安装4个核心模块-Asterisk, Asterisk-Addons, DAHDI, and LibPRI: • "Asterisk" 主要核心模块 • Asterisk-Addons 支持Asterisk 配置文件存储和呼叫记录。 • DAHDI 语音板卡驱动包,支持FXS,FXO,E1语音板卡 • LibPRI 包支持PRI,QSIG 中继 执行命令,分别下载软件包Asterisk, Asterisk-Addons, DAHDI 和 LibPRI: sudo wget http://downloads.digium.com/pub/asterisk/asterisk-1.4-current. tar.gz sudo wget http://downloads.digium.com/pub/asterisk/asterisk-addons-1.4- current.tar.gz sudo wget http://downloads.digium.com/pub/telephony/dahdi-linux-complete/ dahdi-linux-complete-current.tar.gz sudo wget http://downloads.digium.com/pub/libpri/libpri-1.4-current. tar.gz [ 19 ] Installing FreePBX 减压源代码: sudo tar zxf asterisk-1.4-current.tar.gz sudo tar zxf asterisk-addons-1.4-current.tar.gz sudo tar zxf zaptel-1.4-current.tar.gz sudo tar zxf libpri-1.4-current.tar.gz 编译安装DAHDI 语音板卡驱动模块: cd dahdi-linux-complete-2.* sudo make all sudo make install make config 编译安装Asterisk: cd ../asterisk-1.4.* ./configure sudo make install make samples 编译安装Asterisk-Addons 模块: cd ../asterisk-addons-1.4.* ./configure sudo make install 编译安装LibPRI 模块: cd ../libpri-1.4.* make sudo make install 安装 PEAR DB 支持库: pear install db 后台启动Asterisk: asterisk & 注意,此命令只是临时启动命令。FreePBX 启动脚本配置Asterisk 默认系统启动。 设置数据库 FreePBX 采用 MySQL 数据库存储所有界面配置参数。. [ 20 ] Chapter 1 添加 MySQL 默认启动: /etc/init.d/invoke-rc.d mysql start 创建asterisk 用户访问asterisk: adduser -gecos "Asterisk PBX" --home /var/lib/asterisk --system --group asterisk 注意,这是单行。 创建数据库asterisk 和CDR数据库: mysqladmin -u root -p create asterisk mysqladmin -u root -p create asteriskcdrdb 下载FreePBX: cd /usr/src sudo wget http://internap.dl.sourceforge.net/sourceforge/amportal/ freepbx-2.5.1.tar.gz 减压FreePBX tar zxf freepbx-2.5.1.tar.gz 到 FreePBX SQL 目录: cd freepbx-2.5.1/SQL [ 21 ] Installing FreePBX 文件 newinstall.sql 和 cdr_mysql_table.sql分别创建数据库tables和CDR结构: mysql -u root -p asterisk < newinstall.sql mysql -u root -p asteriskcdrdb < cdr_mysql_table.sql 获得访问权限,修改用户密码: mysql -u root -p 用自己的密码替换密码 freepbxdbpassword: mysql> GRANT ALL PRIVILEGES ON asterisk.* TO asterisk@localhost IDENTIFIED BY 'freepbxdbpassword'; mysql> GRANT ALL PRIVILEGES ON asteriskcdrdb.* TO asterisk@localhost IDENTIFIED BY 'freepbxdbpassword'; mysql> flush privileges; mysql> \q 设置文件访问权限 设置asterisk user: sed -i "s/www-data/asterisk/" /etc/apache2/envvars FreePBX 覆盖默认配置文件: sed -i "s/AllowOverride None/AllowOverride All/" /etc/apache2/apache2. conf 创建 修改文件路径 /var/run/asterisk: sed -i "s/astrundir => \/var\/run/astrundir => \/var\/run\/asterisk/" / etc/asterisk/asterisk.conf 修改PHP上传文件限制到 20 MB, FreePBX 模块默认支持 8 MB 限制. 命令修改: sed -i "s/post_max_size = 8M/post_max_size = 20M/" /etc/php5/ apache2/php.ini sed -i "s/upload_max_filesize = 2M/upload_max_filesize = 20M/" /etc/php5/ apache2/php.ini Installing FreePBX 创建 Asterisk run 目 录 ,设 置 访 问 权 限: echo "mkdir /var/run/asterisk" >> /etc/rc.local echo "chown -R asterisk:asterisk /var/run/asterisk" >> /etc/rc.local 注意 chown 命 令 是 单 行 。 最后,所有必要的文件路径已经建立: chown -R asterisk:asterisk /var/spool/asterisk/ chown -R asterisk:asterisk /var/log/asterisk/ 重新启动,使之生效。. FreePBX 基本安装 现在可以执行安装工具执行安装: cd /usr/src/freepbx-2.5.1 ./install_amp install 安装过程中,需要输入一些选项,请正确输入。如果发生错误,库删除文件 /etc/amportal.conf 来重新安装: rm -f /etc/amportal.conf 安装选项 建议设置 Enter your USERNAME to connect to the 'asterisk' database 连接Asterisk 数据库的用户名,输入 "asterisk" ,然后按 Enter键. Enter your PASSWORD to connect to the 'asterisk' database 用于验证的用户密码,连接Asterisk 数据库, 获得数据库执行权限。输入密码和然后Enter 键。 [ 24 ] Chapter 1 问题 建议设置 Enter the hostname of 'asterisk' database Enter a USERNAME to connect to the Asterisk Manager Interface Enter a PASSWORD to connect to the Asterisk Manager Interface Enter the path to use for your AMP web root Enter the IP ADDRESS or hostname used to access the AMP web-admin Enter a PASSWORD to perform call transfers with the Flash Operator Panel MySQL 数据库服务器IP 地址或者主机名,然 后按 Enter 键。 连接AMI 接口的admin 帐号名称。 用于验证admin 连接AMI 的密码。默认是 "amp111",请修改! 输入页面安装路径,否则使用默认页面文件 安装路径。 Asterisk FreePBX 主机名称或者IP 地址。 Flash Operator Panel 是一个可视化的PBX 监 控操作面板。通过此界面,用户可以看到系统 的主要呼叫的状态,例如桥接,转接和挂机等 等。强烈建议修改系统的默认密码,设置新的 用户密码。 [ 25 ] Installing FreePBX Question Suggested answer Use simple Extensions [extensions] admin or separate Devices and Users [deviceanduser] Enter directory in which to store AMP executable scripts 支持FreePBX 使用 extensions 模 式 或者 deviceanduser 模 式 。以 后 可 以 修 改 。建 议 安 装 默 认 设 置 来 安 装 。 输入超级用户执行脚本的路径。建议按照默认 路径安装配置: /var/lib/ asterisk/bin。 所有步骤完成以后,设置系统默认启动设置FreePBX: echo "/usr/sbin/amportal start &" > /etc/rc.local 总结 现在,我们已经安装了所有支持FreePBX的软件包。恭喜你成功了! 下一个章节,我们继续讨论如何管理维护,删除,更新FreePBX模块. [ 26 ] extensions.conf features.conf iax.conf sip.conf manage r .conf queue s.conf voicemail.conf zapata.conf 第二章 模块管理维护 核心 FreePBX 安装的是一个系统软件框架。每一个FreePBX 功能从呼入路由到语音邮 箱都是通过模块添加到了FreePBX框架里。FreePBX 提供了50个模块,每个模块提供 了特定的功能。当管理一个FreePBX 系统时,Apache 服务器对每个模块执行界面支 持。模块的配置文件存储到了数据库,此数据库可以通过FreePBX访问处理,并且写 入Asterisk配置文件。Asterisk 通过调用模块来读取配置文件。以下是模块的处理过 程: Apache Web Interface FreePBX Modules Devices Users Outbound Routes Inbound Routes IVR Queues Ring Groups Time Conditions Conferences Music on Hold T runks FreePBX Core Framework Asterisk Configuration Files Asterisk Module Maintenance 所有功能都划分成模块。包含的基本模块为—核心框架,本地化, Asterisk 录音接 口,Flash 接线员面板. 通过模块化的结构来添加新的功能,实现升级安装。 分拆的模块功能设计允许每个FreePBX 安装完全适应不同的需求。如果一个PBX 只是需 要简单的呼入路由和语音邮件模块。此PBX只是呼入和转接到语音邮箱,那么只是安装 呼入路由管理模块和语音邮箱模块。 模块可以设定依赖关系,允许尽可能最小的功能模块。一般来说,所有模块都至少有 一个依赖模块。 我们通过模块管理来描述如何使用这些模块,这一章节将讨论以下内容: • 通过在线代码仓库更新目前的模块 • 通过在线代码仓库安装新模块 • 通过文件安装,更新模块 通过在线代码仓库更新模块 通常安装新模块或者更新系统都是通过FreePBX的代码仓库。代码仓库由FreePBX 和伙伴管理。代码仓库免费访问。 我们将介绍更新模块的整个过程。注意,更新前请备份目前的系统文件, 以免造成不必要的麻烦。第十章介绍了备份的一些技术问题,请参考此章 节。注意,新安装的系统备份模块还没有安装,如果没有配置任何设置, 也无需备份。 [ 28 ] Chapter 2 安装新系统时,只有FreePBX核心模块被安装。如果安装支持全功能的FreePBX,我 们必须更新一些旧的模块版本,选择安装一些额外的选择模块。 1. 首先,通过IP,浏览器地址登录FreePBX 安装,看到以下界面截图: 2. 点击FreePBX Administration 链接,进入管理界面. 主FreePBX 界面提示 输入相关的修改信息,无需点击更新。因为目前是最新的系统版本。 注意: 在模块安装之前不要点击更新设置 只要任何人登录安装的新FreePBX系统,界面会提示橘色 按钮- Apply Configuration changes 无需更新。这样可能 导致系统不能工作。 [ 29 ] Module Maintenance 3. 点击 左边主菜单的Module Admin 链接,进入管理界面: [ 30 ] Chapter 2 4. 点击 Check for updates online, 检查在线版本: 5. 点击模块名称,会看到模块的详细信息,切记更新前,检查 changelog。 [ 31 ] Module Maintenance Action 标签显示选择项,用户根据提示进行下载安装或者下载升级。No Action 选项不进行任何处理。Download and Install 将进行下载安装新模 块。Download and Upgrade 将执行下载更新程序。 更新模块页面包含更新所有选择的软件包。Core和 FreePBX架构模块更新以后才能使用此链接。 6. 安装新系统PBX以后,查看 Core 模块状态。如果模块状态显示 Online upgrade available 是红色,模块需要更新。点击 Action标签,和 Download and Upgrade radio 按钮: 7. 点击 Process 按钮,FreePBX 要求输入确认信息。截图如下: [ 32 ] Chapter 2 8. 点击确认按钮以后,FreePBX 开始升级需要升级的模块。 如果出现问题,大部分的原因是手动修改ampotal.conf 导致的。所以必须先考虑备份, 9. 当更新完成以后,点击返回链接 Return. [ 33 ] Module Maintenance 10. 点击确认按钮,更新框架 模块. 11. 一旦核心模块和框架被更新, 就可以更新其 他 的 模 块 插 件 。点 击 Upgrade All,通过在线数据仓库更新所有模块。. 12. 一 旦 更 新 完 成 , 点 击 Apply Configuration Changes 工具条。系统将保存 配置数据到数据库里,强迫Asterisk 重新加载,并且更新内存数据。 13. 点击 Continue with reload 链接,完成更新。 到此,如果无错误显示,你的FreePBX 就算成功升级。 通过在线数据仓库安装新模块插件 FreePBX 提供了 50多个新模块。安装新模块插件和更新插件是相同的。 1. 进入到FreePBX 界面,点击主菜单左边的 Module Admin,Module Admin 出现 Setup 和Tools 标签. [ 34 ] Chapter 2 3. 从模块插件管理页面,点击 Check for updates online. FreePBX 系统对比安装 的版本和目前在线数据仓库最新版本。例如: 3. 如果模块插件没有安装,上面图例将显示 蓝色 Not installed (Available online)。如果目前已经安装的,将显示 灰色的 Enabled and up to date. 检查 所有模块插件是否是最新版本,如果不是,可以点击此模块更新。 更新安装模块需要注意彼此的依赖关系。如果版本不 匹配,可能导致功能不能正常工作。 4. 只要所有模块都已经更新到最新版本,我们可以开始安装新模块插件。 点击你要安装的模块名称进行安装。. 经常使用的模块插件包括: • 公司IPPBX ° 语音邮箱 ° 昼夜模式 ° 分机随行 ° 语音IVR ° 音乐等待 ° 电话队列 [ 35 ] Module Maintenance ° 振铃组 ° 通话录音 ° 时间条件设置 • 终端用户服务 ° 语音邮箱 ° 会议 ° DISA ° Info Services ° 语音邮箱 • 呼叫路由 ° 黑名单 ° IVR ° 电话薄 ° 其他目的地 5. 在 Action 标签, 选择Download and Install: 6. 点击Process 按钮. 输入确认信息,安装模块: 7. 点击确认信息,开始安装过程 . [ 36 ] Chapter 2 8. 将 显 示 确 认 信 息 , 点 击 Return 返回到模块管理页面。 9. 安装更新完成以后,将出现 Apply Configuration Changes 工具条,点击修 改。. 同样,通过一个过程安装所有需要安装的模块插件,点击 Download all 下载安装 所有模块。注意,很多模块对于PBX来说可能是不需要的,所以无需安装所有的模 块插件。 从文件安装更新模块 几乎所有的模块插件都可以通过在线数据仓库安装更新。但是有一些第三方的插件没 有被上传或者被FreePBX接受。因此用户可以通过文件安装的方式来安装需要的插 件。 任何通过文件安装的模块将覆盖目前系统存在的模块,系统不会将提示用户。请留 意。从文件安装模块的时候,确认检查此模块是否在在线数据仓库,并且此模块插件 没有在系统中安装。 文件安装可能有风险 文件安装可能存在风险,大部分情况就是模块没有在数据仓库中。通过文 件安装必须确认此模块和目前的FreePBX版本是互相兼容的,并且是相当 可靠的。因为FreePBX 直接在Asterisk 拨号规则中添加一段拨号规则代 码,可能造成Asterisk 安全漏洞。 例如,如果一个插件可以创建 SIP 或 IAX2 用户帐号,一些非法的盗打电 话的用户就会利用此系统盗打电话,给公司造成损失。因为运营商来的电 话账单可能丢了你的工作。 [ 37 ] Module Maintenance 1. 首先从第三方开发者那里下载模块代码。减压到用户的 P C 环境 下。 2. 通过浏览器,登录 FreePBX 接口,点击菜单左边的 Module Admin 链接. 3. 从 Module Administration 页面,点击 Upload module 链接,截图如下: 4. 点击Browse 按钮,从用户PC 找到下载的文件。 5. 点击 Upload 按钮,开始安装。如果出现错误,报错信息将会显示。 6. 一旦安装完成,模块将显示在模块管理页面,然后点击 Apply Configuration Changes 工具条,使其生效。 [ 38 ] Chapter 2 总结 到现在,我们可以掌握安装更新FreePBX模块。然后,我们进行一些重要的模块插件 配置。经常使用的模块是: • 语音邮箱 • 分机随行 • IVR • 队列 • 振铃组 • 时间条件 • 音乐等待 这些模块可以支持基本的PBX功能。在剩余的章节中,我们都将使用这些模块来配合其 他的高级模块工作。因此,首先安装最新模块是一个比较好的方法。所有模块名称的列 表都在附录 A 中列出。. 下一个章节,我们将讨论分机配置和语音邮箱配置。 [ 39 ] 第三章 设备和分机 像传统的 PBX系统一样,FreePBX 使用分机让电话呼叫到每个用户。每个人可以通过 PBX 分配一个分机。用户可以直接拨打分机,和对方通话。分机都设置语音邮箱和分 机关联在一起。这些分机可以是振铃组成员,呼叫队列成员或者呼入转接电话分机。. 不像一般的电话概念,每个分机和一个指定的电话关联,FreePBX 分离出实体电话, 引入一个设备的概念。一个分机可以被直接映射成一个传统的分机方式,或者是一个 设备方式,此设备独立于分机,并且这个分机可以对电话(基于谁在使用)发起振 铃。FreePBX 支持这些工作方法。 在本章,我们将讨论: • 分机工作模式 • 终端类型 • 一般设置域 • 在分机模式下设置一个新分机 • 在 DeviceAndUser 模式下,设置新分机 • 语音邮箱 设置 分机工作模式 FreePBX 通过两种不同的工作模式来配置分机: • 分机 • DeviceAndUser 设备用户 Devices and Extensions 在 Extensions 模式下,在FreePBX 每个号码形式的分机对应一个物理电话终端。终端 的形式可以是物理电话,软电话,模拟电话,或者AT,麦克风,或者可以和Asterisk 进行语音输入的设备终端。这个模式下,每个终端都被静态设置,和每个指定的终端 对应。这个设备从来不能改变。 例如,典型的带隔间的办公室环境下,每个办公隔间配备一个电话,电话振铃以 后,这个电话可能从来不换来换去。甚至于雇员更换,电话也需要做相应的更换。 因此,无论这个员工在那里,他的分机总是和他对应的。大部分的用户觉得这样的 设置非常方便和直接。但是这样的方式和DeviceAndUser 方法比较缺乏适当的灵 活性。 在 DeviceAndUser 设备用户模式下,终端设备和分机是分离的,允许一个号码分 机对应无限制的多个终端设备。DeviceAndUser 设备用户模式下,如果他们的物 理地址发送了改变,允许用户可以从一个终端设备漫游使用另一个终端设备。 例如,如果一个仓库管理员此时在不同的楼层(例如 1 楼),他需要接听电话。管理 员就可以选择一个无绳电话登录电话系统,开始电话轮询振铃到此时设置的电话机。 如果有呼叫管理员的电话,这个无绳电话将振铃。当完成了在1楼的工作以后,回到 原来工作的位置上的时候,离开之前,管理员只是退出登录的电话机就可以。此时无 绳电话将不在振铃。这种工作模式对于终端用户来说可以直接拨打某人电话分机,但 是可能导致几个终端同时振铃。此工作模式非常强大,但是设置比较复杂。. 每一种模式都存在优点和缺点。大部分复杂的PBX 功能都通过Asterisk 和FreePBX使用 多种方式实现其功能。具体需要什么样的功能,用户需要根据自己的实际情况来决 定。适合你的,才是最好的。 工作模式可以随时修改,但是可能花费大量的时间需要重新测试其功能。我们建议首 先选择一个合适的工作模式来设置FreePBX 分机。 [ 42 ] Chapter 3 以下列表帮助用户根据自己的工作环境来决定使用的分机工作模式: 应用场景 工作模式 大企业环境下,员工分机和员工是一一对应关系。 分机 小型企业,员工工作方式可能在办公室和家之间,员工必 须接听电话来电。分机方式随时迁移。移动性好。 设备用户模式 酒店房间号码,通常房间的分机号码和分机是一一对应的 关系,所以采用分机模式。无论任何人入住房间,分机号 码是固定的。 分机模式 公司管理人员,经常在不同的办公室迁移,需要管理人员电话 随时振铃,无论在哪个办公室。 设备用户模式 技术支持人员需要更多分机来接听客户电话。通常任务被指 定,通话分机必须固定。. 分机 一些市场营销公司环境下,通常是24小时工作制。因为倒 班制度,外呼系统根据终端用户的不同和呼叫人员的不同 发送改变,必须使用设备用户模式。或者座席休息等等情 况下,用户需要登录,或者退出注册。 设备用户模式 选择合适的分机号码 无论使用何种工作方式,选择恰当的分机号码是非常必要的。在FreePBX 环境下,已经使用了一些默认的号码组合 (包括 70-79, 200, 300-399, 666, 700-799, 和7777). 建议采用4个数字的分机号 码。如果可能,分机号码设置范围限定在 201到299 之间。比较可行的 办法是 使用 DID 号码的最后4位数字作为分机号码。例如 如果 DID 是 555-555-5432 , 则对分机 5432 振铃(5432 是分机号码)。 [ 43 ] Devices and Extensions 终端类型 FreePBX 支持 4种终端类型的配置: • Session Initiation Protocol (SIP) • Inter-Asterisk eXchange 2 (IAX2) • Zap (DAHDI) // 模拟语音卡FXS • Other (custom) // 自定义终端,包括MGCP,H323等等 FreePBX 不允许一个类型的终端支持所有终端。终端类型可以混合和匹配。只要终端 类型可以和Asterisk 所支持的协议进行通信,Asterisk 将桥接此设备的通话。 SIP 终端 SIP 终端是目前最常用的终端设备。大部分的VOIP 电话都是基于SIP的物理电话。几乎 所有的软电话终端都支持 SIP协议。但是因为SIP 协议中,需要RTP Real-time Transport Protocol 协议传输语音流,所以要开放很多端口范围(10000-2000 端口)。 如果在NAT 环境下,SIP 协议通常会导致一些问题,例如语音单通。普通的SIP配置要 求开放10,000 端口来保证RTP流的传输,这样的话,SIP 终端的设置会涉及到防火墙 的设置。 IAX2 终端 IAX2 协议为解决SIP协议的一些短板,用来连接两台Asterisk 服务器。目前,市场上 有一些软电话终端和物理电话终端支持了IAX2 协议。 IAX2 使用1 个端口来进行信 令协议控制和语音流传输。可惜的是,支持IAX2的终端目前非常少,但是防火墙设 置非常简单(通常不需要设置防火墙)。 Zap (DAHDI) FXS 终端接口 Zap (DAHDI) 设备就是普通的模拟语音卡FXS接口,支持两芯的普通 模拟线路。 Asterisk 模拟语音卡支持标准的 PCI 或者 PCI-E 插槽,板上可以安装 FXS 和 FXO 接口 模块。 FXS 就是通常说的模拟终端接口; FXO 就是模拟PSTN的线路接口。 [ 44 ] Chapter 3 如果系统配置ZAP (DAHDI) 终端设备,确认系统必须安装模拟语音卡FXS 模块, 并且FXS 上电,正确配置语音板卡参数。 Zap 是 Zaptel 简称, 一个开源的语音卡硬件驱动API 接口,用来支持模拟 语音板卡和数字语音板卡设备。因为知识产权的原因, Zaptel 协议重新命 名为DAHDI 协议。FreePBX 接口仍然采用 Zap 设备 作为 2.5 版本的终端 名称,未来的版本将支持DAHDI. 自定义终端 自定义终端可以在任何Asterisk 支持的协议环境下使用。通常可使用的终端包括支 持MGCP的终端设备和支持H.323 协议的终端设备。只要Asterisk 可以通过Dial 命 令可以和此终端通信,FreePBX 就可以通过界面来支持此终端设备。 一般终端设置域 这里有几个一般终端的设置域都支持分机和设备用户模式。在FreePBX 环境下,无论 选择什么样的工作模式,这些值具有相同的功能。当设置到其他模式的呼叫下,这些 设置的值可以重复使用。所有的设置值这里列出. 一般全局分机/用户设置域 User Extension 必须是唯一的数值。如果分机已经被使用,当保存此分机时, FreePBX 将会显示一个警告信息,此分机不能被保存。User Extension 号码可以通过 其他的终端被拨打。此值是必填项。 Display Name 通常是用户名称或者设备地址,以方便客户记忆识别(例如, "James.zhu" 或者 "Server Room"). 这一值将以ID 文本的格式从本机显示到呼叫方设 备终端上。此值是必填项。 [ 45 ] Devices and Extensions CID Num Alias 当用户呼叫另一个用户时,将修改 caller ID 文本内容。通常,当 用户属于一个部门,呼出到其他用户时,回呼的电话将转到这个部门而不是呼出用 户分机。此值不是必填项。如果此项为空,用户分机用来设置外呼 Caller ID。 SIP Alias 当发起一个SIP 呼叫时,用来显示一个易建议的名字到对端的终端设 备。别名通常被使用来透传一个地址来连接指定用户,类似于邮件地址的使用。 A SIP alias 允许外部呼叫者直接通过拨打 alias@example.com 来 呼 叫 一 个 指 定 的 用 户, 无 需 知 道 用 户 号 码 。注 意, S I P A l i a s 可 以 显 示 所 有 的 分 机 类 型 (SIP, IAX2, Zap, 和自定义 类型). 对SIP Alias 呼叫必须从SIP 设备发起。但是 Asterisk 将桥接这个呼叫到任意 一个可以通信的终端设备上。此值表示必填项。如果为空,唯一的办法是通过URL 发起呼叫。 Outbound CID 用来对外呼出时透传一个设置的CID 号码。此选项要求一个数字线 路,并且此线路支持 Caller ID. 此值不是必填项。如果为空,这条中继线路将使用默 认的 Caller ID。 Ring Time 在转到语音邮箱之前,对终端振铃时间(单位:秒)。FreePBX 允许终 端振铃介于1秒到120秒之间。如果没有设置语音邮箱,一直对终端振铃,直到挂机。 此选择项是一个下拉菜单。如果为空,则为默认设置,分机振铃设置将为 FreePBX 的一般设置中的默认振铃时间。 Call Waiting 呼叫等待启用或者关闭选项是户分机默认选项。如果呼叫等待启用,并 且被叫正在接听通话,有下一个电话呼入,用户将被提示有新的电话呼入,并且提供 一个选择去应答用户电话。如果关闭呼叫等待,正在接听电话的用户有下一个电话呼 入的话,电话将被接入到语音邮箱。用户可以通过功能代码热键启用或者关闭呼叫等 待 (*70 激活呼叫等待,*71 关闭呼叫等待 ). 此选项在初始设置中实现。如果呼叫等待 是从用户终端被激活,它将一直保持。重新加载freePBX 模块,此功能不能被覆盖。 此选择项是一个下拉选择。 [ 46 ] Chapter 3 Call Screening 呼叫播报, 允许呼叫被接听之前,系统自动播放一个提示信息,提示 此来电是哪个用户的电话。当此功能启用时,系统提示用户输入呼叫者名称,然后开 始拨打对拨打用户振铃。当被呼叫者接听电话时,可以听到是谁的电话,被呼叫者决 定是接听电话还是拒绝接听。如果设置了语音邮箱,被拒绝的通话将被转入语音邮 箱。负责将挂断此通话。Call Screening 可以设置为系统智能记忆或者临时输入。设 置为智能记忆时,系统不需要再次输入名称,负责需要再次输入名称。此选项是一个 下拉选项。 Assigned DID/CID 指定的DID/CID 选择组 支持分机呼出时直接指定一个外呼号 码。一个用户可以支持多个DID/CID 外呼号码。 DID Description 是对和分机关联的DID 描述。 Add Inbound DID 添加一个真正的号码和分机关联。中继线路提供此号码格式,通 常是11 个数字号码或国际标准号码。添加一个呼入CID 允许指定的来电显示路由到 用户分机。来电显示号码可以显示为一个电话号码,或者"私人", "被阻止", "未知", "限 制", "匿名", or "无效". 如果此选项为空,分机可以正常工作,呼入的通话将被直接转 接到该分机或者其他分机号码。 Language Code 语言代码域,强制用户输入指定的语言代码来播放指定的语言。只要 此语言被安装,语音提示可以在PBX 上使用。此域不是必填项。 如果此域为空, Asterisk 系统将播放默认的语音提示。 Recording Options 录音组支持用户对呼入和呼出通话进行录音。用户可以拨打功能代 码热键 (*1) 启用对当前通话进行录音,从不录音,一直录音选择方式。录音选择项是一 个下拉选择. Dictation Service 口述服务域允许用户从终端拨打功能代码热键 (*34) 来播放早期的 口述讲话录音。口述服务的保存的文件格式可以通过此域选择,而且文件可发送到一 个指定的邮件地址。用户可以拨打功能代码 (*35) 命令asterisk 发送这个完整的口述语 音文件到相应的邮件地址。用户可以根据下拉菜单来选择口述服务和口述文件格式. 无需邮件地址。如果此项为空,口述录音文件不能发送到用户指定的邮箱。 [ 47 ] Devices and Extensions Voicemail & Directory 语音邮箱和目录选择项将在本章的语音邮箱设置部分 进行讨论。 终端基本设置项 无论终端设备采用何种协议连接Asterisk 呼叫应用,紧急呼叫的CID 是必须要支持 的。这也是很多国家的法律规定。在FreePBX 设置中,当用户通过配置路由,进行一 个电话外呼的时候,填入的紧急呼叫号码将覆盖其他的来电显示号码。此选择项非常 有用,可以支持呼出到一个非常准确的号码上。紧急事务呼叫中心将通过调度系统来 对呼入的号码进行回拨,从而可以快速定位,查找出用户的详细信息和详细的地理位 置等等,为应急服务提供有力保障。特别对于一些VOIP转接提供商非常有用,如果 从用户发起的呼叫,通过VOIP中继呼出,紧急事务呼叫中心获得的发起呼叫方的信 息可能不是相当完整,不像E1 线路或者PSTN 线路那样准确,所以紧急事务呼叫中心 调度会遇到一些技术问题,不能由此确定准确的用户信息。紧急呼叫的CID 号码不是 必填项,如果此值为空,紧急外呼的号码将是中继线路号码。 SIP/IAX2 基本配置项 SIP 和 IAX2 终端都有一个密码项. 此项的密码是用于终端对Asterisk 认证的密码。此项 是必填项。 小心设置终端密码 终端密码设置必须非常小心,不要使用简单的1234 等等密码。使用比较复 杂的字符和数字组合可以有效防止非法登录等等问题。同时注意保管好自 己终端密码。如无必要,不要轻易给其他人此密码。 SIP 终端支持 dtmfmode 选择项。 DTMF 模式的作用是终端设备指定采用何种形式 来发送按键拨号音到对端。DTMF 模式可以支持的模式包括 rfc2833, inband, info, and auto. 默认的值是rfc2833。运营商如果通过其他模式发送DTMF, 请修改到相应 的模式。. [ 48 ] Chapter 3 正确设置中继的DTMF 模式是非常重要的。DTMF 语音传输是通过语音压缩 以 inband 模式发送(任何没有使用Ulaw或者Alaw语音编码),那么此语音到对端以后 可能是乱码或者不能被对端识别。Rfc2833 将以数据的形式通过RTP 的有效载荷 传 输。Info 模式将以 数据的形式通过SIP info 头域发送DTMF 语音。数据形式的发送相 对比inband 模式可靠,但是为了确保成功的通话,生成语音的终端设备必须同时支持 同样的DTMF 模式。 auto 选择项将首先使用 rfc2833和对端设备进行握手协商,如果 对端设备主机显示不支持以数据形式发送的语音流,Asterisk 将会自动切换到inband 模式和对端设备进行协商,最后确定一个双方都支持的DTMF模式。dtmfmode 是必 填项。 其他 SIP 域 确认保存以后,点击SIP 设备,系统自动显示 16个 额外的域。这些填入的值在设备 初始建立时是不可见的: canreinvite 项指定是否SIP 终端可以对对端发起一个re-invites消息。默认设置,一 个SIP 呼叫必须经过Asterisk 服务器,然后到达对端设备。Re-invites 允许两个SIP 终 端直接互通语音媒体流,而不经过Asterisk 服务器。此办法可以提高不确定环境下的 语音延迟,但是大部分设置环境下,此办法可能导致掉线,或者语音质量问题。 canreinvite 可以设置为 yes 或者 no. 此项不是必填项。如果为空,默认设置为 no。 [ 49 ] 设备终端 context 选项通过指定context 在Asterisk把设备进行分类。默认的context 已经设置在 /etc/asterisk/ extensions_custom.conf 文 件 。 另外,FreePBX from-internal context 包括了必要的contexts. 这些contexts 可以访问 分机的功能,例如语音邮箱,呼出路由,功能代码热键。特别指定一个context 可能导 致FreePBX 功能不能正常使用。此项是必填项。 host 选项用来定义分机呼叫来源(分机IP地址)。有效的值是 "dynamic", 或者指定 一个IP地址. 动态的分机将在Asterisk 服务器注册,Asterisk 服务器会一直跟踪从哪里 注册,从而了解分机状态。如果终端支持一个动态的IP 地 址 , 需 要 设 置 为 “dynamic”。如果终端具有一个静态IP地址,这些终端不要求注册到asterisk,因为 Asterisk 接受呼叫以后,呼叫会被Asterisk直接转到此静态IP地址。此项不是必填 项。如果为空,则支持默认设置 "dynamic" 。 type 选择项是用来配置分机支持何种类型的呼叫。有效的值是 peer, user, 和 friend. 对Asterisk 服务器来说,呼叫被发送到peer 终端,或者来自于用户终端。他们可以发 起呼叫也可以接受呼叫(friend)。一般的办公通信系统,电话终端设置为 "friend" 终端。有时呼叫中心的座席不允许呼出,所以设置为 peer 终端. 在酒店 大堂可以设 置电话终端,此终端这是为呼出使用,所以设置为 user 终端. 此项不是必填项。如果 为空,系统使用默认值 "friend"。 nat 选项用来定义终端设备在NAT 网络环境。如果要求一个内网IP地址来访问远端 Asterisk 服务器地址,此选项需要关闭。例如一个 用户需要通过VPN 连接Asterisk 服务器。有效的NAT 值为 yes 或 no。此项不是必填项。如果为空,则为默认值 yes。 port 端口选项允许终端设置一个自定义的端口,SIP 控制数据发送到自定义端口。 注意,此端口这是负责 SIP 协议控制,不能控制语音流。默认端口为5060,大部分 SIP 服务器监听5060端口。此自定义端口通常使用在5060被限制禁止的环境下。注 意,如果此端口的值被修改,确认 Asterisk 必须监听自定义的端口用来检测SIP 控 制协议。有效的值为 数值形式 端口 1 到 65,000。 此项不是必填项。如果为空,使 用默认值 5060。 [ 50 ] Chapter 3 qualify 选项是asterisk 用来检测跟踪终端状态信息,保证终端始终是在线状态。 如果启用此选项,Asterisk 跟踪 对于PBX 的回复时间。此选项非常有用处,可以 用来检测终端到PBX 之间的延迟。在Asterisk CLI 后台执行命令 : sip show peers , 此 命 令 列 出 所 有 的 S I P 终 端 信 息,包 括 了 回 复 时 间 。 qualify 选择项 包括 no 或者 yes, 或者 时间数值(毫秒). 如果设置为yes, 检测时间为 200 毫秒. 此项不是必填项。如果为空,使用默认值 no。 callgroup 和 pickupgroup 选项支持用户可以直接通过功能热键(*8)去接听一个对 其他用户的呼叫(不是对本机的呼叫)。例如,如果有用户 A 的终端振铃,用户B 可以 通过按热键(*8)来接听对用户A的通话。定义此值的范围从 0 到 63。分机可以设置 到不同的组,组之间使用逗号分开。任何来自于呼叫组的通话都可以被相应的应答组 中间的任何成员接听。 (例如,应答接听组 1 的任何成员可以接听来自呼叫组 1 的通 话. ). 此功能对一些小型办公室或者家庭电话环境非常有用。用户可以轻松通过其他 终端接听另一个话机的电话,使用起来非常方便,不需要到相应的终端位置来接听电 话 或者转到其他分机接听。注意,此用户必须是应答接听组的成员,不一定是呼叫组 成员。(例如,一个部门经理可以接听任意一个他所在部门的电话,但是这个部门的其 他终端不能接听这个部门经理的来电。)。 callgroup 和 pickupgroup 不是必填项。 如果此值为空,终端不归属于任何一个呼叫组或者应答接听组,因此,此用户不能启 用呼叫组和应答组功能。 disallow 选择项包括一个语音编码列表,终端将不使用这些编码和Asterisk 进行通 信。多个语音编码通过空格分开。有效的值为 "all", "g723", "gsm", "ulaw", "alaw", "g726", "adpcm", "slin", "lpc10", "g729", "speex", 和 "libc". 通常情况下,先设置不被支 持的语音编码 allow 选项,然后设置支持的 allow 语音编码。Allow 不是必填项。如 果为空,无语音编码被禁止,Asterisk 将尝试使用任何一种编码来和终端建立通话。 allow 允许选择项和 disallow 功能相反,它用来指定终端使用的语音编码来和 Asterisk 进行通信。语音编码按照顺序设定了优先级。有效值和disallow 相同。如果 此值为空,表示终端没有指定任何语音编码,Asterisk 将使用任何一种可用的语音编 码来和终端建立通话。Asterisk 将给出一个参考编码,这些编码无需进行编码转换。 [ 51 ] Devices and Extensions 语音编码转换 语音编码的选择是终端和中继线路首先需要考虑的因素。经验告诉我们,成功的终端 或中继线路之间的通话需要选择正确的语音编码。当终端使用的语音编码和通过中继 呼入的终端之间语音不同的情况下,Asterisk 必须进行语音编码处理,以便两者之间 具有相同的编码。这个过程称之为语音编码转换。语音编码转换需要消耗CPU 资源, 导致Asterisk 稳定性受到影响。一个无编码转换的Asterisk 和一个支持编码转换的 Asterisk 两者之间的呼叫并发处理是完全不同的。. 取决于呼叫发起时的语音质量,比较差的语音编码方案,可能引起通话语音延迟。 编码转换前的语音质量和转换后的语音质量有比较大的差别。在极端的情况下,语 音无法传输。大家知道,Zap/DAHDI 中继 (PSTN 模拟线路,PRI 数字线路和T1 线路) 使用 G.711 语音编码。北美和日本的中继格式使用 G.711 ULAW codec. 其他 国家和地区使用 G.711 ALAW. VoIP 中继则很多支持 G.711 或 G.729 两种编码。 通过Asterisk CLI 命令: show translation 可以查看编码转换开销。以下矩阵列 表列出了各种编码之间的延迟: g723 gsm ulaw alaw g726 adpcm slin lpc10 g729 speex ilbc g723 - - - - - - - - - - - gsm - - 2 2 2 2 1 3 - - 27 ulaw - 5 - 1 2 2 1 3 - - 27 alaw - 5 1 - 2 2 1 3 - - 27 g726 - 5 2 2 - 2 1 3 - - 27 adpcm - 5 2 2 2 - 1 3 - - 27 slin - 4 1 1 1 1 - 2 - - 26 lpc10 - 5 2 2 2 2 1 - - - 27 g729 - - - - - - - - - - - speex - - - - - - - - - - - ilbc - 6 3 3 3 3 2 4 - - - 注意,一些语音编码需要购买许可证 (例如,Digium 销售基于对每个通道支持的G. 729 语音编码。另外一些语音编码是免费的,但是使用之前必须安装,例如Speex. [ 52 ] Chapter 3 编码选择的另一个考虑的因素是Asterisk 服务器端的网络带宽。 G.711 语音编码 (ulaw 和 alaw) 呼叫时双方各自占用 64 kbps 带宽 ( 64 kbps 发送本地语 音,64 kbps 接受对端语音,总共需要 128 kbps). G.729 语音编码则降低了带宽的需 求,双方各自需要 8 kbps. iLBC 则双方各自占用大约 15 kbps per 带宽。Speex 是一种 可变传输速率的语音编码,双方各自的带宽占用在 4 kbps 和 48 kbps 之间。使用 128 kbps 带宽在内网环境下来进行Asterisk 电话通话基本上是没有什么问题的。许多网络 运营商限制上行速度在 768 kbps 或者低于此要求(例如使用普通的DSL 连接网络)。 网络开销也是一个考虑的因素,选择不同的带宽,网络开销有所不同。节省的带宽可以 支持 10 个呼叫 G.711 语音呼叫,可以支持更多G. 729 呼叫。 在asterisk 环境下,通常的经验是通话双方的终端寻找相同的语音编码匹配,同时需 要带宽的考量,尽量不能超出带宽资源的限制。如果不能双方的编码不能匹配, Asterisk 将匹配占用最少带宽资源的语音编码方式来降低带宽的需求。始终记得,不 是所有的终端必须具有相同的语音编码。例如,如果一个通话时通过中继线路呼入到 asterisk, 使用 G.711语音编码,接听端在外网则通过运营商连接使用G.729 编码。这 时,需要进行语音编码的转换,因为呼叫双方使用了不同的编码。通过外网呼入的通 话使用的是16kbps 带宽连接Asterisk。 dial 选项是一个dial 字符串,asterisk 用来对终端设备发起呼叫。Dial 字符串可以被修 改。这是必填项。 accountcode 选项用来记录计费信息。字符串的最大长度为 20 字符。此值在分机呼叫 时保存在asterisk CDR 呼叫记录中。此项不是不必填项。如果为空,CDR 将记录分机 号码,不在保存呼叫关联的account code。 mailbox 选项 用来设定设备的语音邮箱。当 asterisk 收到设备终端的等待消息时,SIP 协议返回等待消息到指定的邮箱。大部分的终端设备提供各种提示信息,当信息进入 到语音邮箱。例如 (终端指示灯或者信息拨号音). 任何通过FreePBX 创建的邮箱,或 者手动添加到此文件的邮箱 /etc/ asterisk/voicemail.conf. 此项不是必填项。如 果为空,如果终端有等待语音信息,终端将不检查。 [ 53 ] Devices and Extensions deny 拒绝选项指定一个IP地址,Asterisk 拒绝接受来自于此地址的peer 访问。选项 格式为 IP 地址和子网 (例如不允许来自 192.168.1.1 to 192.168.1.254). 可以设置为 0.0.0.0/0.0.0.0 拒绝所有默认的网络访问。此选项通常用来限制某些特别的网络地址访 问asterisk, 如果此终端地址从网络删除或丢失,此终端将没有可能再次使用此终端 来发起通话。此项不是必填项。如果为空,Asterisk 将不在禁止此终端 IP 地址。 permit 选项的功能正好和deny 相反。Asterisk 仅允许指定的IP 地址或者子地址 访问Asterisk 服务器,并且接受数据传输。此选项不是必填项。如果为空, Asterisk 允许接受所有的IP地址的流量。 额外的 IAX2 域 一旦点击保存,IAX2 设备将显示 13 个额外的设置选项,这些选项在初始设置时是 不存在的: [ 54 ] Chapter 3 大部分的额外设置选项和SIP的额外设置选项功能相同。只有一个IAX 2 选项 notransfer 和SIP 有所不同. IAX2 notransfer 选项 和SIP 的 canreinvite 功能相同(只 是值的设置作用相反). 如果设置 notransfer 为 yes 将强制媒体流从Asterisk 服务器转 发, Asterisk 一直介于终端通话的媒体流之间。如果notransfer 设置为 no, IAX2 终 端设备将进行点对点媒体流通信,而不经过Asterisk 转发。 一般 Zap/Dahdi 选项 Zap 终端支持一个 通道选项。它引用了 Zap 通道。此通道是 Asterisk Zaptel (DAHDI) 语音板卡驱动和 ZAP 终端通信的接口。通道是指定的语音卡类型。运行 ztcfg 系 统 命 令 会 输 出 Zaptel (DAHDI) 语音卡和每个语音板卡的通道数量。此值是必填的,并且 必须是ztcfg/dahdi_cfg 命令显示的结果。 额外 Zap 设置选项 一旦通道保存,点击 Zap 终端设备,会出现 14 额外的选项,这些选项在初始设 置时是没有的: [ 55 ] Devices and Extensions immediate 选项设置,只要分机用户摘机,Asterisk 就开始一个拨号规则,无需用户 拨打的拨任何号码。这个选项通常使用在紧急呼叫的环境中,拨打的用户只要摘机, 电话会自动拨打到指定的服务中心(例如,电梯里面的电话机)。此选项使用环境 是,只有用户设置了一个自定义的context来支持的指定号码拨打流程。自定义的 context 必须手动添加到 /etc/asterisk/extensions_custom.conf 文 件 。 signalling 协议选项 用来对通道设置特定的协议。每个通道只能使用一种协议。 Signaling 通过 字符串来指定协议的值。此有效选项大约包括 40 多种。大部分的 ZAP/dahdi 终端设备使用 FXS_KS (Foreign eXchange Station-Kewl Start). 和设备厂 家检查终端使用何种协议类型。 echocancel 此选项对模拟终端启用 软件回声模块。不要和硬件回声抑制的DSP 混淆。 硬件回声模块必须硬件通过硬件板卡本身设置。有效选择范围为 no, yes, 16, 32, 64, 128, 或者256. 如果设置为 no, 将关闭回声抑制。 如果设置为 yes, 启用回声抑制, 并且设置为 128. 笔者建议如果硬件板卡没有回声抑制模块,此值设置为 启用 (enabled)。如果硬件有回声抑制模块,设置 echocancel 为 关闭 "no"。 echocancelwhenbridged 选项用来启用或者关闭回声抑制,当通话介于两个ZAP 终 端的之间。 大部分情况下,两个zap / dahdi 终端之间是没有回声的。所以此选项不 是必填项。 通常情况下,如果出现了回声问题,再尝试调整此项参数。如果无回声,无需调整此 参数。有效的设置选项是 yes 或 no。 [ 56 ] Chapter 3 echotraining 选项是ZAP 通道在呼叫前,用来自我学习以便调整到一个比较合适的合 理的范围。有效设置的值是 "yes", 或者数值介于 10 和 4,000 之间. Asterisk 将根据设 置的时长,把发起呼叫的通道设备设置为 静音。在此时间段内,脉冲信号将被发送到 对端,获得的回声脉冲信号将被返回,Asterisk 根据返回的信号来自我学习,并且调 整此通道的回声抑制。呼叫前,对回声进行自我学习,通过这样的方式可以获得基本 无回声的通话效果。如果已经发起呼叫,强制进行对回声的自我学习,回声抑制的效 果就相对较差。就像 echowhenbridged 选项,如果无任何回声抑制问题,无需启用 此选项。 busydetect 忙音检测用来检测 是否 ZAP/DAHDI 通道返回忙音。通常ZAP 设备是 模拟终端设备有时候可能不会对asterisk 返回任何状态信息。启用忙音检测功能, Asterisk 可以获得该模拟终端设备的状态信息,根据状态信息可以转接到正确的路 由环境。有效的值是 "yes" and "no"。 busycount 忙音计数器 选项 配合 busydetect 忙音检测来一起工作。如果忙音检测设置 为yes, 忙音计算器设置为一定的值,Asterisk 将根据忙音计算器的数值检测的结果来 决定该通道是否处于忙的状态。此值为整数值,必须大于1. 太大的值可能导致 Asterisk 挂机,太小的值可能导致通话中的语音重复。具体的环境需要客户不断测试 调整,以便到达最佳状态。默认的值是7。 当启用 callprogress 选项,强制 Asterisk 识别 各种模拟语音(例如特别指示音, SIT)来判断一个呼叫的处理过程。Asterisk 将识别振铃音,忙音,挂机音,或者其 他的指示音来提醒此通话已经接听。尽管此选项有很多好处,但是可能导致快速挂 机。 一般自定义域 自定义终端有一个 dial 域。这个选项可以支持Asterisk 通过dial 命令来呼叫此终 端(不是 默认的终端 SIP, IAX2, 或 Zap). 一般自定义的拨号字符串是: H323/ ${EXTEN}@(IPADDRESS) 对 一个 H.323 设 备 进 行 呼 叫 , 或 者 MGCP/${EXTEN}@(IPADDRESS) 对 MGCP 设备进行呼叫。IPADDRESS 必 须 是 设 备 地 址 。 [ 57 ] Devices and Extensions 在 Extensions 模式下创建新分机 在 Extensions 模式下,FreePBX 定义每个用户和对应一个终端设备。如果使用同一 个终端电话,Extensions 模式是一个比较好的选择。如果用户的FreePBX 系统设置 成了 DeviceAndUser 设备用户模式,用户可以跳过此部分。 为 Extensions 模式设置 FreePBX 通过编辑etc/amportal.conf 修改 FreePBX 工作模式. 如果在初始安装过程中, FreePBX 设置成了 Extensions 模式,创建新 分机无需额外步骤。以下安装步骤这是为初始过程中设置为 DeviceAndUser 模式下来创建分机。 使用root 帐号登录到linux 命令环境下,使用 nano 编辑此文件: nano /etc/amportal.conf 查询关键词 AMPEXTENSIONS=. 或者使用 Ctrl + W 快速查找 ,修改到 AMPEXTENSIONS=extensions. 保存并退出文本编辑器。 配置文件已经保存,并且以 Extensions 模式运行。运行此脚本,强制 FreePBX 使用此模式: /usr/src/freepbx-2.5.1/apply_conf.sh FreePBX 将以 Extensions 模式运行,用户可以退出系统。 [ 58 ] Chapter 3 设置分机 现在 FreePBX 在 Extensions 模式下运行,我们可以开始创建分机。每个终端用户使 用一个唯一的分机号码。设置分机,点击FreePBX 界面,然后点击 Setup 标签,出现 左边的截图: 在 Basic 下面,点击Extensions 链接. 添加一个分机,例如截图显示: [ 59 ] Devices and Extensions 从 Device 下拉菜单选择 终端 类型 (SIP, IAX2, Zap, 或者其他). 点击提交按钮 Submit . 系统将出现需要填入的信息,例如截图: 填入正确的分机相关信息。大部分必要信息已经在本章节讨论。关于 Voicemail & Directory 组的信息 将在 本章的Voicemail 设置部分进行讨论。关于 VmX Locater 组 的讨论信息将在第七章 呼叫路由的 分机随行和 VmX 定位进行讨论。 注意,只有 User Extension, Display Name, 和 secret 是必填项 。其他所有的设置项 可以不填入,以默认值来创建分机。另外,其他参数保存的信息,系统会提示信息。 [ 60 ] Chapter 3 所有成功创建的分机号码将显示在界面右边,同时方便用户检查分机 号是否重复。 所有选项填入以后,点击提交Submit 按钮 : 分机被保存在分机右边的列表,如截图: 使用分机之前,必须点击橘色的 Apply Configuration Changes 工具条,使之 生效,如截图: 一旦设备保存,激活的分机将显示在右边的列表当中,用户可以编辑其他额外的选 项。 自定义设备不显示额外的选项. [ 61 ] Devices and Extensions FreePBX 设置了大部分需要的设置选项。典型的配置不需要另外的设置。 在 DeviceAndUser 模式下创建分机 在 DeviceAndUser 模式下,FreePBX 每个用户可以关联多台设备。对于复杂环 境,DeviceAndUser 模式是一个比较好的选择。每个用户可以在不同的地方使用 不同的设备登录同一用户帐号。如果用户的PBX 设置成了 分机模式,此部分可以 跳过。 DeviceAndUser 下配置 FreePBX 通过系统命令修改FreePBX 的工作模式,编辑以下文件 /etc/amportal.conf 文 件. 如果 FreePBX 在初始安装过程中设置成了 DeviceAndUser 模式,无需 额外的步骤创建分机帐号。如果在初始安装时,FreePBX 设置成了 Extensions 模式,需要按照此步骤执行。 以 root 帐号登录系统后台,使用命令编辑文件: nano /etc/amportal.conf 找到 AMPEXTENSIONS=. 字段,或者通过命令查找找到此字段,修改成 AMPEXTENSIONS=deviceanduser 保存此文件,退出文件编辑器。运行以下命令,强制修改模式: /usr/src/freepbx-2.5.1/apply_conf.sh FreePBX 将在 DeviceAndUser 模式下运行,用户退出系统。 [ 62 ] Chapter 3 设置用户 现在FreePBX 运行在 DeviceAndUser 模式下,我们可以创建用户。每个用户要求一个 唯一的分机号码。设置分机号码,点击设置 FreePBX 界面,点击 Setup 标签,出现此 截图: 点击 Basic 目录下的 User 链接,将出现 Add User/Extension 截图: [ 63 ] Devices and Extensions 填入所有必要的选项信息,除了基本的信息以外,有一个 User Password 栏. 此 栏是一个数字密码格式,用户可以通过此密码登录到任何一个相关的PBX 终端设 备。 大部分的选项都已经在前面的章节进行了介绍。关于 Voicemail & Directory 组的信 息将在 此章节的 后续部分进行讨论。关于 VmX Locater 组的讨论将在第七章的分 机随行- Follow Me 和 VmX Locater 部分进行讨论。 注意,主要 User Extension, User Password, Display Name 是必填项。所有其他的 选项可以为空,分机创建不受影响。另外,除了 User Extension 选项,其他选项保 存前将被提醒。 所有创建的分机将显示在界面右边,便于客户非常直观的管理。 一旦完成填入需要选项,点击提交按钮,如图: 用户列表将显示在菜单的右边: [ 64 ] Chapter 3 在使用分机前,配置文件必须更新。点击橘色工具条 Apply Configuration Changes,点击更新以后才能使用分机。如截图: 用户信息保存以后,才能重新编辑用户的其他功能,例如可以添加 Follow Me 和 Gabcast 选项,如图: 在第七章,我们将讨论 Follow Me 分机随行的设置. 用户配置以后,我们可以设置 设备。 设置设备 用户设置以后,开始设置终端设备。 登录 FreePBX 界面,点击Setup 标签,可以看到 如下截图: [ 65 ] Devices and Extensions 在 Basic 目录下,点击设备. 添加设备截图: 从 Device 下拉菜单选择终端类型 (SIP, IAX2, Zap, 或者其他终端)。点击提交 按钮,系统显示如下截图: [ 66 ] Chapter 3 填入正确的选项内容。终端界面设置选项依赖于终端类型。所有终端都支持 Device ID, Description, Emergency CID, Device Type, 和 Default User. Device ID 选项是唯一的数值选项,是Asterisk 用来 拨打此设备的号码。当设备被设 置的时候,SIP 和 IAX2 设备都要求此选项。 所有设备帐号都显示在界面右栏,方便管理员检查帐号是否重复。 . 描述是一个文本描述,定义此设备的用途。通常描述本机的所处物理环境 或者是MAC 地址。 Device 类型选项可以是 "fixed" 或 "adhoc". Fixed 设备支持同一用户登录使用。 (用 户不可能退出此设备). adhoc 动态设备 允许用户登录或者退出此设备。当用户登录 一个adhoc 设备时,任何对此终端的呼叫都对此终端振铃。其他用户也可以登录此设 备,如果有此用户来电,同样对此用户的分机进行振铃。 从默认的下拉菜单选择的用户,设备将此用户作为默认支持的用户。Fixed 设备要 求设置此选项。Adhoc 设备支持设置此值为 "none" ,所以此设备无任何默认用户。 所有选项填入以后,点击提交按钮,截图如下: [ 67 ] Devices and Extensions 一旦设备保存以后,设备列表将显示此设备。注意,额外的选项在初始设置时是不会 显示的。 自定义终端无任何额外选项。 FreePBX 自动设置了大部分采用的选项。一般功能设置无需修改那些额外的选项。 语音邮箱设置 Asterisk voicemail 功能完全可以和企业级的语音邮箱解决方案媲美。利用FreePBX 设置语音邮箱更是一件轻而易举的事情。 语音邮箱发送选项 Voicemail 选项在 Extensions 页面 (如果 FreePBX在 Extensions 模式工作 mode), 或者在 Users 页面 (如果 FreePBX在 DeviceAndUser 模式). 从导航菜 单点击 Extensions 或 Users, 点击用户名称开始设置语音邮箱。如截图: Status 选项可以设置为启用或者关闭。如果关闭语音邮箱,语音不会转到语音邮箱, 呼叫一直振铃,直到对端挂机。所有其他选项都是关闭的,除非启用了语音邮箱。 [ 68 ] Chapter 3 Voicemail 密码选项应该设置成号码类型,用户可以通过密码访问语音文件,而且用 户可以通过终端设备修改此密码。 语音邮箱必须是邮箱的邮箱地址,如果有语音邮件,系统默认显示提示信息。此项支 持一个邮箱地址。 Pager Email Address 广播邮件地址 是asterisk 可以用来发送 语音信箱到 移动终端的 地址。此移动广播信息选择在 140 个字节以内,通常用来 和短信服务连接 或者短信广 播服务。注意,此项不是 一个移动电话号码,是一个 邮件地址。 大部分移动运营商 提供 邮件到短信的服务,通过此服务,把邮件发送到 移动号码上。 如果 Email Attachment 附件选项设置为yes, 发送邮件时将把语音信息按照附件发送 到 用户邮箱。此语音信息可以通过电脑 输出设备进行播放。语音附件在 广播邮件地 址设置选项是不支持的,也就是说 邮件不附带此语音文件。 如果设置 Play CID 选项为 yes,系统将自动 播放 留言用户的电话号码。 如果 设置 Play Envelope 选项为 yes, 用户将可以听到 留言语音信息的内容和日期 时间。 如果 Delete Voicemail 删除语音邮件设置为 yes, 一旦系统发出提示信息,并且系统发 送了语音邮件以后,新的语音邮件将被删除。注意此选项,在未拷贝语音邮件提示的情 况下,FreePBX 将允许用户删除语音邮件。这可能意味着提示信息发送到了用户端,但 是语音邮件可能已经不能被访问,或者已经被删除。 VM 选项可以包含 任何在 /etc/asterisk/voicemail.conf 文 件 的 参 数 . 这些参 数可以在 听 留言信息时,或者 调整语音文件音量时, 强制 对 用户 姓名 和问候语进 行 录音,或者启用 一个警告信息 。详细设置在 附录 C, Voicemail. conf 选项 或者 voicemail.conf 文 件 。 可 以 输 入 多 选 项, 通 过 逗 号 分 开 。 [ 69 ] Devices and Extensions Voicemail Context 项可以设定 为任何字符串的形式,此值在 /etc/asterisk/voicemail.conf 文 件 中. Voicemail contexts 可以用来管理 一个特 别的语音邮件组。 如果用户没有手动修改文件 voicemail.conf 文 件 中 的 voicemail contexts, 默认为 "default"。 当完成 语音邮箱设置后, 点击提交按钮,点击 Apply Configuration Changes 工具 条更新设置。 管理语音邮箱信息 两种办法来管理语音邮箱信息: • The Asterisk messaging center • FreePBX支持的AR I 界面管理工具 用户从自己的终端设备 拨打 *97 可以访问自己的语音邮箱,输入密码就可以 听 语音留言信息。如果从其他用户终端访问 语音邮箱,可以拨打 *98 然后输入分机 号码和密码,确认用户信息以后,用户可以听到语音邮件留言。 登录留言信息中心以后,以下选项是有效的功能选择码: • 1: 播放最早的信息留言,听的时候,可以选择按键: ° 3: 高级选项 (允许用户发送语音回复信息,回拨到留言用户, 播放留言日期和时间) ° 4: 播放前一段语音留言 ° 5: 重复播放本语音留言 ° 6: 播放下一段语音留言 ° 7: 删除当前语音留言 ° 8: 转此录音到其他用户 ° 9: 保存到其他文件夹 ° *: 倒回此语音留言5秒钟 ° #: 快进此留言5秒钟 [ 70 ] Chapter 3 • 2: 修改文件夹 • 3: 高级选项 • 0: Mailbox 选项. 以下选项有效: ° 1: 记录无效信息 ° 2: 记录忙信息 ° 3: 记录名称 ° 4: 修改语音邮件密码 ° *: 返回主菜单 如果用户希望通过可视化的界面来获取语音邮件,用户可以通过Asterisk Recording Interface (ARI) 界面管理系统来获得语音播放管理。用户提供浏览器,输入 FreePBX IP地址录音界面,(例如, http://192.168.0.10/recordings)。截图如下: [ 71 ] Devices and Extensions 用户可以使用分机号码和语音邮箱密码登录 ARI 界面系统。登录以后可以看到如下 截图: 此用户界面可以看到目前的语音邮箱选项,点击 Message 栏下的 Play 链接,就可以利 用用户PC 自带播放器播放语音留言。 用户通过点击 复选框来删除选择的语音信息。 语音信息可以通过复选框选择需要移动的语音选项,然后点击date 文件夹下拉菜单, 点击 move_to 按钮来移动到新的文件夹。 同样语音信息可以被 转到 其他用户。选择复选框,然后在第二行下拉菜单选择用户, 点击forward_to 按钮。 [ 72 ] Chapter 3 目录列表 大部分的 PBX 系统允许用户通过 按 (#) 键,输入姓,或者名,或者姓名全称来查询 所有在PBX 中目录列表的用户。此功能要求用户必须是在目录列表中的用户,并且此 用户的语音邮箱邮件启用。只要启用语音邮箱的用户就会显示在目录列表中,否则不 会显示。 设置目录选项,点击 FreePBX 导航菜单的General Settings 一般设置的链接,如图: 公司目录选项在页面的中间部分。 这里有几个公司目录选项。Find users in the Company Directory by option 可以 设置为通过 "first name", "last name", 或者 "first or last name" 来查询。目录中的 用户可以通过以上任何组合查询来获得查询结果。 如果启用了 Announce Extension 选项,在通话过程中,系统将通过目录列表查询到被 呼叫的用户,此通话将被转接到被呼叫者,并且转接之前播放分机号码。如果设置为 no,此通话直接转到该分机,无任何额外提示信息。 [ 73 ] Devices and Extensions Operator Extension 是目录列表一个号码,如果呼叫者按按键 0, 通话将被转接。此选 项可以是 一个分机号码,振铃组,队列 或者一个外部号码。 总结 在这章,我们学习了在 分机模式下或者设备用户模式下 如何创建用户和终端。我们也 讨论了freePBX 在设备用户模式下,设备和用户的区别。通过对这章的学习,我们应 该有一个可以工作的FreePBX 系统,用户帐号,和设备的选项支持。最后,我们学习 了如何创建语音邮箱,并且通过Asterisk 信息管理中心和ARI 管理用户的语音信箱。 在目录列表中,每个用户配置了相应的语音邮箱。 下一个章节,我们将讨论如何通过中继连接PBX的外部世界。 [ 74 ] www.hiastar.com 第四章 中继 中继可以简单的认为是 电话系统的呼入或者呼出的通信路径。电话系统通过中继连接 PBX 的外部世界,例如 PSTN 电话线路。中继接入方式可以是PRI 或者 PSTN 线路, 或者通常我们说的E1 数字线路,或者模拟中继线路,还有虚拟的线路,例如 通过IP 呼 叫路由线路。我们将讨论以下内容: • FreePBX 支持的各种中继线路 • 设置中继线路的方法 • 检查配置的中继状态 中继类型 FreePBX 支持创建6 种 中继类型: 1. Zap/Dahdi 通过语音板卡创建的中继 2. IAX2 3. SIP 4. ENUM 5. DUNDi 6. Custom Zap, IAX2, SIP 中继利用本身的技术特点创建中继连接。这些中继类型就像在终端 状态使用一样,有各自的亮点和隐患。Zap 或者dahdi 中继要求安装Asterisk 语音 板卡,语音板卡支持FXO 或者E1 数字接入。 SIP 中继是使用最多的一种中继类 型,但是可能需要面对 NAT 防火墙问题。 IAX2 中继 可以穿透防火墙,但是仅仅 局限于Asterisk 平台-Asterisk 平台之间的中继对接。 www.hiastar.com Trunks 在VOIP 环境下, ENUM (E.164 NUmber Mapping, 号码映射) 用来通过VOIP 路由 统一管理 E.164 (国际电信拨号规则) 的一种方法。ENUM 系统的工作原理类似于 Internet DNS 域名解析系统一样。VOIP 运营商可以通过 ENUM 系统提供一个电话 号码。从而使国际统一的E.164电话号码成为可以在互联网中使用的网络地址资源。 ENUM 中继允许FreePBX 对 公共服务器 e164.org ENUM 服务器拨打号码,此服务 器将通过此号码查询一个相应的中继路由,然后此通话可以根据此路由呼出。一个 VOIP 呼叫路由 包含 VOIP 协议,服务器名称或 IP地址,端口,分机号码。freePBX 就可以 通过以上信息,把需要拨打的号码绑定到此呼叫路由,实现通话。例如,通过 一个SIP 路 由 拨 打 的 号 码 是 555-555-1234 , 表 现 的 形 式 可 能 是 SIP:1234@pbx.example.com:5060. 这是一个比较好的功能。重要的是,间接路由到其 他的电话系统通常话费是比较便宜的。呼叫一个传统的PSTN 线路,通常需要第三方 的运营商和交换设备。如果这个被呼叫的号码在ENUM 系统,通话将绕过话费比较 昂贵的运营商服务,直接通过一个在 ENUM 回复的路由来转接到被呼叫方。 ENUM 对呼叫方也是有好处的,允许被呼叫方可以任意转接此通话。通话服务可 以被转接到指定的号码,或者路由ENUM 系统中的其他路由分机。 访问以下网站链接,获得更多 ENUM 信息: • The ENUM home page: http://www.enum.org/ • The e164.org home page: http://www.e164.org/ • The Internet Engineering Task Force ENUM charter: http://www.ietf.org/html.charters/enum-charter.html DUNDi (Distributed Universal Number Discovery, 分布式全球号码查询) 是 类似于ENUM的路由协议。为了通过 DUNDi 协议查询另一台Asterisk 系统服 务器,在本asterisk 服务器必须设置 另一台服务器为 peered 属性。Peering 要 求双方生成和互相交换 密匙文件。 [ 76 ] Chapter 4 DUNDi 是一种通过分布式的方式完成对 ENUM 格式的查询。通过点对点查询方式 可以快速发现对端的连接状态。如果系统 A 通过 peers方式和 system B 连接, system B 通过 peers 方式和 系统 C连接, 那么 system C 可以获得 系统A 通过的呼 叫路由。在点-点环境下,系统 B 将直接 转接 系统C 到系统A 的通话。 DUNDi 不完全局限于 E.164 号码匹配架构,它允许 PBX 系统可以发起一个单独的呼 叫,或者路由模式,而不是整个号码。因此,这是一个比较好的备选分布式PBX解决 方案。一个主PBX 通过 DUNDi 和 远程的PBX连接,分机之间无需通过中继路由和远 程的PBX 分机通信。 访问以下网站链接,获得更多信息: • DUNDi home page: http://www.dundi.com/ • Example DUNDi SIP configuration: http://www.voip-info.org/wiki/ view/DUNDi+Enterprise+Configuration+SIP • Example DUNDi IAX2 configuration: http://dundiglobal.org/ documentation/tying-two-pbxs-together-using-dundi-and-iax2 自定义的中继工作原理类似于自定义分机方式。在FreePBX 呼叫下,任何有效 的中继路由可以通过Asterisk Dail 命令呼出。通常自定义的中继路由包括 VOIP 协议 H.323 和 MGCP。 设置一个新中继 在FreePBX 环境下,中继设置的方式基本和分机设置方式是一样的。所有的中继方 式共享 8个 一般设置参数选项,还有几个特别的选项是专门为指定的中继使用。 一般中继设置列表在附录 D 部分列出。 [ 77 ] Trunks 登录左边的导航菜单,点击 Trunks 连接,出现以下截图: 在 Add a Trunk 添加中继界面,点击中继支持的相应类型 (例如,使用 SIP 中继就点 击添加SIP 中继),如下截图: 一般中继设置域 无论使用何种协议设置中继线路,以下 8 个选项是一样的,如下截图: [ 78 ] Chapter 4 Outbound Caller ID 呼出路由号码设置 呼叫方的电话号码名称和号码,此设置参数 将在透传到被呼叫方。Caller ID 格式必须是 "Name" <##########>, 这里 "Name" 是将要显示的名称,<##########> 是对端接收的来电显示号码。确认包括引号和 尖括号来发送名称和呼入电话。如果只是发送一个呼出号码,填入号码即可,无需 引号和尖括号。注意,此功能支持(T1/E1/J1/PRI/BRI/SIP/IAX2), 不包括 POTS 线 路。确认运营商支持透传呼出号码。 如果 outboundcallerid 格式设置不当,FreePBX 将忽略此设置。确认 如果 填入 caller ID 和 name,name 必须带引号,号码必须带尖括号。如果只 是设置 一个呼出号码的话,仅接受号码格式,无需其他设置。如果不能匹 配以上格式,FreePBX 将不发送 呼出的号码。 Never Override CallerID 复选框 用来关闭FreePBX 的其他功能设置了中继的呼 号码。如果用户选择了复选框,Outbound CallerID 选项的值将作为 呼出号码。 功能对中继运营商非常有用,通常运营商会根据用户发送的呼出号码来决定是 是否是正确的呼出号码,如果是,则允许呼出;否则挂机。这样可能导致通话回 的状态(呼叫前转到一个外部号码,但是FreePBX 试图在源呼叫设置呼出号码 样,运营商就可能挂机)。如果呼入通话被路由会到运营商,运营商会直接挂机 并且启用此选项。 Maximum Channels 最多呼叫数 用来设置此中继线路支持的最大呼叫数量。注意, FreePBX 不对呼入进行计数。此选项要求数量必须大于1为有效。如果无限制,设置 为空。 Disable Trunk 关闭复选框 用来临时关闭指定的呼出中继路由。如果一些呼出中继出 现问题,关闭此中继以后,呼出时,路由选择将忽略此呼出中继。通常情况下,如 果此中继线路不能工作,呼入电话将被拒绝。但是,呼叫可以被接受,可能会出现 连接失败。此功能非常有用,如果没有关闭此中继线路,所有的呼叫将被挂机。如 果关闭此中继,呼叫将自动转接到其他有效中继线路。 [ 79 ] Trunks Monitor Trunk Failures 监测中继项 ,当中继连接失败以后,FreePBX 将调用一个 AGI 脚本。如果中继连接失败或呼叫失败,FreePBX 将从Asterisk 获得 not BUSY, NOANSWER, 或者 CANCEL 挂机原因. 定义的脚本可以执行任何任务,例如重新加载 Asterisk,强制重新注册 中继,或者通过邮件提示系统管理员。中继监测脚本必须 安装在 /var/lib/asterisk/agi-bin 路 径 下, 并 且 指 定 脚 本 程 序 的 全 称 。 Dial Rules 拨号规则,简单来说,拨打号码 经过修改后通过指定的中继线路呼出。 拨 打号码 通过此项的 匹配模式来决定中继的路由。格式是一行一个匹配模式。当匹配第 一个模式时,系统将允许通过此匹配呼出。以下是匹配模式列表: Pattern 描述 X 任何从 0-9 整数 Y 任何此 1-9整数 N 任何从2-9整数 [#] 方括号中的任何整数或者字母. 注意多个数字可以用逗号分开,或者可以使 用破折号指定数值范围,例如[1,3,6-8],将匹配号码 1, 3, 6, 7, 和 8。 . 匹配一个或多个字符,类似于通配符。 | 从拨打的号码中,删除前缀号码 ,例如 555|1234567 ,将拨打的号码 5551234567 中的 555 删除,发送 1234567 到中继线路呼出。 + 添加前缀号码到拨打号码,例如 555+1234567,在1234567 号码前插前缀号码 555, 然后发送到中继线路。 注意,通配符在 "+" 或者 "|". , "+" 和 "|" 之前是无效的。例如 0|01+15551234567 将提取 015551234567 ,发送 0115551234567 到中继线路。 拨 号规则是相当有用处的一个功能。有时候尽管运营商希望通过不同的规则来呼 叫,但是用户可以根据自己的拨号习惯来继续拨打呼出号码。 [ 80 ] Chapter 4 拨号模式样本: Scenario Dial Pattern(s) 通过拨9 前缀和呼出号码出局。 9|1+NXXNXXXXXX 9|1NXXNXXXXXX 运营商需要提供帐号代码和呼叫号码出局。帐号是654321。号码 格式是10位数。 5432101+NXXNXXXXXX 543210+1NXXNXXXXXX 拨打8XX, 删除1 出局。 注意,匹配模式的顺序。在例子中,如果最后一个匹配模式放在 第一位置,拨打 800-555-1234, 删除 1 以后, 呼叫可能失败。 1|888NXXXXXX 1|866|NXXXXXX 1|877|NXXXXXX 1|800|NXXXXXX 1+NXXNXXXXXX Dial Rules Wizards 是用来为 Dial Rules 项预设一个拨号模式。选择 预设的拨号模式 名称,此拨号模式将关联相应的 Dial Rules . Outbound Dial Prefix 呼出拨号前缀,对每个呼叫添加一个呼出拨号前缀,通过匹配 的中继线路呼出。在某些PBX环境下, 用户拨打出局电话,通常需要先按一个数字, 例如9, 然后输入拨打号码。对于一些 语音卡来说,用户拨打时间和线路接听之间有 一个等待时间。在 呼出拨号前缀前添加 一个 "w" 字符,可以通知系统等待 50 毫秒, 然后出局。多个w 字符,时间将更长。此选项可以填入任何支持 asterisk dial 命令有 效参数。 Zap/Dahdi 中继 除了中继的一般设置以外,ZAP 中继 还有另外一个选项, 如下截图: [ 81 ] Trunks Zap 中继名称 必须匹配通道组的名称(或者通道号码)。此设置文件是 /etc/asterisk/zapata.conf 文 件 。 Zapata.conf 包 含 以 下 设 置 : context=from-zaptel group=0 signalling = fxs_ks channel => 1 context=from-zaptel group=0 signalling = fxs_ks channel => 2 在 Identifier 中继名称的 项中,输入 g0 的值。此值从 组 0 开始顺序将 呼叫每个通 道,直到 有通道 接听。另外的方法是,每个通道可以设置到一个指定的组,例如 组0 指定到 g0-1,组 0 通道1, g0-2 组 2 通道 2. 以此类推。 所有必填项输入以后, 点击提交按钮,以上数据将被写入数据库,然后点击 Apply Configuration Changes 工具条, 刷新内存的配置数据。 IAX2 和 SIP 中继 IAX2 和 SIP 中继共享同样的额外配置,如下截图: [ 82 ] Chapter 4 Trunk Name 中继名称。FreePBX 不解析此数值。这是简化的FreePBX 界面的中继设 置。 PEER Details 是呼出设置信息,此设置被添加到 iax.conf 或 者 sip.conf 来 管 理 I A X 2 或 者 S I P 中 继 线 路 。 每 个 运 营 商 的 设 置 信 息 可 能 不 同。 在 F r e e P B X 默 认 环 境 下, 系 统 将 需 要 设 置 大 部 分 经 常 使 用 的 选 项 。 PEER Details 信息选项,host 是运营商的 IP 地址 或者 运营商的DNS 主机名称。 Asterisk 将使用此名称通过中继线路出局。运营商提供 username 和 secret 对中继 线路进行安全认证。线路类型必须设置为 peer, 这是asterisk 呼出的目的地(不能 接受来自于从此目的地的呼入)。 USER Context 选项是运营商 提供的电话号码,帐号或者帐号名称。运营商将通过以 上信息,发送呼入呼叫到以上帐号。有一些运营商不要求以上内容,运营商呼叫直接 送到注册的IP地址。 USER Details 项 是用来设置呼入中继配置信息的,通常添加到 iax.conf 或者 sip.conf 文 件 对 I A X 2 或 者 S I P 中 继 进 行 管 理 控 制 。 就像 p e e r s 设 置 一 样 , 需 要 运 营 商 提 供 设 置 参 数 信 息 。 在 USER Details 信息栏,运营商根据 secret 密码对呼入的呼叫进行安全认证。线路 类型必须设置为 user。以便 Asterisk 接受来自 此中继的呼入通话。(不能利用此中 继出局)。 context 表示一个路由标签,来自于此中继的呼入事件将被发送到这个 context。除非 你已经自定义一个context,呼叫指定到 from-trunk 线路,FreePBX 将处理此通话。 参 数设 置 顺 序非常 重 要 在 PEER Details 和 USER Details 项设置的 参数一定要注意顺序。这是非 常重要的。 如果 一个确定的参数 在这些选项中出现两次,系统将使用第二 个参数,第一个参数将被忽略。例如, 如果设置了 allow=ulaw,紧接着 设置 deny=all, 那么所有的语音编码将被禁用。请小心设置参数的顺序。 如果设置错误,可能导致中继拒绝呼叫或者不能呼叫等等非常棘手的问 题。 [ 83 ] Trunks Register String 注册字符串也需要设置,运营商应该提供 此信息。FreePBX 将使用此 项尝试对运营商进行注册。当客户呼叫本地的号码时,运营商将根据注册信息来判断 发送呼叫的目的地。支持字符串的格式是 : [username]:[password]@[voipserver] (例如, 5551234567:password@sip.example1.com). 如果运营商不提供注册字符串,运 营商必须允许呼叫一个指定的IP地址,而且此运营商地址是不能被修改的。 ENUM 中继 ENUM 中继除了一般设置以外,没有其他特别的要求。唯一的要求就是对 e164.org 数据库进行查询 . e164.org 要 求 的 格 式 是 :[国家代码][电话号码], 通过 配置FreePBX 的拨号模式匹配,找到用户地址。 DUNDi 中继 DUNDi 中继线路的设置需要提前做一点工作。设置DUNDi 之前,PBX 必须和 至少一个 或者多个peer 建立接点。不能在 FreePBX 界面设置 Peer DUNDi 节 点,必须编辑在双方的 PBX, 配置此文件 /etc/asterisk/dundi.conf 文 件 。 一旦 PBX 设置为 peer 节点, 通过 FreePBX 可以创建 DUNDi 中继。除了一些基本 的配置,DUNDi 中继要求额外的配置信息,如下截图: DUNDi Mapping 映射对 提示FreePBX 哪一个 DUNDi context 原来查询结果的。有 可能几个 DUNDi contexts 共享 不同的VOIP 路由。一个 DUNDi 可能有一个 DUNDi context 在分公司之间共享本地分机,另外一个DUNDi context 可能为了一个外部呼 叫。在FreePBX 环境下,每个 DUNDi 中继有自己的 DUNDi context。 [ 84 ] Chapter 4 编辑文件 /etc/asterisk/dundi.conf 文件,找到 标签[mappings] 部 分 ,应 该 显 示以 下 设 置: [mappings] priv => dundi-localextensions,0,IAX,priv:${SECRET}@pbx.examplehost. com/${NUMBER},nopartial pub => dundi-publicnumbers,0,IAX,priv:${SECRET}@pbx.examplehost.com/ ${NUMBER},nopartial 在这个例子中,priv 是 DUNDi context 名称,可以 调用 任何本地分机。如果 peer 需要这个context,Asterisk 将调用 dundi- localextensions 拨号规则 context。同理,pub 是 一 个 外 部 的 DUNDi context,此 context 将调用 任何 在dundi publicnumbers 拨号规则下的路由列表。输入DUNDi context 名称,点击提交按钮。 旦保存此 数据,然后点击 界面上方的 Apply Configuration Changes 工具条,更新 存数据。 自定义中继 自定义中继类似于 自定义 分机和设备。仅有一个额外的项需要填写,如下截图: Custom Dial String- 自定义 拨号字符串可以是任何 Asterisk dial 命令支持的参数。特 别注意的是:使用 $OUTNUM$ 作为呼叫号码,插入到 自定义拨号字符串。例如, 呼叫一个 H.323 设备,此设备地址是 192.168.1.2 ,那么格式是 H323/192.168.1.2/$OUTNUM$。 输入有效的自定义拨号字符串,点击提交按钮,然后点击 界面顶部的 Apply Configuration Changes 工具条来设置自定义拨号字符串。 [ 85 ] Trunks 检查中继状态 检查中继状态可以通过Asterisk CLI 命令检查或者通过FreePBX 的脚本来检测中继状 态。 使用 Asterisk CLI,检测中继状态 Asterisk CLI 命令可以通过 Asterisk CLI 模块来访问。为了登录 CLI 模块,点击导航 菜单 的Tool 标签,,点击 System Administration 下面的 Asterisk CLI 链接,看到如 下截图: The Asterisk CLI 界面显示如下: [ 86 ] Chapter 4 Asterisk CLI 页面 包含 一个单行的文本 输入框。用户可以在框中 输入 Asterisk CLI 命令。输入命令以后,当点击执行按钮,结果将显示到界面上。 CLI 可以用来 检查 中继状态。也可以检查 显示分机,已安装的语音编 码,编码矩阵列表 和 其他相关信息。请访问以下链接检查: http://www.voip-info.org/wiki/view/ Asterisk+CLI. 通过执行命令 : sip show registry 检 查 网 络 状 态: Host Username Refresh State sip.provider1.com:5060 5551234567 120 Request Sent sip.provider2.com:5060 5550123456 105 Registered Host 列 显 示 中 继 注 册 的 主 机 地 址 。 Username 列显示运营商提供的用户帐号,可能 是任何运营商提供的电话号码。 Refresh 是多少秒刷新一次中继注册状态。State 显 示中继的状态,指示中继是否成功注册。 State 可 能 显 示 其 中 以 下 值:: State Explanation Request Sent 注册信息正在发送到服务器端,但是还没有收到服务器端的回复信息。此 时,还没有被注册,不能路由呼叫。Request Sent 不 代 表 注 册 成 功 或 注 册 失 败 ,仅 是 提 示 当 前 试 图 注 册 。 如果网络断开,运营商中继处于关闭状态,或者asterisk 重新加载,系统 会看到 Request Sent 状 态 。 [ 87 ] Trunks State Explanation Timeout 表示Asterisk 不能注册到运营商服务器。发送几次注册信息以后,asterisk 没有收到任何回复信息。此时 不能呼叫。 Timeout 状 态 指 示 连 接 问 题 。可 能 是 网 络 断 开 或 者 运 营 商 中 继 关 闭 。 一 旦连接回复,中继将回到正常状态。 Rejected 因为安全认证原因,在asterisk 指定的运营商中继主机名称被对端拒 绝。中继设置中的用户名称或者密码需要核实确认,否则不能注册。 Registered 中继已经成功注册。中继功能正常,可以通过此路由出局。 以上例子中,第一个中继线路正在通过 用户5551234567 注册到 sip.provider1.com 进行验证。Request Sent 说明 a s t e r is k 已 经 发 生 了 注 册 一 起 到 服 务 器 端,但 是 没 有 收 到 回 复 。 用户 5550123456 成 功 注 册 到 了 sip.provider2.com. 中继收到呼叫以后将发送到 PBX。 通过执行命令 iax2 show registry 检 查 状 态 : Host Username Perceived Refresh State 4.1.1.1:4569 098564 1.1.1.1:4569 60 Registered 4.2.2.2:4569 6840372 60 Rejected 4.3.3.3:4569 727044 60 Timeout IAX2 中继显示更多中继状态信息。 主机名称总是显示 IP 地址,而不是 主机域名。 Perceived 栏 显示 运 营 商 看 到 的 P B X 的 I P 地 址 。 其 他 值 和 S I P 中 继 的 作 用 相 同 。. [ 88 ] Chapter 4 以上例子中,用户 098564 成 功 注 册 到了 4.1.1.1 服务器. 运营商看到的本端的IP 地址是 1.1.1.1. 用户 6840372 对 4.2.2.2 进行注册, 但是此要求被拒绝. 拒绝 原因可能是中继的用户名称或者密码错误。超时状态的例子,用户 727044 尝 试 注 册 到 IAX2 服务器 的 4.3.3.3 IP 地址,可能因为是服务器关闭或者 网络连接问题导 致。 通过 FreePBX 脚本语言检测中继状态 通过 Monitor Trunk Failures设置对每个中继的状态进行检测: 为了启动脚本检查工具,需要输入脚本名称和启用框来启动脚本自动检测中继状态功 能。此脚本必须是一个可执行的脚本程序,脚本程序保存到 /var/lib/asterisk/agi-bin 目录下 当中继不能接收任何通话的情况下,脚本检测工具才回启动。在以下情况下,脚本 检测工具将不运行,包括忙音,通道拥塞,或者无应答的呼叫。 Failure scripts 不会停止 呼叫处理。如果一个呼入通过 3个中继路由,第一条中继 线路关闭或者停止工作,系统将会继续转接呼叫到第二条中继线路或者第三条中 继线路。 Failure scripts 脚本检测可以支持多种方式的检测管理。通常是发送中继失败提示信息 (包含系统日期时间和主机名称)到管理员邮箱: #!/bin/bash EMAIL=admin@examplecompany.com // 管理员邮箱,例如james.zhu@hiastar.com DATE=`date` HOST=`hostname` MESSAGE="A trunk has failed on $HOST at $DATE" echo -e "$MESSAGE" | mail -s "Trunk Failure" "$EMAIL" [ 89 ] Trunks 另外这个脚本程序检测如果中继线路关闭或者断开,强制Asterisk 重新加载配置文件。 #!/bin/bash EMAIL=admin@examplecompany.com DATE=`date` HOST=`hostname` /usr/sbin/asterisk -rx "reload" SIPTRUNKS=`/usr/sbin/asterisk -rx "sip show registry" IAXTRUNKS=`/usr/sbin/asterisk -rx "iax2 show registry" MESSAGE="A trunk failure forced a reload on $HOST" MESSAGE="$MESSAGE\nDate: $DATE" MESSAGE="$MESSAGE\nCurrent Trunk Status:" MESSAGE="$MESSAGE\n\nSIP Trunks:\n$SIPTRUNKS" MESSAGE="$MESSAGE\n\nIAX2 Trunks:\n$IAXTRUNKS" echo -e "$MESSAGE" | mail -s "Trunk Failure" "$EMAIL" 以上脚本先强制asterisk 重新加载,执行命令 asterisk -rx "reload", 然后通过命 令 show registry 获 得 中 继 的 最 新 状 态 信 息,打 包 所 有 数 据 发 送 到 指 定 的 管理 员 邮 箱 。. 以上例子只是告诉用户一个简单的 脚本检测工具的实现,当然用户可以利用其它的 语言,例如Perl, PHP, C, Pascal, BASH, 和 Java 通过AGI 命令来编写 更加灵活 的,符合公司方案的工具。例如,除了发送邮件,可以通过数据库显示到管理员页 面,或者执行系统命令通过其他的中继线路(如果有模拟中继的话)呼叫管理员等 等方式。 总结 现在我们已经配置好了功能完整的中继线路,我们可以通过各种中继线路来实现呼出 呼入通话功能。我们可以通过检测工具来判定线路中继线路的状态。 下一章,我们将介绍如何设置各种呼叫的接听对象,例如呼入通话路由等等功能。 [ 90 ] www.hiastar.com 基本呼入目的地 在 FreePBX 系统,一个呼叫可以支持不同的呼叫目的地。呼叫的最终对象可能是 一个语音IVR,输入不同的数字,路由到 一个分机,振铃组中的一个终端设备, 或者一个虚拟的终端然后路由到其他指定的应用。一个呼叫可以有几个呼叫的目 的地或者最终接听对象。 FreePBX 可以支持以下类型: 1. 挂 断 呼 叫 2. 分机 3. 语 音 邮 箱 4. 振 铃 组 5. 电 话 会 议 6. 昼 夜 切 换 模 式 7. 电 话 薄 8. 呼叫队列 9. 时 间 条 件 控 制 10. IVR (数字接线员) 这一章,我们将介绍如何设置前 7个 呼叫对象(基本的呼叫目的地),下一个章 节,我们将讨论一些高级的呼叫目的地应用设置。基本呼叫目的地的设置相对简 单,高级功能设置比较复杂。 Basic Call Targets www.hiastar.com 第五章和第六章将继续了解和设置不同类型的呼叫目的地对象。通过呼入 路由设置和分机随行设置把呼叫目的地整合在一起。 一旦设置完成,所有 的呼入呼叫流程将建立,参考 第七章 关于呼叫路由信息。 挂断呼叫 FreePBX 提供多种方法来结束或者挂断呼叫。因为可能是电话宣传广告,或者多次 路由到了一个无效的终端。无论什么原因,Terminate Call 支持以下几个选项: • Hangup: 立即结束呼叫或者挂断呼叫,不进行进一步处理。 • Congestion: 挂断呼叫之前,发送一个信号指示,目前没有任何可用呼出通 道。仅支持数字通道,例如 SIP, IAX, 或者PRI。一些运营商将通过此信号指 示将呼叫路由到其他中继。 • Busy: 多呼叫发播放忙音。当呼叫方挂机时,挂断呼叫。(FreePBX 播放忙音). • Play SIT Tone (Zapateller): 线路播报 对呼叫方播放一个特别指示语音。线路 播报音包括两段短音和一段长音。此语音表示被呼叫发不在服务服务或者无效 号码。通常,自动拨号系统需要识别特别指示音,这些SIT 对一些电话促销等 通话回放 SIT 特别指示音。所以拨号系统,或者外呼系统的拨号器必须识别特 别指示音,此呼出名单中过滤这些无效号码。一旦播放 SIT 音,呼叫立即挂 断。 • Put caller on hold forever: 呼叫方转到语音等待,直到呼叫方自己挂机。 • Play ringtones to caller until they hangup: 对呼叫方继续播放振铃音, 直到呼叫方自己挂机。 [ 92 ] Chapter 5 小心使用挂断选项 如果使用 Busy, Put caller on hold forever, 和 Play ringtones 直到对端挂 机,可能导致此呼叫从来不被挂机或者 PBX 呼叫掉线。很多运营商是以分 钟为单位缴费,可能导致通话费用增加。同时对于一些电话营销的呼叫也 建议立即挂机,同时也不会导致线路被占用,重复利用中继资源。 分机和语音邮箱 Extension 分机目标将呼入电话直接路由到指定的分机。如果FreePBX 在 分机模式下 工作,必须先创建一个分机,确保目的地分机是有效的。如果FreePBX 在 DeviceAndUser 设备用户模式下工作,同样也必须创建一个分机,确保目的地分机 有效。 Voicemail 目的地将呼入电话无需路由到分机振铃,直接路由到分机的语音邮箱。 Voicemail 目的地提供 3个选项,分别是 busy, unavail, 或 no-msg. 这些选项控制对外 播放信息。如果选择的播放信息不存在,系统自动播放一个语音信息,告知此人正在 接听电话或者不存在。如果启用 voicemail 目的地,必须在 分机模式或者用户模式下 启用Voicemail & Directory 选项。 [ 93 ] Basic Call Targets 振铃组 振铃组允许呼叫方对任何一个组中的终端振铃。此功能应用在一个部门或者一个大楼 的每个楼层。例如,公司可以对销售部门设置一个振铃组,所有销售部门的电话分机 都定义在此组下面,如果有外部电话呼叫此部门,此部门的任何一个分机都可以振 铃。振铃组必须预先设置振铃组。访问导航菜单,点击 Inbound Call Control ,在此 项点击 ring group 链接。 如下截图: 添加振铃组,如下截图: [ 94 ] Chapter 5 每个选项都要正确设置,确保功能按照用户需要设置. Ring-Group Number 振铃组号码。PBX的内部分机可以拨打此号码来呼叫振铃组。 用户可以直接拨打此号码,或者转接一个已接听的通话到指定的振铃组。振铃组号码 可以认为是一个振铃组的分机号码。 Group Description 组描述项 定义此组的内容,对呼叫方隐藏。 Ring Strategy 振铃策略下拉菜单定义终端振铃的方式。终端振铃可以通过以下方 式: • ringall: 所有振铃组的分机都同时振铃. • ringall-prim: 如果在分机列表中的第一个分机没有被占用,所有成员将同时振 铃。如果列表中的第一个分机被占用,或者第一个分机设置为免打扰方式。任 何分机都不振铃。并且呼叫立即转到已选择的失效目的地 Destination if no answer . • hunt: 每次按照分机列表顺序对每个组的一个号码振铃。 • hunt-prim: 此功能类似于 ringall-prim 策略。如果列表中的第一个分机被占 用,无任何组中的分机振铃。负责每个分机都振铃。. • memoryhunt: 对列表中的第一个分机振铃,然后对列表中的第一个,第二个 分机振铃,然后对分机列表的第一个,第二个,第三个分机进行振铃。依此 类推,直到完成对所有列表分机振铃或者振铃超时。 • memoryhunt-prim: 如果列表中的第一个分机被占用,其他分机将不振 铃。否则,每个分机振铃。此功能类似于 memoryhunt 方法。 • firstavailable: 对列表中的第一个有效分机振铃。如果一个分机启用了呼 叫等待,即使此分机正在接听通话,系统也会认为此分机是”有效的”。 • firstnotonphone: 对第一个在列表中完全没有被占用的分机进行振铃。呼叫等 待设置将不被引用。如果分机已经通话,无聊是否设置了呼叫等待,此分机将 不振铃。 [ 95 ] Basic Call Targets Ring Time (最大 60 sec) 此选项对振铃组定义一个振铃时间长度。如果目的地对象无 应答,将转到 Destination if no answer 选项。对于 hunt 类型策略来说,振铃时间 可以在每个hunt 阶段进行控制。例如,如果Ring Time 振铃时间(max 60 sec) 设置为 "30" 并且振铃策略设置为 "memoryhunt", 列表中的第一个分机将振铃30秒。接下来 第一个分机和第二个分机振铃30秒,然后第一个分机振铃和第二个分机振铃,第三个 分机振铃30 秒,直到完成所有分机振铃。 Extension List 分机列表包含所有被振铃的分机。每一行一个分机。可以从 Extension Quick Pick 下拉菜单选择有效的内部分机,插入到分机列表。所有分机将振铃,不支 持分机随行设置。如果强制振铃组支持分机随行,分机号码后加# 号。例如, 5001#。 同样外部电话吗或者分机也可以添加到振铃组中,通过后缀 # 添加。例如 11234567890# ,当振铃组对此号码振铃时,系统将拨打 l 1-123-456-7890 。只要中 继路由允许呼出此号码。注意,对外部号码振铃需要花费更多时间接续,所以振 铃组可能需要更长的振铃时间。 # 标志符可以用来关联一个内部的资源,而不一定是组的名单。在这种模式下,通过 添加后缀# 可以对其他的振铃组或者队列进行振铃。 从 Announcement 下拉菜单选择一个播放信息,在接通振铃组之前,先对呼叫方播 放语音提示。 可以 从Play Music On Hold 播放音乐等待中选择一个播放选项,对振铃组振铃之 前,呼叫方是否愿意选择音乐等待,还是振铃音。 CID 名称前缀,对振铃组指定一个 呼叫方的前缀号码,这一功能非常有用,接听电话 的振铃组分机可以了解此呼叫是来自于哪个公司,可以直接对此号码回拨。 Alert Info 告警信息可以用来发送在 ALERT_INFO SIP 头域 的信息到 一个SIP 终 端。一些SIP 终端设备可以通过设置终端,当收到 Alert info 消息时,根据收到的 ALERT INFO 信息播放振铃音。如果终端不使用SIP 协议的话,可以忽略此项。 当启用 Ignore CF Settings 选项时,在分机列表中的任何分机已经启用了前转功能, 此分机将不会振铃。. [ 96 ] Chapter 5 当选择了 Skip Busy Agent 跳过忙座席选项,任何被占用的分机将不振铃。此选项同样 跳过了呼叫等待设置,所以,如果多线路或者单线路终端启用了呼叫等待,并且都被完 全占用的话,此终端将不振铃。 Confirm Calls 确认通话选项,支持 振铃成员在接听呼叫 到本机之前,接听系统提示 按键 1 ,然后接听呼叫。这个选项相当有用,如果振铃组 外部号码的进入语音邮箱, FreePBX将确认为 已应答呼叫,并且将桥接此通话到外部号码(甚至外部号码持有者 没有应答此呼叫)。如果此呼叫没有被外部号码的系统确认,此呼叫将继续对其他的 列表分机振铃。 Confirm Calls 确认通话选项仅在 对所有分机振铃模式ringall 下工 作。 如果 Confirm Calls 选项启用,下拉菜单 Remote Announce and Too-Late 将被将调 用。Remote Announce 将对 接听电话的用户播放提示语音,例如按 按键 1 确认通 话。Too-Late Announce 将对接听电话(此通话已经被振铃组的其他分机接听)的用 户播放提示信息例如按按键 1 确认通话。默认的语音文件是不存在的,用户必须上传 一份路由文件。更多如何自定义语音提示进行录音,请参考 第九章,自定义你的PBX 系统 内容。 当在振铃时间内,无任何振铃组分机接听呼叫,系统将 呼叫路由到以下选项: [ 97 ] Basic Call Targets 一旦完成配置,点击提交按钮,然后点击 Apply Configuration Changes 工具条更 新配置。. 电话会议 Conferences 电话会议允许2 方或 2方以上呼叫,将呼叫进行混音,允许互相之 间可以听到对方。确保呼叫目的地会议有效,必须至少创建一个会议室。配置会 议室,访问FreePBX 导航页,点击Internal Options & Configuration 下面的 Conference 链接。如下截图: 添加会议,输入会议号码 和会议室描述,如下截图: 内部终端可以通过拨打会议号码来进入会议室。此号码类似于振铃组号码。 [ 98 ] Chapter 5 Conference Name 名称用来定义会议室名称。可以作为 呼叫目的地对象。此名称对 呼叫方是隐藏的。 User PIN 用户会议室密码 是一个数值密码,用来对参加会议的用户认证。如果会 议参加者输入无效密码,不能进入会议室。 Admin PIN 管理员密码 功能和 用户密码类似。管理员密码不能和用户密码相 同。管理员密码必须配合 Leader Wait 选项一起工作来确定 会议主持人的身 份和功能操作。 第二个部分是在添加会议的页面添加 一般设置,来设置一些会议室操作行为,如下 截图: Join Message 参加提示音,系统将对即将进入会议室的用户播放语音提示。 如果 Leader Wait 等待主持人 设置为 "Yes", 此会议室的主持人进入会议室,会议才 能开始。否则,不能启动会议,参加会议的其他人将听到音乐等待或无声音。管理员 权限通过管理员会议密码来核实。如果 Leader Wait 设置为 no,用户一旦拨打会议 号码,系统将直接引导用户进入会议室。 如果退出会议设置为 No,无论参加会议还是退出会议室,系统对用户播放语 音。 [ 99 ] Basic Call Targets 如果 User Count 用户人数设置为 Yes,当用户进入会议室之前,系统对用户播放当 前会议人数。 如果 User join/leave 用户参加离开会议室选项设置为 "Yes", 会议参加者进入会议室 之前,系统将提示会议参加者名称,摁 #按键确认进入会议室。当前会议室的其他与 会者可以听到新成员的名称。 如果 Music on Hold 音乐等待设置为 "Yes", 如果只有一个人或者主持人没有到来之 前(会议还没有开始),系统将对参加者播放一个语音等待。如果设置为 "No", 无任 何语音播放。 Allow Menu 支持语音菜单控制 设置为 "Yes", 会议参加者 可以通过 摁终端的 (*)号键 出席会议,并且可以控制只有他们听到语音菜单。 此语音菜单允许出席者对通道静音 或者启用通道,调整说话话音增益,调整收听音量增益。如果此项设置为 No,星号键 将失效。以下是语音菜单功能选项: Menu option Action 1 对一个用户触发静音. 当启用静音,其他用户将听不到此用户讲话。当启 动会议录音,此用户讲话不能被录音。. 2 对一个会议锁定。当会议被锁定以后,不能再进入会议。解锁才能再次进 入会议。此功能只有对管理员有效。如果管理员密码没有设置,或用户已 经进入了会议室,此选项无效。 3 将踢出最后一个参加会议的用户。系统将对其播放语音信息,通知用户被 踢出会议室,并且挂断通话。注意,如果会议没有被锁定,此用户可以重 新加入。最好的办法是踢出此用户以后,马上锁定会议。此选项对管理员 有效。如果会议室没有设置管理员密码,或用户已经进入会议室,此选项 无效。 4 降低接收语音增益。用户可以降低收听语音增益。不影响其他用户收听。如 果用户发现其他用户声音太大,用户可以摁 按键 4 几次,可以使得声音降 低。 [ 100 ] Chapter 5 Menu option Action 5 增加接收语音增益。用户可以增加收听语音增益。不影响其他用户收 听。如果用户发现其他用户声音太小,用户可以按 按键 6 多次,可以使 得声音增高。 6 降低发送语音增益。用户可以降低发送语音增益。不影响其他用户收听。当 使用此选项,用户将听到其他人的声音非常小。如果用户声音比其他用户声 音大,用户可以按 按键 74多次,可以使得发送声音减弱。 7 增加发送(讲话)语音增益。用户可以增加发送语音增益。不影响其他用户 发送语音(讲话)收听。如果用户发现其他用户声音太小,用户可以摁 按键 9 多次,可以使得声音增高。 如果会议录音设置为 Yes,所有通道将被混音,打包成一个WAV 格式的 语音文 件。文件保存在 /var/spool/asterisk/monitor 文 件 夹 , 并 且 文 件 名 带 有 会 议 的 时 间 和 日 期 戳 。 昼夜控制模式 Day Night Mode 昼夜控制模式触发一个简单的呼叫目的地路由切换。每个目的地支持 两个预设的 路由模式。当呼入通话路由到 昼夜控制模式下,此呼叫将根据 白天或者晚 上呼叫目的地路由呼叫到正确的目的地。昼夜控制模式将覆盖FreePBX 正常的呼叫流 程。例如,一个公司在上班时间,可能将呼入通话路由到接线员,几个小时以后路由 到语音邮箱。如果此公司工作白天,这要求 重新配置呼叫路由模式,以便下午的呼入 通话转到正确的路由目的地。在昼夜控制模式下,员工可以通过拨打功能代码来强制 FreePBX 进入到夜晚模式,所有通话将转到语音邮箱。启用昼夜模式的功能码是 *28(index), 这里 index 是指定到昼夜模式控制的功能代码索引 ,例如 index 1 ,使用 *281 触发控制模式。单个FreePBX 系统可以最多 支持 10 个 昼夜控制模式目的地。 [ 101 ] Basic Call Targets 可能白天和晚上比较模糊。昼夜控制模式只是一个逻辑结构。简言之,就是 FreePBX 根据不同的时间段设置呼入通话路由。例如,如果是工作时间呼入,转接 到一个分机或者接线员;如果是晚上呼入(6点以后),呼入到一个语音邮箱,或者 特定的号码。 在页面导航菜单,Inbound Call Control 下,找到Day Night Mode,点击 昼夜控制: 在昼夜控制模式下,有 6 个选项,如下截图: [ 102 ] Chapter 5 Day/Night Feature Code Index 昼夜控制功能码索引用来定义用户(修改控制模 式)。用户可以通过拨打功能码 (在FreePBX环境下, 默认的是 *28) 和索引代码来修 改昼夜模式. 例如,如果在工作模式下,有索引 1,拨打 *281 将触发 索引 “1”到夜 晚模式。再次拨打 *281将恢复到白天工作模式。 Description 描述项 用来描述目的地内容。此选项对呼叫方隐藏。 Current Mode 当前模式下拉菜单 显示当前状态。现存的状态通过修改此项修改。 Optional Password 可选密码,如果需要对目的地进行保护,可以设置此密码。此密 码非常有用处,系统核心管理人员可以控制呼叫的流程,并且可以重新修改流程。确 保无其他员工可以修改呼叫流程。密码应该是数字。如果昼夜控制模式设置了关联密 码,拨打功能代码以后,系统将提示输入密码。只有用户输入正确的密码,通过密码 验证,才能修改此模式。 如果对 DAY 和 NIGHT 部分选择了相应的目的地,呼叫将根据此路由执行。 如果设置完成以后,点击保存,然后点击 Apply Configuration Changes 工具条重 新生效。 如果保存成功以后,页面右端将出现目的地列表,不同颜色表示(截图)。夜晚模 式为红色,白天工作模式为绿色: 在以上例子中,Day Night Mode 昼夜控制模式目的地包括 索引 0 和索引 1 在夜晚工作 模式,而 索引 2 则是在不同工作模式。 电话薄 Phonebook Directory 电话薄在初始设置时无需额外的选项设置。电话薄支持呼叫方 通过拨打用户姓,或者姓名组合查询用户分机号码。只要启用了用户的语音邮箱和目 录,用户就会显示在用户名单中。 [ 103 ] Basic Call Targets 在基本设置的页面下,有一个 General Settings Phonebook Directory 电话薄目 录,此设置包含了几个选项,如下截图: 找到 Company Directory 标签部分,所有公司目录选项: Find users in the Company Directory by 从公司目录通过姓名查找用户. 当 启用 Announce Extension, 呼叫方查找到被呼叫的用户,系统将播放一段语音 提示。 如果 呼叫方在目录下,按按键 0 ,通话将转到 Operator Extension 分机。这个选项可 以是直接的分机号码,一个外部号码,振铃组,或者队列。如果没有填入任何值, FreePBX 将把呼叫方转到以前的目录下。如果没有以前的目录,系统将对呼叫方播放 一个无效提示(按了无效按键)。 如果用户修改了页面,点击 Submit Changes 按钮,然后点击更新 Apply Configuration Changes 工具条。 [ 104 ] Chapter 5 总结 到此章节为止,用户应该对呼叫目的地设置以及对各种目的地类型有了明确的认识, 并且用户可以设置呼入路由,可以完成整个呼入配置。通过学习,我们可以按照顺序 创建: • 挂断呼叫 • 直接对分机振铃 • 转接呼叫到语音邮箱 • 通过各种振铃策略对振铃组振铃 • 多用户会议设置 • 在昼夜模式下路由呼入通话 • 在公司目录下查找所有电话薄带语音邮箱的用户 在下一个章节,我们将讨论队列,时间控制,IVR 高级呼入目的地设置方 法。 [ 105 ] www.hiastar.com Advanced Call Targets 第六章 高级呼入目的地 在FreePBX 中设置高级呼入目的地,需要另外做一些设置。这些高级设置通常生成 一个复杂的呼叫流程。但是,FreePBX 开发者已经通过界面设置封装了很多复杂的 的设置。高级呼入目的地设置允许系统把呼入通话转到一个队列(等待座席接线员 接听),或者转到一个数字接线员,根据系统指导,按照输入的结果来做进一步处 理。高级呼入目的地设置同样可以支持通过不同的日期,每周的天或者时间来控制 呼入目的地。 在本章节,我们将讨论高级呼入目的地设置的几个方面的内容: • 队列设置 • 时间条件设置 • IVR (数字接线员) 呼叫队列 呼叫队列简单来说就是呼入一组呼入等待座席接听的电话。FreePBX 默认支持队列的 方式是先进先出方式(第一个接入队列的电话,将被首先接听)。通常,使用在呼入 电话量很多,如果接线员人员不足的情况下,需要把呼入的用户放到一个呼叫队列, 呼入方需要等待一定的时间(同时系统播放语音,提示目前队列状态),接线员根据 用户在队列中的顺序来接听电话。类似的情况在我们实际生活中通常发生,例如,去 银行,一般用户需要排队等待服务;超市付款时,我们也需要等待柜台结算。电话队 列的实现方式和我们生活中的一些场景几乎一致。 Advanced Call Targets 队列优先级 默认环境下,在FreePBX 创建的队列 将对呼叫方进行先进先出的呼叫处理。但是,有 一些情况下,需要对一些呼叫方设置优先权,缩短呼叫方的等待时间。在实际生活中 也是同样的道理,如果用户是VIP用户,银行服务柜台将设置VIP柜台对此客户提供优 先服务。其他的客户就需要话比较长的时间办理业务。在FreePBX 中的呼叫队列优先 级也是为了到达优先服务的功能,对一些高级客户设置优先级,来赢得良好的用户体 验。 对呼叫方默认的队列优先级是0 级别。如果呼叫方的优先级高于0,将被优先接听。最 高优先级的用户在队列中将被最先接听,然后依次递减。如果和用户签订了服务水准 协议,用户的呼叫必须在一定的时间内接听,设置队列优先级将得以保证服务的承 诺。如果签订了服务水准协议的用户呼入,呼叫中心的系统将安装优先级来优先接听 电话。否则,此用户将接入呼叫队列,等待座席接听。FreePBX 可以设置优先级从 0 到20。 队列优先级扮演 队列自己的呼叫目的地。呼叫方被转入到一个队列优先级 目的地,然后被立即转到另一个呼叫目的地。一旦通过了队列优先级目的 地,呼叫将被分配到一个新进入的队列(一个呼叫方只需要被设置一次优 先级,用户可以多次进入队列无需担心失去优先级)。 [ 108 ] Chapter 6 设置新队列优先级目的地,访问导航栏 Queue Priorities 队列优先级链接,截图: 队列优先级截图如下: 编辑页面有两个主要部分: • Edit Queue Priority Instance 编辑队列实例 • Destination 目的地 [ 109 ] Advanced Call Targets 第一部分包括一个描述和优先级的设置等级。在此例子中,铜牌级客户设置为5级。 把更多登录空间留给级别更高的用户。 Destination 目的地部分是用于选择呼叫目的地。呼叫被转接到一个优先级设 置。队列优先级如果没有任何队列是无意义的。必须确认用户的通话最终需要进 入队列,被座席接听。通常一个呼入的通话或者被转接到队列或者进入IVR。 完成 Description, Priority, 和 Destination 填写以后,点击 Submit Changes 按 钮,然后点击更新 Apply Configuration Changes 工具条,使之生效。. 队列优先级通常设置为呼入的第一个呼叫目的地。呼入路由通过匹配设置的呼入号 码,然后路由到正确的呼叫优先级。另外,用户可以提供不同的号码,通过服务级 别,来指定到特定队列优先级。 队列 基本的队列设置比较简单,但是高级设置需要学习成本。在FreePBX 中,队列是最复 杂的功能,有多达30 多个选项。 设置队列,需要访问菜单导航栏,点击 Queues 链接,如下截图: [ 110 ] Chapter 6 添加队列将显示 5个选项: Add Queue 添加队列, Queue Options 队列选项, Caller Position Announcements 用户状态播报, Periodic Announcements 播 报周期, 和 Fail Over Destination, 失效转移目的地. 添加队列 添加队列包括7个选项和一个 Extension Quick Pick 下拉菜单: Queue Number 号码可以被当作一个队列的分机号码。如果一个系统的终端正在呼入到 队列中,或者某人正在转一个呼叫,这时候,就需要这个 队列号码。用户可以通过队 列号码登录队列或者退出登录。如果一个公司雇员不是队列的永久座席成员,这个员 工可以拨打 队列号码 加 * 登录队列,或者拨打队列号码加** 退出队列(例如,如 果队列号码是5000,可以拨打5000*登录队列,拨打5000** 退出队列。 . Queue Name 队列名称用来定义队列。可以用来作为一个呼叫目的地。FreePBX 不 解析此名称。 如果 Queue Password 队列密码不为空,座席登录需要输入密码验证。此选项配合队 列号码使用 (座席拨打队列号码加* 以后,系统将提示用户输入队列密码。此选项是 可的。 The CID Name Prefix 在队列中,对呼叫方添加一个呼叫前缀。当一个座席用户是一 个多队列的成员,他们会通过前缀了解用户电话是对那个部门进行了呼叫(例如,在 一个CID 加 前缀 “销售”或者”技术支持”)。 [ 111 ] Advanced Call Targets Wait Time Prefix 定义呼叫方在队列中的等待时间。如果等待时间将要到时,添 加一个前缀 字母 “M“。如果在此功能环境下,呼叫被转到另一个队列,时间将 重新设置。 Alert Info用来 发送一个特别的 ALERT_INFO SIP 头域到终端。许多SIP 终端可以根 据从服务器收到的不同的ALERT_INFO 对终端振铃 或者自动应答呼叫。为了让 ALERT_INFO 头 域 在 终 端 触 发 一 个 事 件 ,电 话 终 端 设 置 的 ALERT_INFO 头 域 必 须 匹 配 F r e e P B X 发 送 的 A L E R T I N F O 。 一 些 终 端 可 以 配 置 头 域 。 有 一 些 设 备 头 域 是 固 定 的 不 能 修 改 。 静态的座席一定是队列的成员。静态座席无论登录队列或者退出队列。只要座席在 从选项中的座席列表中,当呼叫进入队列中,座席将接听呼叫。每行一个分机。远 端电话号码或者分机号码也可以加入到此项。注意,不像振铃组,外部号码可以添 加到此项。外部号码通过内部呼叫接通,无需加 # 号。 高级用户可以通过文件 /etc/asterisk/agents.conf , 通 过 前 缀 A 来 添 加 Static Agents 用户。例如, 座席号码是2223, 添加以后是A2223。对座席来说,但是这个 功能可能引起很多挂断或者转接通话的问题。 在 Static Agents 静态座席中都支持一个类似于权重的参数,例如,座席2333 带 一个标志符1,那么列表中为 “2223,1”,中间用逗号分开。 如果列表中的座席 没有任何标志符,默认为 标 志 符 为 0. 标志符将影响座席接听电话的频率。如 果标志符设置比较高,相应地,此座席从队列接听电话的几率就比较少。呼叫进入 队列以后,如果带标志符0 的座席都不能接听电话,那么系统将对带标志符1 的座 席振铃。同样,如果带标志符0的座席不能接听电话,系统才对带标志符 2 的座席 振铃。标志符在某些环境下非常有用,如果某些条件下,一些座席不能接听电话或 者处于休息状态,那么高标志符的座席可以继续处理队列的通话,充当一个临时或 者补充座席的角色。 [ 112 ] Chapter 6 Extension Quick Pick 分机快速接听列表 允许从下拉菜单选择任何设置的分机。选 中的分机附带 标志符 0 被拷贝到 Static Agents 项. 队列选项 队列选项支持 20 多个配置,如下截图: Agent Announcement 座席播报 用来支持 呼叫接通之前,系统对呼叫方播报座席信 息(例如工号等等)。 此语音文件必须提前录制好,然后上传到系统。具体的文件上 传制作,请参考 FreePBX 的 System Recordings 内容 (查看第九章 自定义你的 PBX)。 announcement 是一个可选项。目的是,如果CID 没有通过,系统将提示座席此呼叫 的队列。 [ 113 ] Advanced Call Targets Join Announcement 加入队列播报,系统将对加入队列的呼叫方播放一个语音提 示。语音文件通过下拉菜单选择。同样,播放的语音文件必须预先录制,并且上传 到系统中。关于如何录音,请参考 System Recordings 部分。此项是可选的,通常 系统会播放呼叫邮件被加入到队列,和接听的顺序。 Music on Hold Class 音乐等待分级是一个下拉菜单,通过选择不同的语音播放文 件来对队列中的呼叫方播放音乐等待。inherit 选项 用来调用呼入时使用的语音等 待,保证播放语音统一。此音乐等待通常在呼入时设置。音乐等待设置在第九章的自 定义语音等待有介绍,请参考此章节。 Ringing Instead of MoH 如果启用此复选框,队列中的呼叫方将听到振铃声,而不 是音乐等待。小心使用此功能,如果启用以后,呼叫方可以一直长时间听到振铃声, 可能以为无人接听电话,导致呼叫方可能挂机。如果选择了此选项,语音等待下拉菜 单将隐藏。 Max Wait Time 最长等待时间。呼叫方在认定呼叫失败或者呼叫被转入生效转移目的 地之前在队列中的最长等待时间。如果设置为 Unlimited, 那么队列可以设置无选择 等待时间。否则此选项可以正常最长 一个小时。 Max Callers 最多呼叫方。此设置可以支持在队列中的呼叫方数目。如果有更多的 呼叫加入队列,系统将自动将呼叫方转入到失效目的地。如果此项设置为 0,代表 队列无限制呼叫方。否则一个队列支持最多支持 50 在呼叫方加入队列。 如果 Join Empty 设置为 Yes, 系统将允许呼叫方在无座席环境下,仍然允许呼叫方 进入队列,等待座席接听。Strict 限制选项,如果无座席的情况下,将不允许呼叫进 入队列。如果设置为 No ,而且无座席队列的情况下,将不允许呼叫方进入队列。如 果所有登录的座席目前不能接听电话,系统将允许 呼叫方进入队列。如果即将进入的 队列设置为 Strict 限制或者 No ,此呼叫将马上转入失效目的地。 Leave When Empty 下拉菜单 执行和 Join Empty 下拉菜单一样的任务。此选项应用 在一个这样突发情况下-当呼叫方已经进入队列,但是此时无任何在线的座席。 [ 114 ] Chapter 6 Ring Strategy 振铃策略设置队列中座席的振铃方式。支持呼叫中心的 6 种振铃策略 (最近的asterisk 版本支持更多的振铃策略):: • ringall: 对所有座席振铃,直到有座席接听。 • roundrobin: 按照列表次序座席逐个振铃,直到有空闲座席接听。 • leastrecent: 最近接听振铃。此方式类似于 roundrobin, 但是是选择最近接 听的座席继续对其振铃。注意,FreePBX 没有对呼叫长度进行计数,所以计 数器开始计算是从座席接听电话开始,而不是以座席完成通话开始。所以, 如果座席正在接听一个1个小时的通话,此通话仍然认为是一个小时以前的 通话。 • fewestcalls: 最少接听振铃,对最少接听电话的座席振铃。 • random: 随机振铃,对系统随机挑选的座席进行振铃。 • rrmemory: 记忆振铃,类似于 roundrobin 策略, 但是自动记忆内存最后一个接 听的座席,然后从座席的下一个座席开始振铃。两种振铃方式最大的不同在于 振铃的座席顺序不同。例如,在 roundrobin 方式下,从上一次开始振铃的方 式振铃,例如,分别为座席 1,2,3。 如果第一个呼叫的接听顺序是1->2- >3, 那么,第二个电话将是座席 2 来接听。rrmemory 则是通过记忆的方式, 记住最后接听电话的座席来决定接听顺序。如果上次接听的是座席2,下一个电话 将是从座席3开始接听通话。 Agent Timeout 座 席 振 铃 时 间 , 系统对座席振铃的时间。如果设置为 Unlimited ,系统将一直对座席振铃,直到座席接听。可以设置的最大值为60秒。 注意,如果一般设置的振铃时间或者分机的分机随行的振铃时间小于此项设置,此 选项将被覆盖。 例如,如果 FreePBX 一般振铃时间设置为 30 秒,Agent Timeout 设置为 45 秒,那么此座席的最长振铃时间将为30秒。同样,如果设置此 项为 Unlimited,那么 仅对ringall 振铃策略有效。在接通下一个座席之前,其 他振铃策略将对座席振铃60 秒 (如果一般振铃的振铃时间,或者分机的分机随行的 振铃时间太短)。 Retry 定义一个时间值,在此时间内,系统再次接通座席。选择 No Retry 后,座席 超时以后,系统将直接转接呼叫方到失效目的地。此项最大设置为 20 秒。 Wrap-Up-Time 成功接通等待时长。座席成功接听通话以后,座席状态从接听变为 空闲状态的时间长度,然后系统将对此座席再次振铃。设置为0 表示无延迟。最大 时长为 60 秒。 [ 115 ] Advanced Call Targets 如果没有设置 Call Recording 为 No, 系统将对队列中的通话进行录音(录音文件格 式可选),并且保存在 /var/spool/asterisk/monitor 路径下. 录音文件的格式 为: q(QueueNumber)-(Date)-(Time)- (CallID).(Format). 这些标志符都可以通 过系统环境变量替换: 系统变量 可替换的值 (QueueNumber) 队列号码。 Queue Number 填入的之。 (Date) 呼叫应答的日期。格式为: YYYYMMDD. (Time) 呼叫应答的时间,格式为: HHMMSS, 24 小时制. (CallID) FreePBX 设置的唯一的号码。 (Format) 队列录音格式,支持 WAV 和 WAV49,文件后缀是.wav; GSM 格 式为.gsm. 例如,如果呼叫进入到队列 11 ,日期为 July 19, 2009 ,时间为 7:05:45 p.m. 那么队列录音格式为 q11-20090715-190545-1247699145.4355.wav. 如果 Event When Called 设置为 Yes, 队列正在处理的呼叫将触发AMI,调用 AgentCalled, AgentDump, AgentConnect, 和 AgentComplete. AMI 可以通过第 三方软件来跟踪呼叫状态。 类似于 Event When Called, 当 Member Status 设置为 Yes,在 AMI 中触发 QueueMemberStatus 事件。 如果设置 Skip Busy Agents 为 Yes, 并且队列中有呼入,座席将不振铃。此项 将对呼叫等待和多线路终端分机有效。尽管这些终端可以同时接收多路呼叫,如 果都处于忙的状态,座席终端将不振铃。 Queue Weight 队列权重,对队列中的呼叫方设置一个特别优先级。Asterisk将通 过 队列权重来对一个登录多队列的座席进行通话调度处理。如果一个座席同时登 录多个队列,这些队列有多个呼入的话,队列权重高的通话将优先振铃。 [ 116 ] Chapter 6 Autofill 自动填充选项仅在 Asterisk 1.4 或者1.4 以上版本使用。此功能支持多路呼入 同时分配到不同的座席。例如,如果 队列有3个呼入,3个座席是空闲的,如果启用此 功能,3个呼入将分派到3个座席。如果关闭此选项,每次只能处理一个呼叫,其他的 呼入在队列等待。如果现在呼叫策略以后,此功能将不生效 ( 座席仍然按照选择的振铃 策略来振铃)。 Agent Regex Filter 座席正式表达式过滤器 用来限制 允许登录的座席分机。如果为 空,有可能只要知道队列号码和密码的座席,都可以登录此队列。 正式表达式可以非常复杂。通过设置一个过滤器,可以有效 限制 座席登录队列。获得更多正式表达式的信息,请访问: http://en.wikipedia.org/wiki/Regular_expression. 呼叫方队列位置播报 Caller Position Announcements 呼叫队列位置播报支持以下 3个选项: 系统将根据设置的频率对呼叫方播报一个语音,提醒呼叫方在队列中的位置(此 用户前面还有几个通话),还需等待多久时间此呼入将被座席接听。 Frequency 播报频率下拉菜单,设置一个对呼叫方的播报频率。如果设置为0秒,关 闭语音播报。否则此选项最大支持 20 分钟。. 如果播报队列位置设置为 Yes,每次队列语音播报时,系统将提示当前所在队列位 置。 [ 117 ] Advanced Call Targets Announce Hold Time 播报等待时间设置为 Yes, 系统将每次对呼叫方播报呼叫方 大约需要在队列多久时间接通座席通话。如果设置为 Only Once, ,系统将仅在第 一次播报的时候播放时间。当等待时间少于1 分钟,系统将不播放等待时间。 如果 Announce Position 和 Announce Hold Time 设置为 No, 设置了频率, 系统也不会播放任何语音信息。 周期播报 系统将对呼叫方播放周期播报语音,呼叫方可以根据周期播报提示,或者IVR来进入 系统提示的下一个呼叫流程。Periodic Announcements 支持 两个选项,如下截 图: IVR Break Out Menu 是一个IVR 语音文件,但是只能包含一个数字。例如,可以 提示呼叫用户拨 1, 进入 业务1;拨 2 进入技术支持 等等。 Repeat Frequency 重复播放频率,系统对呼叫方重复播放的频率。如果设置为 0 秒, 关闭周期播报. 此选项最大支持 20 分钟. 用户只能设置一个 Fail Over Destination 失效转移目的地选项: [ 118 ] Chapter 6 如果路由到队列的呼叫失败,系统将路由到正确的呼叫目的地。呼叫失败可能因为无 座席空闲,可能因为等待时间太长,或者座席设置的设计等等原因。 以上截图中的一些选项,这里我们没有介绍。 Callback 回拨或 者 和 DISA 目的地设置将在第九章讨论。 配置所有选项以后,点击提交按钮,然后点击更新 Apply Configuration Changes 工具条更新asterisk 系统设置。 时间条件控制 时间条件控制是对于时间,日期和星期的规则。每次,一个条件控制有两个呼叫目的 地。设置了时间条件的呼叫将每次被路由到其中一个时间条件组,如果在此时间段匹 配这个条件,将被转接到呼叫目的地,如果不匹配,则转到其他时间条件目的地。每 个时间条件组可以包含多个不同的时间定义(时间组)。时间条件控制通常用来控制 对工作日,下班后,或者节假日的呼入进行适当的处理或者路由,保证系统的友好 性。 时间组 在设立时间条件控制机制以前,我们需要定义一系列的时间组。时间组将对呼叫方的 通话进行时间设置匹配。这些规则可以定义日期,时间,然后呼叫根据时间日期匹配 路由到设置的目的地。 时间条件控制机制非常有用处。例如,可以定义一个工作日的时间条件设定,工作时 间的通话都将路由到指定的电话接听。同样,也可以定义节假日的路由规则,如果在 节假日呼入的话,呼叫将被路由到一个特定的值班电话。 [ 119 ] Advanced Call Targets 登录导航界面,点击 Time Groups,如下截图: 点击添加 Add Time Group 时间组,如下截图: Description 用来定义此组的用途。设置时间条件时作为一个选项。此值不能被 FreePBX 解析。 [ 120 ] Chapter 6 New Time 部分用来定义一个时间规则,呼叫将检测是否匹配这个规则。如果此项设 置为破折号 (-),系统将匹配所有的值 (例如, Week Day Start to Week Day Finish 将 匹配一个星期的每一天). 注意,为了正确匹配规则,所有的定义规则必须是正确的, 完全有可能创建的规则不能匹配。 (例如,在九月份如果 设置 Month Day start and Month Day finish to 31 和 Month start and Month finish,系统从来不进行匹配,因 为 九月份没有31 号这一天 )。 一旦完成规则设置,点击 Submit 按钮保存配置。通过点击组名称,选择额外的规则, 可以添加另外的时间规则。例如,时间组可以定义一个工作时间规则匹配,如下截图: 在以上这个例子中,规则将匹配工作时间从 星期一到星期五,早晨 8:30 到下午 5: 30,星期六,上午10到下午4:30。 [ 121 ] Advanced Call Targets 时间条件控制 一旦完成时间组设置,时间条件控制就可以设置为一个呼叫目的地。为了创建一个 新的时间条件,登录界面,点击导航栏,点击 Time Conditions 链接,如下截图: 点击添加 Add Time Condition 页面,将显示 4个配置部分。第一个部分如下截图 所示: Time Condition name 用来定义一个时间条件控制,可以作为一个呼叫目的地选择 项。FreePBX 不解析此值。 Time Group 下拉菜单用来选择 一个时间组。此时间组作为时间规则来引用。当 一个呼叫通过匹配,到达了此时间组,被选择的时间组将进行匹配,然后决定下 一个路由动作。 . [ 122 ] Chapter 6 Day/Night Mode Association 昼夜模式关联部分有一个配置选项,可以设置此选 项,配合昼夜模式工作。点击 Submit Changes 按钮,然后点击 Apply Configuration Changes 工具条更新asterisk 配置。 如果用户愿意,昼夜模式可以直接通过下拉菜单关联到时间条件控制。关联的时间 条件将触发一个昼夜模式。昼夜模式将关联下拉菜单两次,强行执行夜晚模式和强 行执行白天模式。 在下拉菜单选择的选项将配置一个模式,此模式是一个昼夜模式,支持被覆盖的时间 条件控制。在上面的例子中,Bad Weather day/night mode 模式下支持了Force Night 选项。 如果在恶劣天气环境下,用户触发了 夜晚的 Bad Weather 恶劣天气模 式,在这个时间条件下,任何呼入的通话将转接到和Bad Weather 关联的夜晚目的, 系统将忽略日期和时间设置。只要 Bad Weather 回设到 白天模式,此时呼叫将通过设 置的时间条件匹配相应的时间规则设置。 最后两部分 Destination if time matches 和 Destination if time does not match (如 下截图) 是用来设置已选择的时间组来匹配,如下截图: [ 123 ] Advanced Call Targets 选择相应的呼叫目的地,点击提交按钮保存设置,然后点击 Apply Configuration Changes 工具条来 更 新Asterisk 设置。 IVR (数字接线员) 一个 Interactive Voice Response (IVR) 语音交互系统通常作为一个数字接线员。 一个语音IVR 系统播放提前录制的语音文件,呼叫方工具语音文件的提示,然后输 入按键来进行下一步的环境流程,例如,提示 技术支持请按 1,销售部 请按 2 等等 这样的提示,系统将根据输入的按键结果,将通话转接到相应的部门。 FreePBX IVRs 支持通过输入提示的按键,然后对相应的部门或者组进行振铃。可以 定义一个 t 参数,如果在一定的时间内,用户没有输入任何有效的按键,系统进行超 时处理。同样,也可以定义 h, 如果用户输入一个无效的按键结果,系统将对无效结 果进行处理。 创建一个 IVR, 访问导航栏,点击 菜单 IVR, 如下截图: [ 124 ] Chapter 6 Digital Receptionist 数字接线员 支持两个部分的设置: IVR options 和 IVR destinations. IVR options 选项部分 包含多个配置选项: Change Name 用来定义IVR 名称。FreePBX 比解析此名称。 Announcement 播报下拉菜单通过选择不同的语音文件对呼入的用户播报预先录制的 语音文件。参考 系统录音 章节,用户可以通过系统自带的录音功能制作语音文件或者 上传文件。 Timeout 定义一个时间段,如果用户在此时间段内没有按照IVR 提示,输入任何按 键结果,呼叫将被转接到 t(超时)目的地流程进行处理(如果设置了超时处理流 程)或者挂机。 如果启用 Enable Directory 复选框,呼叫方摁 # 号键进入目录系统通过姓名来查询 被呼叫方;否则输入 #号键系统将提示用户输入了无效的结果。 [ 125 ] Advanced Call Targets 如果 启用了VM Return to IVR 复选框,被从IVR 转入 到语音邮箱,然后留言 的呼叫方,将重新返回到 IVR。如果没有选择这个功能,呼叫方在对语音邮箱留 言以后,将直接挂断电话。 如果定义了多个 directory contexts 目录的话,当用户按 # 号键时,用户可以从 Directory Context 下拉菜单选择任何一个选项。 如果启用了Enable Direct Dial 直拨选项,呼叫方可以从IVR 直接拨打任何分机号 码。如果此选项被关闭,呼叫方直接拨打分机号码(虽然是有效号码)时,系统将 提示无效输入语音。 如果启用 Loop Before t-dest 复选框,IVR将重新回到超时的起始流程。IVR 将根据 Repeat Loops 下拉菜单重复回放此流程。如果没有选择此选项,呼叫方超时以后, 将立即转到 t 目的地设置的流程,或者立即挂机。 Timeout Message 超时信息,如果呼叫方在一定时间内没有输入任何结果,系统对 呼叫方播放一段超时提示信息。如果没有定义 t 目的地,系统才会播放此信息。 Loop Before i-dest 工作模式类似于 Loop Before t-dest 复选框, 这个功能是检查用 户是否输入了有效的数字。如果输入了无效的数字,并且打开了此复选框,IVR将会 循环检查。否则,IVR 将会把转接通话到 i 目的地, 如果没有设置 i 目的地,系统将 立即挂机。 Invalid Message 无效信息,如果用户输入了无效的数字,系统将对呼叫方播放无效 输入提示信息(并且 i 目的地没有定义)。 Repeat Loops 重复次数用来定义如果用户输入无效的数字,对呼叫方进行语音播 放的次数。按照定义的测试播放完成以后,呼叫被挂断。最大设置是9 次。 [ 126 ] Chapter 6 IVR 目的地部分支持 输入的按键映射目的地,如下截图: [ 127 ] Advanced Call Targets 在以上例子中,按按键 1 ,呼叫方将被转接到技术支持队列 Technical Support queue, 如果超时将被( t destination) 挂机,如果输入无效数字将此通话转接到 501的 语音邮箱。点击 Increase Options 按钮,可以添加更多选项。一个IVR 可以支持很 多选项,包括多数字目的地等等。 注意,当使用多数字目的地设置,输入一个设置 以后,系统仍等待输入,直到此时(例如,系统允许 按1,或者 10,或者11等等输 入,如果用户按1 以后,系统强制等待,直到系统超时)。 设置完成以后,点击保存按键,然后单击更新工具条 Apply Configuration Changes 重新加载配置。 总结 到目前为止,我们学习并且了解了呼叫目的地的高级配置。用户应该可以通过以上 的学习,配置复杂的时间条件控制,队列和IVR设置。 下一个章节,我们将介绍如何配置呼入的路由规则。同时,我们讨论如何设置一个呼 出中继路由。另外,介绍如何通过中继设置来灵活实现最低资费路由。 [ 128 ] 第七章 呼叫路由 到目前为止,我们讨论了各种呼叫目的地和路由到目的地以后的处理流程。 在这一章节,我们将讨论以下几个方面的内容: • 呼入路由 • 分机随行和VmX Locater • 呼出路由 • 最低资费路由 通过(最低资费呼出) 呼入路由 呼入路由是Asterisk 电话系统其中一个核心功能。在 第五章和第六章也讨论过一些具 体内容。FreePBX 支持两种特定的呼入路由方式: • 基于 DID 的路由模式: DID-based routing 基于DID 的路由模式根据中继线路 的呼入来确定路由,基于CID路由模式环境下,通过呼叫方的电话号码来确定 路由模式。在这两种模式下,FreePBX 将通过检测 接收的传真,DID(直接拨 入)和 VOIP 服务商提供的中继和中继线路号码来决定呼入的路由路径。通常 公司设置一个专用号码来对用户提供服务(通过此号码呼入的通话将直接转到 他们的支持部门)。其他呼叫则路由到语音IVR 或者数字接线员。 Call Routing • CID-based routing: CID (caller ID) 来电显示号码。FreePBX 将根据设定 的来电显示号码做呼入路由设置。有时候这样的路由设置专门为了特定的 呼叫,例如挂断电话营销的电话等等环境。同样,设置一个特定的号码路 由,可以路由到某些特定的流程。 两种路由模式可以独立使用,也可以两者配合一起使用。 访问导航页面,点击 Inbound Call Control 下的 Inbound Routes 链接,如下截图: 在添加 路由模式页面下包括 6个部分的设置: 1. Add Incoming Route 添加呼入路由 2. Options 选项 3. Privacy 呼入保护 4. Fax Handling 传真控制 5. CID Lookup Source CID 查找 6. Set Destination 设置目的地 添加呼入路由部分有 4 个选项: 1. Description 描述 2. DID Number 3. Caller ID Number 4. CID Priority Route 优先路由 [ 130 ] Chapter 7 Description 是用来定义一个呼入路由名称。FreePBX 将不解析此项。 DID Number 用来对基于 DID路由匹配号码。此项输入的号码将匹配呼入的DID号 码。DID 号码格式必须匹配运营商发送的号码格式。例如,一些运营商发送的号码可 能是+15555555555, 也有运营商发送的号码格式为 5555555555. 如果输入的号码不能 完全匹配运营商发送的号码,那么此路由将不能使用。 如果此项为空,系统将匹配所有的DID,包括无任何DID 信息的号码。 此选项可以支持模式匹配号码范围。这个表达式必须以下划线开始。在这个表达式 中,X 将匹配任何从0到9的数字,并且可以匹配一个特定的带方括号的数字。例 如,如果同时匹配 555-555-1234 和 555-555-1235, 正式表达式为 555555123[45]。 Caller ID Number 项用来定义对基于 CID路由模式进行号码匹配。和DID类似, 输入的CID 号码格式必须完全匹配运营商发送的号码格式。运营商可能发生7个, 10个,或者11个数字,也有可能包含国家代码和+号标志。和运营商询问号码格 式,确认号码可以完全匹配输入的号码。 Caller ID Number 号码选项可以为空匹配所有的CID号码,也可以匹配无任何CID 信 息的号码。此项可以为 Private, Blocked, Unknown, Restricted, Anonymous, 和 Unavailable。 设置 DID Number 和 Caller ID Number 都为空,呼入路由将匹配所有呼入号码。 [ 131 ] Call Routing 呼入路由优先级 系统可以设置一种环境,呼入通话可以匹配几个路由模式。如果有类似的情 况发生,FreePBX 将按照呼入路由优先级来确定路由的顺序: 1. 路 由 带 特 定 DID 和 CID的 号码匹配为第一优先级。 2. 路 由 带 特 定 DID,但是无 CID的号码匹配为第二优先级。 3. 路 由 无 DID, 但是有 CID的匹配为第三优先级。 4. 路由无特定 DID 和 CID 为最后优先级。 这里需要注意,默认环境下,基于 特定DID的路由方式优先于基于特定的CID 的路 由模式。 CID Priority Route CID 优先级路由 将会对呼入路由产生影响。如果启用了此功 能,选择了复选框,呼入号码匹配了Caller ID Number 的号码,呼入路由将从此路 由处理(尽管呼入从DID路由进入)。如果有一个特定的DID和CID 路由,系统将优 先走DID路由。检测CID 优先级,将使得系统可以通过不同的优先级调整特定的路 由。 Options 支持 以下 5个 选项,如下截图: Alert Info 支持对 通过 SIP ALERT_INFO 头 域 发 送一个字 符 串 信 息。 可 以 触 发 终 端 以 不 同 方 式振 铃 ,或 者 根 据 ALERT_INFO 消 息 自 动 应 答 通 话 。 CID name 前缀 允许 从呼入的 号码添加 其他信息。通常用来指示此通话来自于哪 个部门,方便记忆管理 ( 如果呼入到技术支持专用号码,添加一个 "Tech")。 [ 132 ] Chapter 7 Music On Hold 下拉菜单支持对呼叫进行语音等待办法。当呼叫进入到此路由,系统 将对此呼叫播放相应的音乐等待提示音。通常这个功能应用在公司的多语言线路,如 果呼入是从一个法语的路由进入,你们系统将对此呼叫播放法语的音乐等待。如果来 自于法国的DID,系统自动播放法语的音乐等待;如果来自于中国的DID呼入路由, 当然可以相应播放中文的音乐等待。 Signal RINGING ,在Asterisk 通知对端此呼叫已经应答之前,系统将在 call progress 中发送一个 ring 数据。一些运营商要求带此数据,但是可能导致对接其他运 营商时此功能失败。和运营商检查,在呼叫应答之前,是否需要发送ring 作为 call progress。 Pause Before Answer 暂缓应答 包含一个时间段来限制Asterisk 暂缓 应答一个呼叫。 对数字线路,此设置无效;对模拟线路或者系统支持的传真,此功能有效。在此情况 下,系统播放一段语音,然后确认不是语音通话,系统转入正确的流程。通过播放语 音,系统可以让其他的设备,例如传真来接受传真文件。如果此通话没有在延长时间 段接听,Asterisk 将应答此通话。 Privacy 部分只有一个配置: The Privacy Manager 下拉菜单用来启用或者关闭FreePBX 隐私管理工具。如果启 用此工具,如果呼叫进入以后,并且没有关联任何来电显示号码,系统将提示用户 输入一个10位数字的电话号码(每个国家可能不同)。呼叫方将允许输入3次,如 果3次以后,仍然失败,呼叫被自动挂断。 Fax Handling 处理包括 4个部分的设置: [ 133 ] Call Routing Fax Extension 下拉菜单用来选择一个分机帐号,接收的传真将自动转接到此分机号 码。通常来说,这个分机号码是Dahdi 的模拟分机模块(FXS),用来进入一个物理 传真。但是,这个分机也可能是一个虚拟号码(连接一个软件接口),通过此软 件,可以把传真转换成一个电子文档,便于阅读。 如果设置了 disabled ,传真检测将不匹配此路由,直接路由到语音接入的流程。 如果 选择了FreePBX default,传真将被 路由 到 在 FreePBX General Settings页面定义 的分机上。 如果选择了 system ,FreePBX 将把接收到传真文件通过邮件发送到 Fax Email 地 址。如果从邮箱为空,系统将使用 General Settings 页面输入的邮箱地址。 Fax Detection Type 传真检测下拉菜单用来定义Asterisk 将使用的传真检测类 型: • None: 关闭传真检测 • Zaptel: 检测从ZAP 中继或者Dahdi中继进入的传真 • NVFax: 检测从SIP 中继或者 IAX 2 中继进入的传真 如果选择 Zaptel 或者NVFax,Asterisk 将立即应答,然后在规定的时间内(通过 Pause After Answer设置)监听传真音。如果没有接听到任何传真音,此呼入被认定 为传真。. CID Lookup Source 部分支持一个配置选项,如下截图: Source 下拉菜单用来定义预设的looup source 查找源. 任何匹配此路由的呼叫将和设 定的 查找源进行匹配,如果匹配成功,将修改 呼叫方的名称。更多信息,参考第九章 的 CallerID Lookup Sources 部分。 [ 134 ] Chapter 7 最后, Set Destination 设置目的地支持其中一个选项: 用户可以选择任何一个呼叫的最终目的地来处理呼叫接听,以前设置的IVR,时间条 件控制,会议室,队列都可以在这里选择。 点击选择的选项以后,点击提交按钮保存设置。点击 Clear Destination & Submit 按钮将保存路由设置,但是没有和任何的目的地关联。这个功能的目的是用来做传真 路由(传真必须被检测,或者呼叫挂机)。点击 Apply Configuration Changes 工具 条,更新Asterisk内存数据。 默认分机随行和 VmX Locater Follow Me 将强制Asterisk 跟踪呼叫流程,一直到分机应答通话,而不只是终端振 铃。在呼叫被转入语音邮箱之前,此常用来直接转接到用户手机终端。如果启用此 功能,如果用户的终端没有应答此电话,系统将电话转接到填入的手机号码。同 样,如果手机号码更新以后,用户可以及时修改到新的手机号码,不会丢失任何呼 叫。 [ 135 ] Call Routing FreePBX 支持两种 分机随行模式:系统默认支持的分机随行和 VmX Locater分机随 行。 FreePBX 管理系统默认的分机随行,同时可以配合振铃策略,振铃时间,音乐等待, 和其他复杂的应用。 VmX Locater完全依赖于终端用户,但是实施比较简单,可以通 过系统提示,呼叫方可以输入 0,1,2等数字转接到用户选择的号码。 默认的分机随行 默认的分机随行在接入失效目的地之前对一系列预设的分机号码进行振铃(类似于振 铃组)。这样可能有VOIP 电话和手机同时振铃和或者依次振铃,直到有终端接听。如 果无应答,将转到语音邮箱或者公司其他人接听。 在 Inbound Call Control 页面,访问 Follow Me 链接,如下截图: [ 136 ] Chapter 7 点击 Follow Me 设置,出现 Follow Me 截图: 关闭复选框,将暂时关闭分机随行功能。任何呼入的呼叫将自己转接到分机振铃,而 不是分机随行路由。如果分机随行被设置为一个特别的呼叫目的地,呼叫将接入到分 机随行功能,无论是否开启设置。 Initial Ring Time 初始振铃时间定义系统在对分机随行振铃之前,对首个分机进行振 铃的时间长度。此值可以设置从 0 到60 . 如果设置为0,Asterisk 将立即对分机随行 列表的分机进行振铃,而不是对首个分机进行振铃。通常首个分机也可以包括在分机 随行的列表,以取得我们预想的效果。 [ 137 ] Call Routing Ring Strategy 振铃策略下拉菜单 定义对分机随行列表的分机振铃的顺序。振铃策 略支持10种振铃方式。在分机随行路由中的振铃策略和振铃组的策略是一致的。具 体详情,请参考 第五章的基本呼叫目的地中的定义。 Ring Time 振铃时长(最大 60 秒) 定义最大振铃时长,如果超出最大时长,系统认为呼 叫失败。对于 hunt ring 振铃策略来说,这个时长是 hunt 策略振铃一个循环的时间。 Follow-Me List 定义一个在分机随行路由的分机列表名单。每个分机分别占据一行。 像振铃组和队列一样,外部号码 和分机都必须携带一个后缀号码-#号,例如 5551234567#. Extension Quick Pick 分机快速接听下拉菜单定义所有在系统设置的分机号 码。选择此号码后,此号码将被设置到 Follow-Me 列表。 Announcement 播报选项对呼叫方在进入到分机随行路由,分机随行分机振铃前, 对呼叫方进行语音播放。此消息可以在分机随行振铃之前,对呼叫方播放一些提示 信息,或者提示用户需要等待(例如,请等待,电话正在转接。。。)。此录音文 件可以通过FreePBX 的 System Recordings 添加到系统中,请参考第九章自定义语 音提示。 The Play Music On Hold 音乐等待下拉菜单支持在分机随行振铃之前,对呼叫方播放 音乐等待。如果设置为 None,系统不播放任何音乐等待。选择了振铃,系统将转接对 分机振铃,不播放任何语音。 如何设置 音乐等待,请参考第九章的自定义 Music on Hold 部分。 CID Name Prefix 名称前缀,在呼入号码前,添加呼叫前缀来匹配分机随行路由。 Alert Info 支持 添加自定义的字符串,此字符串通过 SIP ALERT_INFO 头 域 透 传 到 分 机 随 行 路 由 ,强 制 S I P 终 端 通 过 A L E R T 信 息 来 决 定 不 同 的 振 铃 方 式,自 动 应 答 。当 然 S I P 终 端 必 须 支 持 A L E R T 消 息。 [ 138 ] Chapter 7 当 Confirm Calls 启用,分机随行的应答终端接听通话时,需要输入 1 来桥接通 话。需要接听方接听之前再次确认接听此通话。有一些情况下,要求用户确认通话, 避免手机通话被接入到语音邮箱,Asterisk 会认为此通话已经应答,桥接呼叫方到手 机语音邮箱(实际上,通话应该被转接到系统的失效转移目的地设置)。 Remote Announce 远端播报,如果启用了 Confirm Calls 支持对分机随行的接听 通话的分机播放语音。系统将播放此语音提示,正在转接一个分机随行的电话到 此终端,用户需要输入1 来接听通话。 Too-Late Announce 晚接听播报,系统对确认接听电话的分机随行用户(已经输入 1, 准备接听通话,但是已经有分机在此用户之前接听了通话)播放的语音提示信息。 提示用户,已经有用户在此用户之前接听了通话。 . 一旦完成分机随行设置,选择 一个呼叫失败(如果无任何分机随行应答通话)的失效转 移目的地选项,如下截图: 很多时候,失效转移目的地都设置为用户语音邮箱。 [ 139 ] Call Routing 配置完成以后,点击提交按键,保存配置,然后点击页面顶部的 Apply Configuration Changes 工具条更新设置。 VmX Locater VmX Locater 是一个简化的 FreePBX follow-me 配置。管理员可设置此功能, 但是用户开启了此功能,用户可以通过 ARI 尽快修改设置。 注意,VmX Locater 可以配合 FreePBX follow-me 路由一起工作,而不是替换所有的 分机随行路由。当呼叫方进入到语音邮箱时,系统将播放 VmX Locator 提示音。在 这里,用户可以被转接到 分机随行路由模式,用户通过输入 0 转接接线员,1 到 分 机随行路由,2 到 其他分机。 在FreePBX 中设 置 VmX Locater, 在Basic 一般 设 置中 ,点 击 Users 或者 Extensions 链接。此设置依赖于 系统工作模式是 DeviceAndUser 或者 Extensions 模式: 点击 users, 出现一个页面,如下截图: [ 140 ] Chapter 7 从下拉菜单 选择 Enabled, 启用 VMX Locator。 Use When 复选框 支持 locater 启用,当被呼叫方是无效状态或者处于忙状态。注意, 如果不选择复选框,locator 从来不被启用。 Voicemail Instructions 语音邮箱指导定义系统是否播放自定义的语音邮箱提示音或者 播放 Asterisk 标准的语音邮箱提示音。如果此项目已开启,系统将播放自定义的用户语 音邮箱提示音,然后立即播放 一个“ beep” 嘟嘟声,提示音开始录音。否则,系统将 播放标准的Asterisk 提示音,播放提示音,提示用户 "please leave their message after the tone"(提示音后,请留言) Press 0, Press 1, 和 Press 2,当播放邮箱邮箱提示音的时间段内,用户输入了正确的 数字,此数字 可以用来配置特定的分机,振铃组,队列和外部号码。当 VmX locator 启用以后,关联的用户可以重新对 邮箱语音提示录音,提示用户输入 0,1,2 其中任 意一个数字 路由到正确的路由上。这里关联的外部号码不需要添加# 号。 Press 0 可选项支持转接通话到 PBX 接线员 ( 在 FreePBX General Settings 定义) 而不是转接到其他号码或者分机。 Press 1 可选项支持转接通话到 FreePBX 分机随行设置. 完成设置以后,点击提交按钮,保存配置。然后点击更新 Apply Configuration Changes 工具条来更新Asterisk 配置。 用户登录 ARI 页面以后,可以编辑 VmX Locator ,如下截图: [ 141 ] Call Routing 呼出路由和最低资费路由 呼出路由是FreePBX 通过中继来管理呼出的电话。许多 VoIP 系统支持多个中继线 路,呼出不一定需要通过资费高的线路呼出。为了节省通话费用,用户可以设置多 个资费低的中继线路,并且通过此线路呼出降低话费成本。呼出路由允许系统修改 拨打的号码,重新定义呼出号码的格式或者替换号码前缀。系统通过被定义的路由 表达式匹配已拨打号码。 呼出路由支持一个优先级。如果拨打的号码匹配了两个呼出路由表达式,那么此 呼叫将优先通过低优先级线路呼出。 在基本设置页面,点击 Outbound Routes 链接,如下截图: Add Route 添加路由页面支持 8个配置选项 和一个快速接听下拉菜单, 如下截图: [ 142 ] Chapter 7 Route Name 定义一个路由名称,此值不包含空格。名称通常是为了管理方便,可以 清楚了解此路由的目的,例如当地,国际或者测试等等。 Route Password 路由密码,对通过此路由呼出的呼叫添加安全认证。如果公司希望 控制长途电话呼叫,或者呼叫号码范围在1-900 中间的号码,设置一个数字密码来防 止无权限用户通过此中继呼出。此选项支持一个数字密码或者一个文件(此文件包含 有效密码,在文件中,每行填写一个密码)。如果此项不为空,所有呼出的号码必须 通过密码验证,才能成功呼出到中继线路。 PIN Set 选项类似于Route Password 功能。PIN sets 可以在 FreePBX PIN Sets 页面配置(更多介绍,请参考 第九章的 PIN Sets 部分)。 如果 使用了 PIN sets, Route Password 必须为空。如果 Route Password 为空,并且 PIN Set 设置为None, 呼出路由将可以通过此路由呼出,并且无需认证。 Emergency Dialing 复选框用来支持当内部用户需要拨打急救急救电话。系统指定一 个特别的路由。如果启用此功能,任何急救呼叫都将通过此呼出中继,并且关联急救 呼叫终端和呼出路由的号码(如果设置此功能)。如果有时急救呼叫会通过此路由呼 出时,请不要选择此功能。除非此路由总是绑定急救呼叫的拨号规则。 如果 选择了 Intra Company Route 选项,发起呼叫的终端将一直预留此号码,而不是 被中继指定的号码覆盖。这个功能非常有用,当通过来自于同一公司的呼出路由呼出到 一个VOIP 系统时,这个呼叫将不能呼出到公共电话网络。 Music On Hold 音乐等待下拉菜单 支持对通过此路由的通话进行语音播放。当呼出的 通话通过此路由,通话被设置为语音等待时,系统将对此用户播放指定的音乐等待。 [ 143 ] Call Routing Dial Patterns 拨号表达式是呼出路由的控制中心。指定的号码必须匹配拨号表达式(例 如,911 或者 999)。 否则,表达式可以使用一些列表的格式: Pattern Description X 从0 到9 任何号码. Z 从1 到9 任何号码. N 从2到9 任何号码. [###] 匹配方括号中的任何号码. 注意,多个号码需要逗号分 开,或者号码范围加破折号,例如 ([1, 3, 6-8] 将匹配号 码 1, 3, 6, 7, 和 8). . 匹配一个或者多个字符,通常的通配符. Trunk Sequence 中继顺序下拉菜单,将配置匹配顺序,用来匹配在 Dial Patterns 定 义的表达式。如果在列表中的第一个中继是无效状态或者拥塞,呼叫将被自动转接到 下一个中继路由。系统将一直重复查找下一个有效的中继线路,直到找到有效线路。 通过 Dial patterns wizards 和 Trunk Sequence 配合使用,可以支持一个最低资费 路由的功能-Least Cost Routing (LCR)。 LCR 引用每个呼出路由设置,找到最低的资 费路由,首先通过此路由呼出。例如,如果 FreePBX 设置了两个 SIP 中继线路,如果 一条线路是纽约运营商的无限制的统一费率,另外一条是加利福尼亚运营商的无限制统 一费率中继,逻辑上说,呼叫到纽约的走纽约的中继,呼叫加利福尼亚的走加利福尼亚 的中继。如果系统这时设置了一个美国中继路由格式的话,系统将首先路由到单中继线 路,呼叫费用可能就很高,只有呼叫免费时,话费才能减免。如果在类似这样的环境 下,系统对不同的呼叫目的地设置了不同的中继,用户可以按照拨打的目的地走不同的 路由或者资费便宜的路由来达到最低资费的目的。 [ 144 ] Chapter 7 第一个呼出路由支持呼叫到纽约的所有呼叫(包括纽约本地呼叫和长途呼叫)。中继 顺序是:纽约第一,加利福尼亚第二。 [ 145 ] Call Routing 第二个路由支持一个呼叫模式,将匹配呼叫到加利福尼亚的所有呼叫(和加利福尼亚的 地区代码,本地,长途格式匹配)。在 Trunk Sequence 中,加利福尼亚设置为第一个 路由,纽约为第二个路由模式: FreePBX 路由任何一个呼叫到纽约或者加利福尼亚,系统将根据最低资费来选择中继 线路。最终目的是用户正常拨打电话,无需担心选择路由的问题。当用户拨打号码以 后,FreePBX 将通过智能匹配来通过最低资费中继呼出。 [ 146 ] Chapter 7 一旦完成配置以后,提交 Submit Changes 按钮,保存配置。然后点击 Apply Configuration Changes 工具条来更新Asterisk 设置。 设置路由应该注意的地方 相当容易忘记特别呼出时匹配中继路由。这样导致当用户呼叫一个 非常重要的电话时,呼出可能失败。确认系统对所有电话呼叫模式 成功匹配。一些重要的呼叫类型: 紧急呼叫: 专门设置一个紧急呼叫路由模式,此模式不要和其他匹配模 式混合使用。 本地号码呼叫: 呼叫拨打号码 (通常是 NXXXXXXXXX). 免费号码或者 Toll-free: 呼叫免费号码例如800,或者中国400 号码 (例如 1- 888 或者 1-800 号码). 国际号码呼叫: 呼叫国外号码, 通常加前缀00. 电信服务查询号码,例如 114. 长途呼叫,例如,1NXXXXXXXXX(美国),中国加 0 总结 到目前为止,FreePBX 应该可以支持路由呼叫。这个章节介绍了如何设置呼入路由 来匹配号码,呼入号码路由到分机随行 或者 VmX locator。 FreePBX 可以检测传 真和路由传真到接收设备。另外,我们还讨论了呼出路由设置以及最低资费路由方 式设置。 下一个章节,我们将讨论对各种呼叫进行录音和回放。 [ 147 ] 第八章 电话录音 Asterisk 支持非常强大的电话录音功能。无需额外的软件就可以实现此功能。 Asterisk 可以对双向通话进行路由,可以对录音文件处理保存到一个文件中。用户 可以回放通话录音文件。通话录音应用在了很多呼叫中心的解决方案当中,可以用 来保证呼叫的质量,回放通话内容或者业务纠纷等等需求。根据呼叫中心的业务需 求,Asterisk 可以对所有呼叫通话进行选择性录音。 本章,我们将讨论以下几个方面的内容: • 标准录音选项 • 对分机录音 • 对队列录音 • 对会议录音 • 管理维护录音文件 关于电话录音的法律常识 如果启用电话录音功能,必须确认符合当地的法律规定。电话录音在一些 地方是被禁止的,除非呼叫方被告知通话可能被录音。例如,在加利福尼 亚,所有团体的通话在启动通话录音前,必须播放提示信息提醒用户,通 话将被录音,然后应答电话。这样的通话流程才是正常的录音流程,否则 视为违法。 Recording Calls 录音格式 FreePBX 支持以下几种录音格式: • WAV • WAV49 • ULAW • ALAW • SLN • GSM 每种录音格式会影响录音文件的大小,语音质量。电脑可能不支持播放某些录音 格式。以下是各种录音格式的对比结果: 格式 描述 WAV 不经过压缩的 WAV 录音格式. 语音质量很好,但是文件比较大(一分钟 可以达到1M)电脑可以默认支持播放. WAV 格式。 WAV49 WAV 格式,录音以 GSM 编码. 因为 GSM 是一种压缩的编码,语音质 量比较好,和移动电话的语音质量相近。文件大小比 WAV小一点( 每 分钟 100 KB); 通常电脑播放器不支持 WAV49 格式。 ULAW 或 ALAW G.711 录音编码,路由文件的语音质量很好,路由文件非常大( 每分 钟1M)。大部分电脑的播放器不支持 ULAW 和 ALAW 录音格式。确 认播放器支持 G.711 编码. SLN Asterisk 默认支持线性 SLINEAR 格式。 以 SLN 格式录音的语音质量 和文件大小和WAV一样。 SLN 录音是 raw WAV格式, 是一种小字节 序16位的 PCM格式。大部分电脑播放器可以支持这种格式。如果不能播 放的话,需要重新命名 .sln 到 .wav 格式。 GSM GSM 类似于 WAV49 呼叫语音的格式,语音质量不如 ULAW/ALAW 或者 WAV,语音质量可以接受。录音文件大小一般 为每分钟 100 KB。 [ 150 ] Chapter 8 录音过程中的编码转换问题 比较重要的一个录音问题是编码转换的问题,如果语音的编码和录音的编码格式不一 致,系统必须进行编码转换。例如,通话使用 G.711 Ulaw 编码,但是录音文件使用 的是WAV49 的GSM 编码格式保存,那么就需要进行编码转换处理。编码转换处理需要 额外的系统CPU资源和反复 I/O 读写。在一个高负载的呼叫环境下,有可能导致系统 无法负担编码转换的开销,引起系统不稳定。 一般的经验是录音编码和中继线路或者分机的编码采用同一种格式。如果所有的呼叫 采用 GSM 编码,那么建议录音也采用GSM 编码格式。如果系统呼叫采用 G.711 语音 编码,录音采用 GSM 语音编码,无形中会增加系统资源负载。如果需要编码转换, 确认预留额外的系统资源专门为了处理编码转换(例如,预留一个硬盘空间专门为存 储录音文件)。 基本录音选项 FreePBX 支持几个选项来管理录音的全局操作。这些设置将决定是否对全局启用录音 功能工作或者关闭录音功能(对录音处理和录音以后执行命令)。 访问全局选项,点击导航页的 General Settings 设置菜单,如下截图: Call Recording 部分有以下几个感兴趣的设置: [ 151 ] Recording Calls Extension Recording Override 选项支持用户级的录音自动控制功能。用户可以设 置呼叫录音。如果启用此选项,所有用户设置将被忽略,呼叫不被自动录音。注 意,此选项既不影响队列录音,会议录音,也不影响按需录音功能。此功能仅影响 已设置了自动录音的用户。如果 Disabled 关闭了此选项,用户录音功能将按照呼 叫自动录音。 Call recording format 呼叫录音格式 支持系统选择何种格式录音。默认的录音格式是 wav, 可以修改为 WAV (WAV49—a GSM 格式), ulaw, alaw, sln, gsm, 和 g729。 更多 信息,请参考前面的 Recording formats 部分。 Recording Location 录音文件路径,支持用户选择在不同的路径存放录音文件。 默认的路径是 /var/spool/asterisk/monitor. 如果修改存放路径的话,需要输 入完整文件路径,包括 反斜杠 (例如,/media/callrecordings/)。 Run after record 支持用户自定义一个运行脚本,录音文件保存以后开始执行此 脚本文件。提供此脚本文件,系统可以自动删除,拷贝文件到新的路径,或者提 醒管理员系统生成了新的录音文件。 电话录音 FreePBX 可以支持对指定的分机录音,队列,和会议进行录音。如果一个通话遇到两 次录音请求(例如,呼入以后,在队列中),系统仅对通话进行一次录音。通话录音 在第一次应答时开启。在上面这个例子中,系统将采用队列中的录音为第一个录音。 如果一个通话在录音过程中有任何逻辑的冲突 (例如,呼叫方进入了队列中,但是应 答的座席设置了从不录音功能)。此呼叫同样被录音。呼叫目的地开启了录音功能的 话,通话仍然被录音。切记,如果呼叫目的地设置了总是通话录音功能,没有任何办 法停止通话录音。 [ 152 ] Chapter 8 对分机进行录音 FreePBX 支持对指定的分机进行录音,可以选择仅是呼入录音,呼出录音或者双向 录音。 为了对指定的分机进行录音,访问导航页面,点击 Users 或者 Extensions: 点击用户名称,检查 Recording Options 部分: Record Incoming 呼入录音 和 Record Outgoing 呼出录音 可以设置为 On Demand(按需录音), Always(总是), 或者 Never(从不)。 当选择 On Demand 按需录音时,用户接听电话前,可以按 *1 开始录音,重新按 *1 停止录音。按需录音只能对当前的最后通话进行录音,如果对下一个通话进行录 音,用户需要重新输入 *1 。 如果选择了Always 选项, 所有通话将根据现在的方向进行录音。当选择 Always 时, 按 *1 将停止录音. 如果选择 Never 从不录音, 所有通话将不录音。当 Never 后,按 *1 将不 停止录音。 [ 153 ] Recording Calls 确认完成设置步骤,点击 Submit 按钮, 然后点击 Apply Configuration Changes 工具条更新Asterisk 设置。 对队列录音 所有队列的呼叫都可以被录音。通常此功能应用在比较大型的队列,对其队列进行管 理以及纠纷的解决。访问导航页,Inbound Call Control 呼入控制菜单,点击 Queue: 点击队列名称,启用录音功能: [ 154 ] Chapter 8 在 Queue Options 队列选项,通话录音格式可以支持 wav49, wav, 和 gsm。 选择需要的录音格式,点击 Submit Changes 按钮,然后点击 Apply Configuration Changes 工具条更新asterisk 配置文件。 注意必须确认选择合适的队列录音格式,确保周期性地清理和维护这些录音文件。更 多信息请参考本章 Recording formats 部分,录音文件维护请参考本章的 Maintaining call recordings 部分。 [ 155 ] Recording Calls 对会议进行录音 所有会议室的通话都可以被录音。所有会议成员的通话将被合并成一个单独的文 件。为了启用对指定的呼叫中心队列录音, 在 Internal Options & Configuration 菜单下,选择 Conferences 子菜单: 选择录音的会议室: 在 Conference Options, the Record Conference 下拉菜单可以启用或者关闭录 音: [ 156 ] Chapter 8 选择 Yes 将对整个会议录音(从第一个成员进入会议室开始),录音格式为 WAV 格 式。完成设置以后,点击 Submit Changes 按钮,然后点击 Apply Configuration Changes 更新Asterisk 配置文件。 录音文件维护 值得注意的是,录音文件可能是一个非常大的文件。如果不去留意系统的硬盘空间 大小,PBX 将占用所有的硬盘空间,导致PBX呼叫停止。设置一个好的维护策略是非 常有必要的,通过系统自动维护或者清除一些无用的文件,可以避免PBX 出现不稳 定的问题。第三方的软件可以用来维护这些录音文件,简单的脚本程序可以足可以 完成维护管理录音文件。 最简单的办法就是定期删除录音文件。以下脚本程序可以删除14天内的录音文件. #!/bin/bash # Change this path to reflect your recording storage # location RECORDINGS=/var/spool/asterisk/monitor # Change this number to reflect the maximum age of call # recordings RECORDINGEXPIRY=14 # Change this number to reflect the maximum age of the # deletion logs LOGEXPIRY=365 # Current date DATE=`date` # Delete recordings older than $EXPIRY days find $RECORDINGS -mtime +$EXPIRY -exec rm -rfv > removal-$DATE.log\ # Delete log files older than $LOGEXPRY find . -mtime +$LOGEXPIRY -exec rm -rf\ [ 157 ] Recording Calls 每天系统自动运行一次此脚本。添加cron 定时工具,例如每天早晨 5点开始执行此 脚本程序: 0 5 * * * /etc/recordingdeletion/OldRecordingDeletion.sh 更多如何使用 cron 的技术在本章的 Using cron 部分讨论. 另外一种维护的方法是找到录音比较大的文件,保留这些文件(录音通常可能是业务 方面的纠纷)。下面的脚本自动删除 15 M 以下的录音文件: 以下脚本是为了维护一种 格式的语音文件,默认删除了低于15M的文件。 文件大小基本上相当于WAV, ULAW, ALAW, or SLN 格式下,15分钟通 话。如果是 WAV49 或者 GSM 格式,这个15M 的文件包含了2小时的通 话。如果使用多种格式录音 (例如,队列录音使用 GSM 格式,会议使用 WAV 格式), 此脚本需要修改支持多种格式录音。 #!/bin/bash # Change this path to reflect your recording storage # location RECORDINGS=/var/spool/asterisk/monitor # Change this number to reflect the minimum size of # recordings RECORDINGSIZE=15 # Change this number to reflect the maximum age of the # deletion logs LOGEXPIRY=365 # Current date DATE=`date` # Delete recordings older than $EXPIRY days find $RECORDINGS -size -$RECORDINGSIZE M -exec rm -rfv > removal- $DATE.log\ # Delete log files older than $LOGEXPRY find . -mtime +$LOGEXPIRY -exec rm -rf\ [ 158 ] Chapter 8 此脚本同样也可以按照每天早晨 5:00的周期 来定期执行检查录音文件: 0 5 * * * /etc/recordingdeletion/SmallRecordingDeletion.sh 使用 cron cron 系统可以让系统定时执行系统命令。简单办法是执行: crontab -e 如果 以前没有编辑过crontab 文 件 , crontab 可以使用以下任何一个编辑工具来编辑文 件: Select an editor. To change later, run 'select-editor'. 1. /usr/bin/vim.tiny 2. /bin/ed 3. /bin/nano <---- easiest 选择相应的编辑工具,打开此文件。 为了添加新条目,移动 鼠标到相应的地方。一个 crontab 新条目需要按照以下语 法添加: (min) (hour) (day) (month) (dayofweek) (command). 可以按照以下 方法替换字符: • (min)支持分钟设置 例如,希望系统在 2:30 a.m 运行, 输入 30 (分钟). 有效值范围从 0 到 59. • (hour) 支 持 小 时 设 置 例如,希望 系统在 2:30 a.m. 这里为 2 小时 有效值范围从0 到 23. • (day) 支 持 日 设 置 。 如 果 为 20号, 这里输入 20 .有效范围是1 到 31. 注 意,如果输入了错误的日期,例如 9月 31 号,系统将不产生任何报错信 息。 如果输入了无效的日期,命令永远不会执行。 [ 159 ] Recording Calls • (month) 支 持 月 份 设 置 。如 果 希 望 系 统 在 7 月 20 号 运 行 , 那 么 输 入 7. 有 效 值 范 围 是1 - 1 2. . • (dayofweek) 支 持 星 期 设 置 ,如 果 希 望 系 统 在 星 期 四 运 行, 输 入 4. 因 为 系 统 按 照 星 期 日 从 0 开 始 。有 效 值 为 0 到 7. 星 期 日 可 以 说0 或 者 7 。 • (command) 任 何 可 执 行 的 命 令。 例 如, 输 入 完 整 路 径,执 行 系 统 重 启: /sbin/reboot now. 对于任何时间的值 (分钟,小时,天,月,星期,周) 都可以使用 (*) 来 替 换 。 例 如,系 统 命 令 A s t e r is k 每 小 时 的 第 15 分 钟 重 新 启 动 一 次 : 15 * * * * /usr/sbin/asterisk -rx "reload" 可以指定一个范围来执行此命令。例如,仅在工作日,系统让Asterisk 每小时的第15 分钟重新启动一次: 15 * * * 1-5 /usr/sbin/asterisk -rx "reload" 完全可以通过逗号来指定一个值的范围。例如,仅在工作日,午饭时间除外,指定 Asterisk 配置文件在每小时的第15分钟出现启动一次: 15 9,10,11,13,14,15,16,17 * * 1-5 /usr/sbin/asterisk -rx "reload" 以上命令都应该是单行。 [ 160 ] Chapter 8 最后,这个反破折号可以用来指定一个步长。步长设置作为一个计算时间的周期。例 如,在小时的条目中,9-17/2 意 思 是 在 上 午 9 点 到 下 午 5 点 ,每 2 个 小 时 执 行 一 次 命 令 。 以下命令就是每第3个月的第一天,下午2 点执行一次命令: 0 2 * */3 * /sbin/reboot now 完成配置以后,保存退出系统文件。系统自动显示更新信息: crontab: installing new crontab 通过编辑器可以随时修改cron 文件设置。 总结 到目前为止,我们已经学习了如何在IPPBX 中进行录音。我们了解了维护录音文件的 重要性,我们可以通过脚本程序来管理录音文件。 在下一个章节,我们将技术任何自定义IPPBX。我们将重点讨论如何修改默认的语音等 待,自定义语音提示文件,和自定义系统热键。 [ 161 ] www.hiastar.com www.hiastar.com 第九章 自定义你的 PBX 完成所有的配置以后,现在我们有一个可以工作的PBX了。现在我们需要调整一些设置 满足公司的需求。FreePBX 支持多个选项自定义系统的语音文件。本章,我们将讨论 如何: • 上传自己自定义的语音等待文件,呼叫方进入语音等待以后,系统对呼叫方 播放此文件 • 录制语音提示,对呼入的通话自动应答 • 自定义功能热键(通过按键激活某些功能) • 配置自动回拨系统 • 设置 Direct Inward System Access (DISA) 外部直接访问,无论这个电话从 哪里呼入,对远端座席(呼入方)提供拨号音,进行二次拨号。 • 设置自定义的客户号码查找源,确认呼入方信息 • 设置 PIN 密码设置,提高安全性 • 设置自定义的应用模块 • 设置自定义的目的地 自定义音乐等待 FreePBX 支持两种格式的自定义音乐等待—静态文件或者流媒体. 静态文件是一个语 音文件 (例如 WAV 或者 MP3 文件) ,此文件可以上传到FreePBX 服务器,然后对呼叫 方回放。流媒体形式是连接一个流媒体的源,然后对呼叫方进行回放。典型的案例,就 是连接网络媒体流,例如网络电台广播,也可以通过其他语音设备或者声卡对呼叫方播 放媒体流。 Personalizing Your PBX FreePBX 支持不同的目录下包含不同的分组。不同的静态文件目录可以包含一系列不 同的文件。每个流媒体目录仅包含一个流媒体。音乐等待可以支持呼入路由 (呼入的 通话匹配路由以后,可以听到相应的一样等待。) 队列和振铃组。关联到呼叫目的地 的目录将覆盖指定目标设置的语音等待命令。一旦这个呼叫离开了目的地,将重新回 到已匹配的呼入路由指定的音乐等待目录。 使用音乐等待语音文件 为了创建一个音乐等待目录,点击 Internal Options & Configuration 下的 Music on Hold: 点击添加目录: 在初始设置时,静态文件目录包含一个选项: [ 164 ] Chapter 9 输入目录名称,点击 Submit Changes 按键。 在新页面点击 Browse ,上传 MP3 或 者 WAV 文件,然后点击 Upload 按键。 语音文件质量不是非常重要,FreePBX 将 降低语音文件的采样。最后结果是 单声道 8 kHz, 8 bits-per-sample, ULAW 格式。 点击 Upload 以后,FreePBX 将显示一个警告信息,如下截图: 确认按照告警信息执行。点击 OK 以后,页面将被加载。如果文件很大 或者网络连接不好,上传文件需要几分钟时间完成。如果在上传过程中点 击其他页面,可能导致上传文件丢失,或者损坏的音乐等待文件。 一旦完成上传以后,音乐等待文件将显示在页面上。如下截图: [ 165 ] Personalizing Your PBX 音乐目录准备就绪(尽管目前只有一个语音文件)。可以重复上传多个音乐文件。音乐 等待可以按照顺序播放这些文件(如果启用了Random Play 任意播放,系统可以任意 播放语音文件)。 使用媒体流音乐等待文件 通过媒体流设置音乐等待比静态的语音文件播放相对复杂一点。媒体流播放的语音质 量依赖于很多不可知因素。不过,通过实时媒体流设置一个语音等待目录是可行的。 Asterisk 必须选择 媒体流必须是单声道 8 kHz, 8 bits-per-sample, ULAW 语音 流。 大部分的媒体流软件支持转换为不同的媒体流。 因为占用不同的带宽或编码转换的问题,媒体流的音乐等待可能多 PBX性能有负面的影响。每个媒体流应该在设定的时间内仅允许播放 一次(如果对个呼叫方同时播放在进行音乐等待播放)。如果设置 了多个媒体流,多个媒体流可以同时被激活。每个实时的媒体流需 要占用大量的带宽(标准的在线广播速度为96 kbps or 128 kbps)。非常重要的是,在设置媒体流音乐等待时,必须考虑媒体 流带宽的问题。如果 5个 不同的媒体流同时工作的话,将会占用T1 线路 1/3的下行带宽。 另外,媒体流可能需要语音编码转换。Asterisk 要求媒体流的编码 是ULAW 格式,接收方无需编码转换。一个呼叫使用的格式是 G.729,将强制呼叫方使用G.729 格式。不仅要求IPPBX 做额外的处 理,同时要求对G.729 进行编码转处理。如果系统要求多个处理, 和多个编码转换的要求,语音质量将是一个问题。 [ 166 ] Chapter 9 在 Internal Options & Configuration 菜单,点击 Music on Hold 链接,如下 截图:: 点击 Add Streaming Category 添加媒体流目录: 媒体流目录支持 3 个选项,如下截图: [ 167 ] Personalizing Your PBX Category Name 定义一个媒体流名称,作为一个媒体流选项。 Application 选项是相对比较复杂的部分。此值是一个应用程序或者脚本,asterisk 将调用此程序用来启动监听媒体流。对于 RAW TCP 媒体流, 系统内置的媒体播放器支 持格式为 /usr/sbin/streamplayer server port. 但是这种方式仅限于在 RAW TCP 媒 体流,不能 支持 icecast 或者shoutcast 媒体播放。 为了支持 icecast 或者 shoutcast 媒体流,asterisk需要调用一个脚本程序。 基本将打包各种媒体播放程序来确定媒体流,转换媒体流到一个正确的格式,然 后 asterisk 在对其播放。例如,下面这个脚本 streamicecast.sh 从 icecastserver.net 调用媒体流,使用的格式是 ogg123,然 后 使 用 s o x 转 换 成 最 终 需 要 的 播 放 格 式 : #!/bin/bash # /usr/bin/streamicecast.sh # Streams icecast feed from icecastserver.net for use # with Asterisk and FreePBX /usr/bin/ogg123 -q -b 128 -p 32 -d wav -f - http://icecastserver.net/ | sox -r 16000 -t wav - -r 8000 -c 1 -t raw - vol 0.25 以上脚本路径名称 /usr/bin/streamicecast.sh in 可以添加到 Application 项。 Optional Format 用来通知Asterisk 媒体的格式。这个格式必须是asterisk 支持的 格式 (例如 ULAW 或 GSM). 最可靠的方式就是此项为空,强制媒体流使用ULAW format。 点击 Submit Changes,保存设置。此媒体流可以支持呼入路由,振铃组,和队 列。 [ 168 ] Chapter 9 自定义语音提示 语音提示音是系统用来对呼入方进行语音播放,例如当呼入方进入IVR, 分机随 行,振铃组,或者其他带语音提示的呼叫流程。语音提示的目的是对用户提供一个 操作指导。经常使用的例子如 " 欢迎致电XXX 公司,销售部,请按 1,技术支持 部,请 按 2,或直接拨打分机号码。" 录制自定义语音提示文件 FreePBX 提供一个比较简单的录音工具。 访问 Internal Options & Configuration 菜单下,点击 System Recordings 链 接,出现如下截图: 点击添加录音 Add Recording 链接,出现如下截图: : [ 169 ] Personalizing Your PBX FreePBX 可以支持两种对录音文件的添加: • 上传现有的录音文件 • 通过系统终端制作录音文件 上传录音文件的工作原理和语音等待的相同,点击 Browse 按钮,然后选择相应上 传的录音文件,点击 Upload 按钮。 通过系统录音,输入使用的分机号码,点击 Go 按钮。系统将显示录音的分机号 码。 [ 170 ] Chapter 9 通过分机拨打号码 *77,然后开始讲话,系统将对说将内容进行录音,录音完成好挂 机。然后在本机通过拨打 *99 试听刚才录制的语音文件。重复录音或者播放,直到语 音质量满意为止。 在 Name this Recording 输入栏 输 入 录 音 文 件 名 称 。 Enter a name for the recording in the Name this Recording box. 注意,名称仅包含字母和数字,不支 持空格,和问题字符 (例如 ", -, +, =, *, &, ^, %, $, #, @, !)。 完成录音以后,点击 Save 保存。录音文件将显示在右边菜单。 合并现有的语音文件 FreePBX 可以支持合并现有的语音文件。合并的文件将是一个单一的文件,可以连 续播放。点击 System Recordings 菜单的链接,如下截图: 点击内置录音 Built-in Recordings,出现如下截图: [ 171 ] Personalizing Your PBX 内置录音功能 Built-in Recordings 支持一个下拉菜单。现在需要录音的内容,然后 点击 Go 按钮: 编辑 录音如下截图: Change Name 选项支持修改录音文件名称。此名称应该区别于合并前的原文件。 Descriptive Name 选项用来描述录音文件的用途。 Files 下拉菜单支持选择不同的语音文件,并且系统对这两个文件进行合并。然后点 击保存按钮保存合并的文件。如下截图: [ 172 ] Chapter 9 点击箭头按钮可以选择播放的顺序,点击 garbage 按钮可以从合并的文件中删除留 言文件。确认以后,然后点击保存。 目录查询选项 大部分的PBX 系统提供目录查询选项,用户根据输入的名称来查询呼叫方号码。只要 用户支持语音邮箱,用户将包含在目录名单。FreePBX 允许用户自定义目录查询功 能。 用户可以通过 访问导航页菜单的 General Settings 链接,访问自定义选项,如下截图 : [ 173 ] Personalizing Your PBX 找到 Company Directory 部分内容选项: Find users in the Company Directory by 下拉菜单指定查询用户的姓,或者名,或者 用户全名。 如果选择了 Announce Extension,当呼叫方被转接时,系统将对 呼叫方播放用 户分机号码。 Operator Extension 可以是一个分机号码,外部号码,振铃组号码,或者队列号码。 如果在目录查询时,按 数字 0,呼叫方将被转接到Operator Extension。典型的应用 场景是,如果呼叫方在目录查询时,查询不到任何用户号码时,可以转接到一个分机 号码(Operator Extension)。 完成配置以后,点击 Submit Changes 按钮,保存配置。 自定义热键功能码 热键功能码是一个3位数的号码,用户可以通过拨打热键功能码启用或者关闭某些 PBX自带的功能。热键功能码典型的格式是一个星号* 加两个数字号码。在FreePBX 环境下,用户可以使用不同的号码来定义功能热键。 用户可以分为 Basic 菜单下的 Feature Codes 链接,点击访问功能热键页面: [ 174 ] Chapter 9 以下是所有FreePBX 功能热键号码: 对 Use Default? 选项取消选择(不打勾),然后在此项输入用户自定义的号 码,就可以实现自定义功能热键。如下截图: [ 175 ] Personalizing Your PBX 关闭或者启用功能热键选项,可以通过下拉菜单,选择 Enabled 或者 Disabled,如下 截图: 完成自定义选项以后,点击 Submit Changes ,保存设置。 回拨 回拨是一种呼叫目的地。通常呼叫方呼叫指定的电话号码,然后迅速挂机,被呼叫 的系统将通过自动呼叫流程,再次呼叫呼叫方的电话,呼叫方接听以后按照语音提 示,然后再拨打真正需要拨打的号码。此应用环境通常是无VOIP终端的用户为了节 省长途通话的费用。另外,有一些国家,对于手机用户来说,接听电话的费用比呼 出电话费用更加便宜,那么用户就可以使用回拨的方式节省通话费用。Callback 目 的地可能连接任何PBX系统资源(例如,分机号码,语音邮箱,或者登录)或者配合 DISA 对呼叫方提供拨号音,呼叫方通过DISA 呼出到其他的电话号码 (更多关于 DISA 介绍,请参考本章的 Direct Inward System Access (DISA)部分)。 访问 Internal Options & Configuration,点击 Callback 子菜单,出现如下截图: [ 176 ] Chapter 9 Callback 目的地支持以下四种配置选项: 1. Callback Description // 描述 2. Callback Number // 号码 3. Delay Before Callback // 回拨前延长 4. Destination after Callback // 回拨后目的地 [ 177 ] Personalizing Your PBX Callback Description 定义一个回拨的名称。此名称将作为未来的呼叫目的地。. Callback Number 是一个呼叫号码。FreePBX 将使用此号码对呼叫方进行呼叫。号 码格式必须和Outbound Routes 呼出路由的格式一致,此格式和呼出路由号码格式 匹配 (例如,如果呼出路由没有定义任何10 位数呼出路由模式,如果输入的号码是 5551234567,此格式将有效;否则回拨将不能工作). 如果此项为空,FreePBX 将尝 试呼叫发起回拨的电话号码。 首先必须测试如果 Callback Number 为空,系统是否工作。很 多手机号码呼入到普通的PSTN 线路显示的是"未知号码" 或者 " 无效号码" 。如果呼叫方的号码是未知号码或者无效号码,回拨 模块将不做任何提示。如果没有办法透传呼叫方电话号码,回拨 将不能正常工作。回拨模块仅对可以预设的号码有效。 Delay Before Callback 选项定义呼叫前延迟的时间段(单位:秒)。如果为空, 则无延迟。某些电话服务商的线路需要几秒钟时间来重新启动呼叫服务。通过一个 延迟设置,PBX 系统可以重新获得运营商的忙音信号。 Destination after Callback 定义呼叫目的地。当呼叫方通过回拨重新呼入到PBX 系统 时,呼叫方根据定义的呼叫目的地来接听电话。 完成所有设置以后,点击 Submit Changes 按钮,然后点击 Apply Configuration Changes 工具条更新Asterisk 内存设置。 [ 178 ] Chapter 9 以下是几个回拨呼叫目的地的使用场景: • 公司员工可以在任何地方检查本员工的语音邮箱。如果员工通过呼叫 toll-free 这样的公司电话呼叫公司号码,话费则相当高。回拨目的地模块可以设置呼 入的来电号码,可以通过*98 进入其他目的地(杂项)。呼叫方将收到一个从 PBX 来的呼叫,并且按照系统提示音,输入分机号码和密码来访问语音邮 箱。 • 一些公司通过VOIP 线路呼出的费用低于员工使用手机费用。员工通过手机 接受通话是零费用。通过设置回拨模块,然后拨打员工的手机号码,员工接 听以后转入到系统中,系统提供拨号音,提示用户,然后通过VOIP线路出 局。通过这样的方式呼出到VOIP 线路,避免员工使用手机呼出产生的高额 话费。更多DISA 技术介绍,请参考本章的 Direct Inward System Access (DISA) 部分。 • 一些公司可能每天收到来自于全世界任何地方的呼叫(例如,信用卡公司可 能受到很多用户来自于不同地方的呼叫,因为信用卡丢失的原因何在信用卡 被盗等等电话)。公司可以按照客户的不同,通过VOIP呼出到相应的用户, 而不需要付国际长途费用。设置一个呼叫目的地,用户接听以后,可以按照 系统提示音,将用户转入相应的呼叫队列,由专门的负责人来处理相关问 题。 直接拨入系统访问 (DISA) PBX的DISA 呼叫目的地对呼叫方提供系统拨号音。一旦用户听到拨号音,用户可以 使用任何PBX功能,工作方式类似于PBX 内部分机的形式。这样,用户可以通过 PBX的呼叫方式,再次拨打外部号码,检查邮箱信息,或者拨打任何分机号码。 [ 179 ] Personalizing Your PBX 设置 DISA 呼叫目的地,可以访问 Internal Options & Configurations 菜单的子 菜单 DISA来配置其功能,如下截图: DISA 呼叫目的地支持 8 种配置选项: 1. DISA name 2. PIN 3. Response Timeout 4. Digit Timeout 5. Require Confirmation 6. Caller ID 7. Context 8. Allow Hangup [ 180 ] Chapter 9 DISA name 用来定义DISA 配置,作为FreePBX 界面呼叫目的地的其中一个选项。 PIN 用来对呼叫方呼入DISA时进行的签权认证。如果PIN项不为空,系统将提示呼叫 方输入签权认证码。用户输入的PIN必须和此项输入的完全匹配;负责协调将挂断此 呼叫,并且取消对DISA访问。此项可以支持多个PIN值输入,通过逗号来区分 (例 如,输入1234, 5678, 9012,用户输入其中一个PIN 号码,系统将匹配其号码)。 Response Timeout 定义一个时间段,允许用户挂断电话之前在指定的时间段内输入 有效的值。这个值适用于用户无任何数字输入或者用户输入部分数字的两种状态。 默认的值是10秒。通常设置的值是15或者20秒之间,这样用户有足够的时间来输入 有效的数值。 Digit Timeout 用来定义一个时间段,FreePBX在呼出之前,允许用户在输入数字时, 两个数字之间的时间间隔。如果超出此时间段,认定为超时。默认的值是5 秒钟。对于 一般用户来说,5秒钟的时间间隔足够长。 如果选择了 Require Confirmation 选项,只要用户被转接到DISA 呼叫目的地, FreePBX 将提示用户按 1 访问 DISA 流程。如果用户按 1 失败,系统将挂机。此功 能对某些场景非常有帮助。例如,当通过呼入路由成功匹配了来电显示号码以后,呼 叫被直接转接到DISA呼叫目的地。有时候,呼叫快速建立以后,呼叫方进入DISA呼叫 目的地时,用户没有听到任何振铃或者确认提示,在用户意识到进入DISA流程,但是 可能已经超时或者挂机。要求用户确认的提示功能可以保证用户通过输入按键1来进 入DISA 目的地,以便保证用户有充足的时间来准备。 Caller ID 用来定义一个通过DISA 呼出的呼出号码。一般的格式为 "Caller Name" <##########>—Caller Name 使 用 自 己 定 义 的 名 字 通 话 。 ########## 使 用 自 定 义 的 呼 出 号 码 替 换 , "Packt Publishing" <5551234567>). 此选项是一个可选项,如果为 空,呼出号码是呼叫发起人的号码。 [ 181 ] Personalizing Your PBX 在 Caller ID 选项设置的去电显示号码不能保证完全可以工作。如果中 继路由开启了 Never Override CallerID 选项,Caller ID 将被中继配置 的CallerID 覆盖。更多信息,请参考 第四章 中继设置。 Context 用来指定一个context 标签,当用户进入到DISA 流程时,asterisk 将用户指定 到此context。 在这个context 中,用户可以访问一些指定的中继和其他的功能。默认 环境下,FreePBX 中的所有用户都是属于from-internal context。 修改context 选项, 需要管理员对Asterisk 配置文件的结构有所了解,添加自定义的context, 通常系统会 在/etc/asterisk目录下生成一个extensions customer.conf 文件。设置不同的context, 可能会 添加一个DISA 呼叫目的地(无用的)。因此,确认输入的conetxt 是有效的。 如果选择了 Allow Hangup 选项,呼叫方可以按 挂段电话热键来选择挂机(默认 的热键是**) ,结束当前通话,并且保持一个带拨号音的状态,用户可以再次拨 号。此功能的目的是防止呼叫方挂机以后,再次拨打PBX来进行签权认证。如果 需要的话,此挂机功能码可以通过自定义热键来修改。更多介绍,请参考本章的 自定义功能热键部分。 一旦完成配置设置,点击Submit Changes 按钮,然后点击 Apply Configuration Changes 工具条来保存更新 DISA call target 设置。 CallerID 查找源 Caller ID 查找源补充业务是运营商发送到用户端的呼叫方用户信息。Caller ID 查找源包含一个电话号码列表和与之匹配的号码持有者姓名。当FreePBX 接收到呼 叫以后,FreePBX 可以通过呼叫方的电话号码来查找用户姓名。如果呼叫方在列表 名单,获得的姓名将被透传到相应的路由目的地。呼叫方名称将在对端终端显示 (如果终端支持来电显示),而且呼叫方名称可以保存在FreePBX的CDR 记录中。 [ 182 ] Chapter 9 设置 Caller ID 查找源, 访问 Inbound Call Control,点击 CallerID Lookup Sources 子菜单链接,出现如下截图: 添加源 Add Source 支持 3个标准的配置选项: 1. Source Description 2. Source type 3. Cache results Source Description 定义一个源的名称,此设置将在呼入路由显示。 [ 183 ] Personalizing Your PBX Source type 查找源的类型。 定义一种方法来获得用户caller ID 信息。 FreePBX 支持通过以下几种方法很多用户信息: ENUM: FreePBX 将调用在/etc/asterisk/enum.conf 配置的ENUM 服务器,获得返 回的用户信息。默认环境下,此文件包含 e164.arpa 和 e164.org zones 作为查找源。系统 将查找所有在enum.conf 设置的 ENUM 服务器来获得用户信息。 • HTTP: FreePBX 将通过HTTP web 服务来查询 caller ID name 信息。查找源 可以通过一些机构提供的服务,例如Google 电话簿,在线黄页,利用HTTP 接口来查询用户信息,然后返回 用户名称. 当选择 HTTP 方法查询时,6个额 外的选项需要配置才能支持HTTP查询。 • MySQL: FreePBX 将通过 MySQL 数据库来查询用户姓名。通常数据库可能是 公司内部的CRM系统,所有用户信息都存储在此系统中。选择MySQL 方法查 询时,额外的5个配置选项需要配置。 • SugarCRM: FreePBX 2.5.1 版本不支持此方法查询。未来的版本将支持通 SugarCRM 数据库系统来查询用户信息。 . 如果选择了Cache results, 查找源返回的结果将保存到本地的AstDB 数据库。如果 查询相同的结果,系统可以通过AstDB 数据库快速返回查询结果。 注意,如果Asterisk 或者 FreePBX 重新启动,AstDB 会一直返回数据库保存的用户 信息。如果用户信息被保存到缓存中,即使 查找源的用户信息修改,FreePBX 也将 返回缓存的用户信息。如果想获得一个从查找源返回一个新的Caller ID 姓名信息, 必须关闭 Caching 选项。 一旦配置完成,点击 Submit Changes 按钮,然后点击 Apply Configuration Changes 工具条更新配置。选择系统已经支持了查找源,我们可以设置呼入路由, 使用查找源来设置呼叫方的用户信息。在 Inbound Call Control 菜单点击 Inbound Routes 链接,出现如下截图: [ 184 ] Chapter 9 点击 inbound route 路由,出现如下截图(例如5551234567) 找到 CID Lookup Source , 从下拉菜单 选择 源查找: 点击 Submit 按钮,然后点击 Apply Configuration Changes 工具条更新 系统配置。呼入路由将根据查找源返回结果显示用户信息。 [ 185 ] Personalizing Your PBX HTTP 源类型 当使用HTTP 作为源查找类型时,以下几个配置选项需要配置: 1. Host 2. Port 3. Username 4. Password 5. Path 6. Query Host 主机名或者IP 地址(web 服务器提供源查找)。格式为 server.company. com 或 者 255.255.255.255. 不包括 任何前缀名称(例如 "http://" 和 "/lookup.php"). 如 果服务商提供了访问的接口方式,例如 http://server.company.com/ lookup.php?q=[number], 主机名需要替换到此格式。 Port 端口是用来提供web 访问的端口。如果为空,则使用系统默认的端口 80. 如果启 用了HTTPS ,而不是 HTTP,在端口项输入443 。 [ 186 ] Chapter 9 Username 和 Password 用来对用户访问数据库进行验证 。 格 式 为 http://server.company.com/lookup.php?q=[number]&username=exampleuser&passw ord=examplepassword, 不要在这些选项中输入用户名和密码。访问数据库的用户名 和密码必须在数据库查询命令中执行。这些命令将作为 Query 部分选项。 Path 指定web 服 务 器 查 询 lookup 脚本的路径。例如查询服务商的格式是 http://server.company.com/callerid/lookup.php?q=[number], 那么 /callerid/lookup.php 是 此 路 径 的 值 。 确 认 起 始 处 包 含 (/) 。 Query 查询命令定义一个查询字符串,此字符串将发送到web 服务器端。查询字符串可 以是服务地址后加问号,然后带任何字符串。例如 http://server.company.com/ lookup.php?q=[number]&type=callerid, 那么,q=[number]&type=callerid 就 是 Q u e r y 需 要 填 入 的 值 。 查询字符串必须包含 一个需要查询的号码。FreePBX 将通过提供的 号码来查询相应的用户名称信息。 一个非常棒的例子就是 Nerd Vittles 的HTTP 免费源查询脚本。这个脚本使 用HTTP 查询源来查找一下公开的电话薄信息,包括: • Google Phonebook • AnyWho • Whitepages 更多 CallerID Superfecta 脚本信息,可以通过以下链接获得: http://bestof.nerdvittles.com/applications/callerid/. [ 187 ] Personalizing Your PBX MySQL 源类型 当使用 MySQL 数据库作为查询源类型时,以下几个方面需要设置: 1. Host 2. Database 3. Query 4. Username 5. Password Host 主机名,定义数据库的主机名。格式可以是 server.company.com 或者 255.255.255.255. 如果PBX 支持本地的数据库来保存Caller ID 信息,那么此项就是 localhost。 在一台数据库服务器保存 caller ID 数据和Asterisk 数据,可能影响系 统的性能。当系统路由高并发的呼叫同时,如果执行MYSQL 查询,就 会增加系统负载。建议用户信息存放在另一台服务器。 Database 定义数据库名称。 Query 定义 SQL 查询语句字符串,用来对数据库进行查询来获得查询结果。查询字 符串必须包含查询的电话号码。 [ 188 ] Chapter 9 Username 和密码用来对数据库连接进行验证。用户应该有对数据库的读权限。此用 户不能对数据库进行数据添加或者修改数据库数据。 PIN Sets A Personal Identification Number (PIN) 是一个数字类型的密码。FreePBX 将通 过密码认证的方式对用户进行验证,通过验证的用户可以使用一些指定的功能,例 如呼出路由或者DISA。如果认证无效,用户则不能使用PBX 功能。PIN Sets 是一 个认证组,FreePBX 可以提供认证组对用户进行认证,通过认证的用户访问PBX的 功能,而不是使用单独的PIN 密码。每个独立的用户可以持有唯一的PIN密码认 证,并且可以取消用户对PBX 功能访问,无需修改PIN 密码。 除了对用户进行签权认证,PIN sets可以对用户使用的功能进行跟踪。当PIN Sets 作为认证机制时,FreePBX 可以通过PIN访问CDR的accountcode功能。甚至于,如果 当用户通过呼叫某人分机呼出时,他们同样需要输入他们自己的 account code。当 对某些用户生成呼叫报告时,系统将根据使用过的PIN Sets 来关联相应的功能,生 成一个准确的呼叫记录。这个功能通常用来部署在对传统电话控制的公司PBX中。通 过这样的方式,公司可以跟踪哪一位员工(此员工输入了PIN Sets,通过呼出路由验 证)经常使用长途电话。 FreePBX 2.5.1版本仅支持在呼出路由时使用 PIN Sets 功能。未来的版本 将支持DISA 和电话会议功能的验证。 [ 189 ] Personalizing Your PBX 设置 PIN set, 访问 Internal Options & Configuration 页面,点击 PIN Sets 子菜单链 接,出现如下截图: PIN sets 支持 3 个 配置选项: 1. PIN Set Description 2. Record In CDR? 3. PIN List PIN Set Description 用来定义一个PIN Set 描述。此设置将支持呼出路由。 [ 190 ] Chapter 9 如果选择了Record In CDR ? 选 项 , 用 户 认证使 用 的 PIN Set 将 保 存在CDR 为 accountcode,accountcode 将关联用户呼叫。这是一种比较可靠的办法来跟踪呼出路 由的使用情况,因为如果用户使用其他分机呼出,仍然需要他们自己的PIN Set 认 证,然后呼出。通过此方式,呼出路由就完全和用户关联,并且保证了呼出的安全 性。如果不启用此选项,呼叫记录中的 accountcode 无任何关联信息。 PIN List 是一个PIN 列表。每个PIN 属于自己的线路。可以根据自己的使用情况添 加PIN。用户必须记住自己的PIN 号码,建议设置长度为 4 位或者 5位数。 一个完整的 PIN set 像如下截图: 为了启用PIN set,我们必须指定PIN Set 到相应的呼出路由。点击 Basic 页面,点击 Outbound Routes 链接,出现如下截图: [ 191 ] Personalizing Your PBX 点击已经关联了PIN Set的呼出路由名称(例如,长途): 从PIN Set 下拉菜单,选择 新的PIN Set 名称: 点击Submit Changes 按钮,然后点击 Apply Configuration Changes 工具条,保存 配置。所有的呼出路由都必须通过PIN set 认证才能呼出。 其他应用模块 其他应用模块是一个用户自定义的功能热键。此应用模块允许呼叫方拨打自定义的 分机或者热键把呼叫方转接到任何呼叫目的地。例如,如果我们设置了一个振铃组 对所有组成员手机振铃,我们可以建立一个热键功能拨打 *CELL (*2355) 对所有成 员手机振铃。 [ 192 ] Chapter 9 访问 Internal Options & Configuration 导航栏,点击 Misc Applications 链接,出 现如下截图: Misc applications 支持4个选项配置: 1. Description // 描述 2. Feature Code // 功能热键 3. Feature Status // 功能状态 4. Destination // 目的地 [ 193 ] Personalizing Your PBX Description 用来定义一个应用模块(将来可以被编辑或者删除)。 Feature Code 是一个自定义的功能热键,用户通过拨打自定义的热键功能码访问 应用程序。可以说星号加数字 (例如, *1234) 或者是简单的数字 (例如, 1234). 此数值必须是唯一的 (应用模块的热键不能和其他的应用程序功能码共享). Feature Status 决定是否此应用程序是激活状态。如果此项设置为 Disabled, 系统调 用此应用程序时,用户将被提示输入的功能热键无效。此设置可以快速关闭应用程序, 无需删除整个应用程序。 Destination 是一个呼叫目的地。呼叫方将被转接的最终目的地。此目的地 支持任何一个在应用程序设置的有效目的地。 完成设置以后,点击 Submit Changes ,然后点击 Apply Configuration Changes 工具条,完成配置,更新设置。此应用程序现在是激活状态,用户可以通过PBX 的 任何分机拨打设定的功能热键访问此应用程序。 其他目的地 其他目的地定义一个自定义的呼叫目的地,FreePBX 可以调用此模块。任何通过用户分 机拨打的号码可以转入到自定义的呼叫目的地。例如,默认环境下,没有任何方法可以 让呼入的用户检测自己的语音邮箱。设置一个自定义的呼叫目的地,用户可以拨打*98, 呼入路由可以直接转入到一个自定义的目的地。被路由到此目的地的用户可以马上听到 他说音,然后根据提示,输入认证信息,访问自己的语音邮箱。 访问 Internal Options & Configuration 页面,点击 Misc Destinations 链接,如下 截图: [ 194 ] Chapter 9 Misc destinations 支持2 个配置选项和一个快速接听下拉选项: • Description • Dial • --featurecode shortcuts-- [ 195 ] Personalizing Your PBX Description 用来定义一个目的地名称,作为一个在其他模块中的呼叫目的地选 择项。 Dial 是一个分机,电话号码或者热键码。当呼叫方被路由到此目的地时,系统需要 拨打此选项中设置的数值。任何用户分机可拨打的号码都可以支持此项。 --featurecode shortcuts—是一个快捷下拉菜单,列出了所有目前PBX 支持的应 用模块。从下拉菜单中选择一个应用模块可以快速添加一个指定的标志符在Dial 选项中,而不需要填入实际的功能热键或者分机 ( 例如, {voicemail:dialvoicemail} 添 加 到 了 此 项 来 表 示 语 音 信 箱 ). 这个标志符动态连接到了被选的应用模块。如果一个应用模块的功能热键被修改, 目的地将继续工作。例如,默认访问 语音邮箱的热键是*98. 只要访问语音邮箱的 热键没有修改,在 Dial的选项中 输入*98,目的地设置仍然工作。但是,如果在 某些环境下,访问语音邮箱的功能热键被修改成自定义的热键,其他目的地仍然继 续拨打*98, 并且任何路由到其他目的通话将收到一个提示 -“*98 是一个无效的 号码”。 使用功能热键快捷方式可以避免因为自定义导致的目的地失效的风险。 完成配置以后,点击 Submit Changes button 然后点击 Apply Configuration Changes 工具条,更新系统配置。我们刚才创建的目的地可以作为FreePBX 模块的呼 叫目标选项。如下截图: [ 196 ] Chapter 9 总结 到目前为止,我们真正完成了一个PBX的完整设置。在此章节中,我们学习了以下内 容: • 上传自定义的语音等待 • 以网络媒体流创建语音等待 • 设置一个自动回拨系统 • 设置了外部直接呼入系统 DISA • 配置了自定义的caller ID 查找源 • 配置了 PIN sets • 创建自定义的应用模块 • 创建自定义的目的地 现在,按照我们自己的需求和自定义设置,我们已经配置了我们自己完整的PBX 系统。 在下一个章节,为了防止一些意外灾害发生,确保系统的安全性,我们将讨论一 些重要的话题,例如系统保护,备份和系统还原等方法。 [ 197 ] 第十章 系统保护,备份和还原 经过我们对系统功能的配置,现在的IPPBX 应该是一个可以工作的系统。我们首先 对系统做一些系统保护,文件保存的工作。事实上,最好的硬件系统都有可能出现 问题。没有一个正确的系统保护和备份措施,系统将不是一个完整的系统。在本章 节,我们将讨论以下几个方面的内容: • 使用UPS 设备,冗余设备,防灾保护对系统实施保护措施 • 做系统文件备份 • 配置经常性备份 • 还原系统备份 • 维护备份设置 系统保护 如果系统出现问题或者硬件出现故障,目前有很多办法对系统进行保护。PBX 是控 制和负责公司通信的最重要的手段,如果系统停止运行,会对公司造成经济损失。 下面列出了如何安装配置设备,已经超出了本书讨论的范围,不过还是建议用户在安 装PBX时注意这些问题。 System Protection, Backup and Restoration 不间断电源 对于VOIP 系统来说,配备不间断电源是非常有必要。UPS 是一个非常好的电源备份 方案,如果电源不能供电,可以直接插入不间断电源来保证系统正常的运转,直到供 电回复正常。如果不间断电源供电不足,大部分的不间断电源可以对服务器端发送一 个信号,提醒服务器端电源需要切换。 一些 UPS 设备提供一个电源调节服务,可以对接入的设备提供稳定的电源供给。 UPS 可以对供电不足的设备提供正常的电源供给,保证系统的正常工作。一些不间 断电源设备是不包括电源调节功能的,请购买前确认。 同时也要注意,除了电源以外,稳定的网络也是保证VOIP 系统正常工作的必要条 件,如果PBX 使用了VOIP 中继线路,必须保证网络畅通和网络的稳定。最好的办 法是不间断电源不仅仅支持PBX 本身供电,同时支持网络设备 modems, 路由器和 交换机供电。 冗余设备 大部分的硬件设备厂家提供的硬件可以支持冗余设备。经常遇到的冗余问题就是系统 的硬盘备份,通常在 RAID 设置。这样可以保证如果硬盘不能正常工作,但是服务器 可以正常工作。电源同时也需要冗余备份,保证出现电源问题,系统可以使用备份的 电源供电。 虽然冗余设备的成本非常昂贵,但是可以保证整个PBX正常工作。 冗余服务器 如果对PBX 部署有足够的预算,比较可行的方式是安装一套完全独立的PBX作为备份 服务器,支持了完整的PBX功能。如果主服务器出现故障或者不能正常工作,备份服 务器立即启动,通过热备份方式保证公司的电话通信不会中断。另外的方法是安装 一台备用服务器,包括基本的Linux,Asterisk 和FreePBX,如果主机出现工作,可 以启动备用服务器做临时应急使用。 [ 200 ] Chapter 10 热备的服务器通常和主服务器的安装配置完全相同。主服务器配置的用户,中继,和 呼叫目的地,数据信息都需要从主服务器拷贝到从服务器。简单的办法是通过对主服 务器的文件进行做热备份。为了确保备份数据是及时更新的数据,需要至少每天执行 备份和还有配置文件。 比较复杂的办法是对实时复制MySQL数据库数据,Asterisk 配 置文件,邮箱邮箱目录。主服务器配置数据一旦更新,通过实时复制的方法可以快速 更新到从服务器进行热备。 运行热备服务器的解决方案会增加很多成本。购买硬件需要都需要额外的备份,而且 热备服务器必须同时工作。另外,需要额外的人员投入来维护数据备份。但是如果有 PBX 热备份的成本投入,可以利用热备份来减少PBX 故障时间。 当然冷备份也是一个比较好的办法,可以把主服务器的配置文件拷贝到从服务器,并 且及时更新配置文件。如果主服务器发生故障,可以开启从服务器来作为一个应急措 施。 无论什么时候,主服务器的系统软件包或者FreePBX 的模块进行了更新,冷备份的 服务器也需要及时更新。这样确保主从服务器软件版本和支持包是完全兼容和一致 的。如果还原文件以后,保证系统可以正常工作。冷备份同样需要购买备份的硬 件,不需要频繁做备份,而且节省了人员维护成本。 如果公司对 PBX 系统实施成本有非常严格的控制,可以考虑冷备份的方式来降低人 员维护成本。 [ 201 ] System Protection, Backup and Restoration 电源浪涌保护 大部分的浪涌保护是针对电源供电线路的,电源的稳定性可以对PBX功能带来很大的 影响。简单来说,浪涌就是系统电源瞬间产生的强力脉冲信号。浪涌的来源分为外部 (雷电原因)和系统内部(系统内部硬件故障或突然停止)。 如果PBX 使用模拟线路 进行通信(包括Asterisk 语音卡FXO 和ATA),很多情况下,雷电带来的浪涌会通过 模拟线路击穿Asterisk 语音板卡或者ATA 设备。所以VOIP 网关或者Asterisk 语音 板卡的防雷设计是非常重要的。当然因为外部雷电的原因,也可能击穿公司的网络接 入设备。所以建议用户安装PBX 考虑电源保护的问题。 系统备份 FreePBX 支持对语音邮箱,系统录音文件,系统配置文件,呼叫记录,和 Operator Panel 配置文件进行备份。备份方式可以是一次备份或者定期备份. 语音邮箱备份将对在系统配置中的本地语音留言和呼出的语音邮箱信息进行备份。 如果出现系统故障,用户必须重新录制语音留言的提示音,并且会导致接收语音留 言失败。 备份系统录音文件将对语音提示文件和自定义的语音等待文件进行备份。如果没有备 份这些文件,发生系统故障,需要用户重新录制IVR 语音文件,分机随行文件,队列 提示文件和音乐等待文件。 备份系统配置文件将对所有配置文件进行备份,包括中继配置文件,用户文件, IVR设置,队列设置,设备配置文件,时间条件设置等等文件进行备份。如果没有 备份以上文件,方式系统工作,需要用户重新配置以上文件。 备份 CDR 呼叫记录将对所有系统保存的呼叫记录进行备份。如果发生系统故障,用户 没有备份CDR 记录,所有记录将丢失。 备份 Operator Panel 将对Flash Operator Panel 的所有 HTML 和配置文件数据 进行备份。如果没有对此进行备份,系统工作后,所有自定义的FOP配置将需要重 新配置。 [ 202 ] Chapter 10 设置备份 点击主菜单的 Tools 标签,出现 如下截图: 点击 Backup & Restore: [ 203 ] System Protection, Backup and Restoration 点击 Add Backup Schedule: 出现系统备份 System Backup 页面: 第一部分列出了需要备份的内容列表。注意,单 FreePBX 系统可以支持多个不同定时 备份配置。备份功能支持系统配置每天备份,语音邮箱每周备份,系统录音和CDR 记 录每月备份。 [ 204 ] Chapter 10 设置一次备份,从 Run Backup 下拉菜单中选择 Now,如下截图: 设置完成以后,如果点击 Submit Changes 以后,系统将根据选择的备份模块内容 立即进行备份。此备份仅进行一次。 如果计划设置成定期备份而不是一次备份,从Run Backup 下拉菜单选择预设的日期 来进行备份,或者选择Follow Schedule Below , 然后按照列表中的日期来定义定 期备份。从截图中可以看到,备份时间将从 每个月的 1号,早晨 6:30 开始备 份。 [ 205 ] System Protection, Backup and Restoration 点击 Submit Changes,保存备份日期。完成保存以后,出现如下截图: 点击备份日期名称,出现 System Backup 页面,用户可以对日期和备份模块进行再次 修改。 维护和保存备份文件 FreePBX 提供的备份方法非常简单有效,但是有两个问题需要注意:存储和文件保 护。如何合并文件和对存储空间的管理是一个重要的问题。维护工作和存储管理是非 常有必要的。定期备份机制会一直按照日期进行备份,如果缺乏有效的管理,可能导 致系统存储空间不足,最后备份功能停止工作。 虽然对系统备份实施了管理和监控,备份文件的保护问题仍然存在。因为FreePBX 备份是在系统内部进行,如果存储硬盘出现问题或者文件损害,没有任何办法还原 备份。 如何维护备份 通过脚本程序维护备份文件是最好的备份。从脚本可以通过命令查询来获取存储空间 的峰值或者剩余空间,然后删除旧的文件。以下脚本文件查询所有旧的备份文件(90 天以前的),然后删除这些文件。此脚本对用户备份相当有用,用户可以结合自己的 业务需求,修改BACKUPEXPIRY 的赋值来执行定期备份。 The following script is called OldBackupDeletion.sh: #!/bin/bash # Change this path to reflect your backup storage # location (default is /var/lib/asterisk/backups) BACKUPS=/var/lib/asterisk/backups # Change this number to reflect the maximum age of # backups (in days) BACKUPEXPIRY=90 [ 206 ] Chapter 10 # Change this number to reflect the maximum age of the # deletion logs (in days) LOGEXPIRY=365 # Current date DATE='date' # Delete recordings older than $EXPIRY days find $BACKUPS -mtime +$BACKUPEXPIRY -exec rm -rfv > removal-$DATE.log\ # Delete log files older than $LOGEXPRY find . -mtime +$LOGEXPIRY -exec rm -rf\ 这个脚本程序可以每天运行一次,查询备份中的文件历史,如果是旧的文件(超 过一定的天数),执行删除。另外,此脚本程序可以添加到系统的任务 cron 中, 文件路径在 /etc/ backupdeletion , 每 天 早 晨 5 点 检 查 删 除 旧 文 件 : 0 5 * * * /etc/backupdeletion/OldBackupDeletion.sh 保护备份文件 有很多种办法保护备份文件。因为,使用的环境和要求不同,每一种备份方法都有 各自的优缺点。讨论备份的方法超出了本书的讨论范围,但是必须记得,备份文件 必须是经常在自己手上的。以下是几种最常用办法来保护备份文件: • 硬件备份 (特别是硬盘 RAID 设置) • 自动备份文件保存在一个外部存储空间或者网络空间 • 自动备份文件的拷贝存放在其他备份服务器或者空间服务商(通过 rsync, FTP) 还原文件 在FreePBX 环境下备份的文件只能还原到版本完全相同的FreePBX 系统。如果系统出 现问题,用户需要重新安装Linux,Asterisk,FreePBX 和 MySQL,然后通过备份文件 还原PBX 系统文件。 仅支持还原同样版本的 FreePBX 还原备份文件仅支持在同样的FreePBX 版本下创建的备份文件。备份还 原功能可能支持不同的FreePBX,但是不建议在不同的版本环境下还 原,这样可能导致其他问题。 [ 207 ] System Protection, Backup and Restoration 每个备份文件保存在路径 /var/lib/asterisk/backups. 每个定期备份的文件存 放在不同的日期目录下。如果使用备份文件还原一个刚刚安装的新系统,必须先拷 贝备份文件到 /var/lib/asterisk/backups,然后再访问FreePBX 界面。 点击导航栏页面的 Tools 标签,出现如下截图: 点击 Backup & Restore: [ 208 ] Chapter 10 点击 Restore from Backup: 出现 System Restore 页面: 还原菜单将列出每个备份文件(包括了一次备份的文件和多次备份的文件)。点击备 份文件名称,出现如下截图: 文件名包含备份的日期和具体的时间。点击文件名出现以下数据选项: [ 209 ] System Protection, Backup and Restoration 页面提供了各种还原和删除的文件选项。选择不同的备份文件可以还原这些文件。 点击选择的还原选项,FreePBX 将对对选择的文件进行还原,覆盖系统默认的配置 文件。 比较好的方法是首先备份目前系统所有的FreePBX 配置文件,然后进行 备份还原。还原备份将覆盖目前所有的FreePBX 文件。如果使用了错误 的备份文件,不可能撤销还原备份。 点击 OK 进行执行还原备份。或者点击 Cancel 取消还原: 完成还原以后,点击 Apply Configuration Changes 工具条,重新加载配置文 件。 总结 现在我们设置了处理系统发生故障的应急方法和备份办法。我们掌握了通过适当的方 法可以预防系统故障带来的隐患。FreePBX 按照设置进行定期备份,并且我们已经对 备份文件进行维护和保护。如果系统发生故障,我们可以通过备份文件对系统进行还 原。保证我们的PBX 保持正常的工作状态。 下一章,我们将讨论如何确保FreePBX 安全的内容. [ 210 ] 第十一章 安全和访问控制 无论使用什么硬件平台,FreePBX 和其他的服务器一样,同样需要安全设置来保 证PBX 正常运行。FreePBX 是一个软件产品,需要安全和维护来保证黑客和一些 恶意的用户对其进行侵入或者盗打电话。因为PBX 的特殊性,如果PBX 出现安全 问题,往往没有什么退路,必须迅速解决出现的问题,因此,最常用的办法就是 在PBX 开始使用时就必须做好安全工作。本章,我们将讨论以下几个方面的内 容: • 升级 Linux 系统软件包 • 维护Asterisk 当前版本 • 对MySQL 服务器设置安全措施 • 对PBX远程登录设置安全措施 • 对FreePBX 管理员设置安全措施 系统软件包 一个FreePBX 系统需要安装很多软件支持包。这些支持包括你需要经常升级。为了 修复软件的bug 错误,经常需要升级目前软件包。升级支持包就可能带来安全漏 洞,导致系统被攻击或者侵入。和升级其他软件一样,必须确认有一个备份在手 上,以免升级软件导致的其他问题。 根据系统发行版本的不同,升级维护的周期也不一样。通常来说,每周更新一次 系统软件已经足够了(如果没有什么问题,无需更新)。标准的时间为一个月更 新一次系统软件包。当然如果系统没有需要更新的软件,尽量不要轻易更新。 Security and Access Control 不同的Linux 发行版本有不同的更新方法。本书的安装Asterisk, FreePBX 的系统是 Ubuntu 和 Centos,所以我们将根据这两个系统来进行举例说明。如果使用其他的操 作系统,请自己检查如何更新系统支持包。 安全的软件包 这里没有任何黄金法则告诉你什么软件包是安全的或者是不安全 的。作为FreePBX 系统管理员,你必须意识到因为软件包更新可能 带来的问题。最好办法是订阅系统发布厂家的邮件列表服务,然后 询问发布人员。 更新 Ubuntu 服务器 更新 Ubuntu 服务器,首先执行命令: sudo apt-get update 开始更新所有的软件包: sudo apt-get dist-upgrade 系统将列出一个需要更新的软件包更新列表。如果需要更新的软件包,依赖于第三方 软件包,系统也将同时安装第三方的软件包。仔细检查需要更新的软件包,按 Y 键, 然后输入 Enter 开始安装。 完成更新以后,系统将返回到 shell 命令行. 成功更新以后,确认系统显示类似的结 果信息: Building dependency tree Reading state information... Done Calculating upgrade... Done 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded. 更新 CentOS 更新 CentOS 软件包, 执行以下命令: yum update [ 212 ] Chapter 11 系统将列出需要更新的软件包名称: Transaction Summary ========================================= Install 4 Package(s) Update 44 Package(s) Remove 0 Package(s) Total download size: 113 M Is this ok [y/N]: Transaction Summary 列出了一个软件包的大小和数量。按 Y 键,然后输入 Enter 键进行更新。. 完成更新以后,检查更新提示信息,确认成功更新。. 维护 Asterisk 版本 像其他系统的软件包一样,Digium 也经常发布一些新的版本,来修补一些软件的 bug 或者安全的补丁。如果Asterisk 是以源代码方式安装,当系统更新时, Asterisk 不能被更新。这里,更新一个Asterisk 版本的过程类似于安装一个 Asterisk过程。 注意,我们这里讨论的“更新”的意思是更新Asterisk 到一个新的版本 (例如,从 Asterisk 1.4.22 更新到 1.4.24). 不是对主流版本进行更新 (例如从 1.4 到 1.6). 有时候可能需要对Asterisk 主流版本进行更新,但是更新Asterisk 主流版 本(主流版本通常会对停止支持一些 功能),需要系统管理员仔细研究,确保更新 以后的所有功能能够正常运行。 升级版本相当简单, Digium 使用文件名加前缀 "-current" 来代表当前的 Asterisk ,Asterisk-Addons, Zaptel/DAHDI, 和 LibPRI. 以下的例子是使用 Asterisk 1.4 版本,更新到Asterisk 1.4 的最新版本,如果你的PBX 版本不是 1.4 版本,你可以替换到你的Asterisk 版本. 升级Asterisk 版本,需要执行命 令,进入到 /usr/src 目 录 : cd /usr/src [ 213 ] Security and Access Control 下一步,对以前安装的Asterisk 压缩包做一个备份,以防升级以后系统不能正常工作。 创建备份文件文件夹 mkdir asterisk-backup 拷贝目前使用的Asterisk以及相关的 源代码到此文件夹: rm -rf asterisk-backup/*.tar.gz mv asterisk-1.4*.tar.gz asterisk-backup/ mv asterisk-addons-1.4*.tar.gz asterisk-backup/ mv dahdi-linux-complete-*.tar.gz asterisk-backup/ mv libpri-1.4*.tar.gz asterisk-backup/ 删除当前Asterisk 以及相关支持包的版本源代码(如果存在): rm -rf asterisk-1.4* rm -rf asterisk-addons-1.4* rm -rf dahdi-linux-complete-* rm -rf libpri-1.4* 下载当前的Asterisk 和其他软件包源代码: Asterisk, Asterisk- Addons, DAHDI, and LibPRI: wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-1.4- current.tar.gz wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk- addons-1.4-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/ dahdi-linux-complete-current.tar.gz wget http://downloads.asterisk.org/pub/telephony/libpri/libpri-1.4- current.tar.gz 解压每个压缩包: tar zxf asterisk-1.4-current.tar.gz tar zxf asterisk-addons-1.4-current.tar.gz tar zxf dahdi-linux-complete-current.tar.gz tar zxf libpri-1.4-current.tar.gz [ 214 ] Chapter 11 依次编译下载的软件包: cd libpri-1.4* make; make install cd ../dahdi-linux-complete-* make; make install cd ../asterisk-1.4* ./configure; make; make install cd ../asterisk-addons-1.4* ./configure; make; make install Finally, restart Asterisk: amportal restart 如果升级Asterisk以后,Asterisk 启动失败,请检查Asterisk 日志来解决问题: tail /var/log/asterisk/full MySQL 安全设置 MySQL数据库对FreePBX提供数据存储. 但是,很多发布版本对安全设置的处理相当 简单。通过以下建议修改以后,MySQL 必须重新启动,获得最新的安全策略。 MySQL 密码 通常,安全方面最大的问题是经常在数据库帐号中暴露登录密码。以下的例子中, FreePBX 在MySQL 数据库的用户名称是 "asterisk". 通过以下命令, 设置root 帐号密码: mysqladmin -u root password NEWROOTPASSWORD (使用新的root 密码替换 NEWROOTPASSWORD). [ 215 ] Security and Access Control 修改 用户 asterisk 在 MySQL 数据库的密码: mysqladmin -u asterisk password NEWASTERISKPASSWORD (使用新密码替换 NEWASTERISKPASSWORD). 注意,这里的密码修改以后,同时也 要更新 /etc/amportal.conf 文 件 中 的 AMPDBPASS=. 删除历史记录 所有 MySQL 命令的结果都保存在 用户目录下的 .mysql_history 文 件 中 。这 个 文件 保 存 了 命 令,包 括 了 使 用 过 的 密 码 。 执 行 MySQL 命 令清除 历史记录: cat /dev/null > ~/.mysql_history 无论数据库管理员使用了任何数据库命令,切记,运行命令清除历史记录。 关闭远程访问 MySQL 通常FreePBX web 服务器和 MySQL 服务器运行在同一个平台上。可以关闭MySQL 服务器端来保证系统的安全. 首先,打开/etc/mysql/my.cnf 文 件 , 修 改 : nano /etc/mysql/my.cnf 找到 [mysqld], 在文件最下面添加一行 bind-address = 127.0.0.1。必须重新启动 MySQL 确保配置生效. 远程访问和关闭服务 为了方便管理员维护系统,通常需要打开远程访问的服务,但是这又是系统安全的最 大隐患。最好的办法是尽可能关闭所有对通过外部可以访问服务器的途径。 [ 216 ] Chapter 11 修改端口号 修改端口号是比较好的办法来抵挡一些黑客的攻击。这仅仅是一个提供安全防范的简 单措施,并且带有侥幸心理。可能这种方法不能提供足够的保护,但是提供了一个比 较好的基本防范措施。 通过以下命令 修改 SSD 服务端监听的端口 (例如,修改到端口 38000; 你可以根 据自己的要求,修改到你自己喜欢的端口): sed -i "s/Port 22/Port 38000/" /etc/ssh/sshd_config /etc/init.d/ssh restart 修改 Apache 监听的端口,执行以下命令(例如,修改到 38040 ; 当然你可以修改到 你自己喜欢的端口): sed -i "s/Listen 80/Listen 38040/" /etc/apache2/ports.conf /etc/init.d/apache2 restart 修改 VoIP 端口 同样也可以修改 SIP 或者 IAX2 端口,Asterisk 监听修改的新端口,但是 不建议这样做。因为VOIP 终端设备同样需要修改端口来保持正常的通 信。通常修改VOIP 端口,可能带来更多的问题,不值得去那样做。 使用 iptables 限制访问 很多Linux 发行版本提供了对 iptables 防火墙的支持,它也是最好的安全保护方法。 Iptable 防火墙是一个非常复杂的软件,如何设置Iptable 超出了本书的讨论范围。但 是如果你配置了Iptable,必须确认这些端口是开启的: • SSH (TCP port 22) • Web/HTTP (TCP port 80) • IAX2 (UDP port 4569) • SIP Control (UDP port 5060) • SIP RTP Stream (UDP ports 10000 through 20000) [ 217 ] Security and Access Control 注意,如果默认的服务端口提示告警,iptable 需要打开这些端口。 比较好的方法是限定一些IP地址来访问SSH 端口和Web 服务器端口。如果可能, iptable 可以指定某些特定的IP 地址访问SSH 和web 端口,不允许其他的IP地址访 问。 VPN 或者 SSH 隧道 没有最安全的远程访问的方法。如果PBX 部署的环境已经支持了VPN解决方案,那么最 安全的方法是通过VPN 隧道访问FreePBX 界面。Iptable 设置一个内网地址段允许管 理员端口访问FreePBX。 其他地址段不能访问FreePBX。 如果没有VPN 解决方案,仍然可以通过SSH 隧道来访问 FreePBX。 Linux 环境下的 SSH 隧道 在Linux 环境下,通过以下命令生成一个 SSH 隧道: sudo ssh -L 80::80 @ 将要连接的服务器内网IP 地址. 用户名。 外部IP 地址,例如,如果PBX 内网IP是 1.1.1.1, 外网IP是 2.2.2.2, 用户 名是 "james.zhu", 则执行以下命令: sudo ssh -L 80:1.1.1.1:80 james.zhu@2.2.2.2 [ 218 ] Chapter 11 命令本地映射80 端口到目标机的80 端口。一旦建立了SSH 会话,使用浏览 器,输入地址 http://localhost:80 ,就 可 以 访 问 FreePBX 界面. Windows 环境下的 SSH 隧道 在Windows 环境下,可以通过PuTTY 建立一个SSH 隧道。PuTTY 可以从网站 http://www.chiark. greenend.org.uk/~sgtatham/putty/ 下载。 在 Host Name (or IP address) 输入外网IP 地址: [ 219 ] Security and Access Control 展开菜单,点击 Tunnels: 在 Source port 输入 80. 在 Destination 输入PBX 内网IP 地址和端口号(例如 1.1.1.1 和 Apache 端口 80). [ 220 ] Chapter 11 其他为默认设置,点击 Add: 点击 Open ,打开SSH 隧道. 一旦签权认证通过,用户可以通过浏览器 访问 http://localhost:80: [ 221 ] Security and Access Control FreePBX 的管理员帐号 FreePBX 引用了管理员权限,通过不同的权限来管理FreePBX。管理员权限可以限制访 问指定的部门,指定的分机,指定的分机号码段,或者一些指定的功能模块。每个管 理员可以给独立的帐号,如果公司员工工作发生改变,可以删除此员工的帐号,此员 工将不能访问系统。 启用管理员帐号认证 默认环境下,管理员模块是没有开启的。启用管理员模块,在Basic 菜单下,点击 Administrators: 如果此模块目前是关闭的,系统将出现提示信息,如下截图: 解决此问题,需要SSH 登录PBX,执行以下命令: sudo sed -i "s/AUTHTYPE=none/AUTHTYPE=database/" /etc/amportal.conf sudo /usr/src/AMP/apply_conf.sh 命令执行以后,FreePBX 提示登录信息。在创建管理员帐号之前,FreePBX 的数据库 用户名和密码仅用来登录PBX,这些安全设置在安装FreePBX 时创建。如果你不确认 登录信息,请检查 /etc/amportal.conf 文件. AMPDBUSER= 和 AMPDBPASS= 是 必 要 的 登录 用 户 名 和 密 码 。. [ 222 ] Chapter 11 管理管理员帐号和权限 一旦启用管理员模块,点击Basic 菜单下的 Administrators: Add Administrator 页面: [ 223 ] Security and Access Control 在 Username 输入用户名。 在Password 输入密码。注意一些字符可能导致登录问题(例如感叹号)。最好是字母 和数字的结合。用户名必须有相应的密码。 Department Name 是一个非常棒的功能,可惜,写本书的时候此功能还不能工作。 此设置的目的是允许一些用户可以访问一个指定的部门。当管理员模块启用以后, 一些呼叫目的地(IVRs 或者 System Recordings)将支持一个额外的选项,允许 指定的部门访问。设置部门名称后,管理员可以访问本部门的呼叫目的地模块而无 权限访问同一模块的其他应用。例如,如果设置了一个销售部的管理员,他可以访 问设置销售部的IVR模块,但是无权限对其他部门的IVR进行设置。如果此项为空, 管理员将获得对所有部门的模块的访问权限。目前这一功能还不能正常工作,设置 此项不会影响其他功能。 Extension Range 支持 管理员限制分机号码段。对一些部门分机设置非常有用 (例 如, 如果销售部号码段为 从 250 到 299, 可以确保管理员可以访问这些号码)。如 果为空,则管理员可以访问所有的号码。 Admin Access 用来限制管理员访问某些特定的模块。Ctrl + Click 选择特定的模 块。 选择所有管理员需要访问的模块。注意 Apply Changes Bar 是一个独立的模 块,管理员可以修改配置。 完成选择以后,点击 Submit Changes ,然后点击 Apply Configuration Changes 工具条,激活新的管理员帐号。 [ 224 ] Chapter 11 页面将显示管理员名称,可以点击编辑用户信息: 总结 现在,我们基本掌握了FreePBX, 对FreePBX 有了更新的理解。我们的PBX 在稳定 性,功能设置,安全方面完全可以和一些闭源的PBX 解决方案竞争。我们已经完全锁 定了一些安全隐患,同时允许一些特殊用户提供外网方法PBX. 每个管理员具有一定的 权限和功能限制,允许管理员访问修改自己的应用模块。 [ 225 ] 附录 A FreePBX 模块 FreePBX 支持多达 50 可选模块,都可以通过在线安装的形式安装最新模块。以下是模 块名称和功能列表: 基本模块 模块 功能 Built-in/Core 提供基本的呼叫功能和内置的模块,包括呼入路由,呼出路 由,设备,用户,分机和一般设置。这些模块不能删除,安装 时FreePBX 首先安装这些模块。 Feature Code Admin 功能码管理提供启用或者关闭某些功能,用户通过拨打一些特定 的号码激活功能或者关闭功能。 FreePBX ARI Framework 提供一个界面管理工具来管理Asterisk 录音文件和语音邮箱留 言。 FreePBX FOP Framework 通过FreePBX 界面管理工具可以实时管理激活通话。 FreePBX Framework 核心FreePBX 架构,可以添加其他的插件。此架构关联了管理 员模块和呼叫统计模块页面。. FreePBX Localization Updates 提供本地化安装和语言页面支持. FreePBX Modules 模块 功能 System Dashboard 系统页面提供系统运行的一些基本数据,包括: • FreePBX Notices ° Notices when new modules are available for update ° Warnings when routes point to non-existent call targets ° Warnings when trunks or extensions have weak passwords ° Warnings when default MySQL or FreePBX passwords are in use ° Errors encountered by cron that are relevant to FreePBX (such as when a statistics gathering task fails) • FreePBX Statistics ° Total active calls ° Active internal calls (extension to extension) ° External calls (calls that are using an external trunk) ° Total active channels (how many people are actually speaking on the phone) ° IP phones online ° IP trunks online ° IP trunk registrations • Uptime ° System (operating system) uptime ° Asterisk uptime ° Last time Asterisk was reloaded • System Statistics ° Processor load average ° Processor current percent usage ° Physical memory in use ° Swap space in use ° Usage of all of the disk mount points ° Current send and receive statistics for all of the network interfaces Voicemail 通过配置语音邮箱和分机的功能,无此模块,语音邮箱不能工作。. [ 228 ] Appendix A CID 和号码管理 模块 功能 Phonebook Directory 提供电话簿查找功能,通过输入用户姓名可以查找出相应的号 码。. Speed Dial Functions 配合电话簿功能使用,系统可以设置一个快速拨号方案, Asterisk 将通过人名匹配拨打的号码。 呼入控制 模块 功能 Announcements 对呼入方播放一个定制的语音文件,然后转接到其他呼叫目标。 Blacklist 提供黑名单过滤功能。如果呼入的号码在黑名单中,此呼入将被禁 止或者对用户播放此用户已取消服务。 Caller ID Lookup 提供对来电显示名称的查询,支持以下源查询方式: • Internal (uses the Phonebook module to lookup names) • ENUM (uses ENUM DNS zones) • HTTP (uses an HTTP GET request against a hosted caller ID service) • MySQL (queries a MySQL database) 呼叫将通过匹配来查找呼叫方姓名,此姓名将在终端显示。 [ 229 ] FreePBX Modules 模块 功能 Day Night Mode 提供P B X 昼夜呼叫路由模式。根据时间系统自动调整到一 个不同的路由。 Follow Me 提供分机随行功能,如果用户分机没有接听,系统将 自动转接到指定的手机号码或者其他外线号码。 IVR 提供数字接线员功能,呼入方根据系统播放的IVR 语音,输入相应 的数字按键,进入到需要接通的呼叫目的地。 Queue Priorities 提供一个呼叫队列优先级的功能。如果呼叫方设置为高优 先 级 , 系统队列将优先一定此用户通话,减少用户等待 时 间 。 Queues 提供队列设置功能。呼叫方呼入以后将被转入到一个呼叫等待队 列,等候座席应答呼叫。 Ring Groups 提供对组内成员进行电话振铃的功能。 Time Conditions 提供一个路由策略,系统根据时间设定的不同,呼叫会转 接到不同的路由规则,或者呼叫目的地。 内部选项或者配置 模块 功能 Call Forward 支持用户通过拨打功能码热键进行前转。 Call Waiting 支持用户通过功能热键激活呼叫等待。 Callback 系统提供自动回拨功能。 [ 230 ] Appendix A Module Function Conferences 支持会议室功能。会议室可以设置密码保护。 DISA 提 供 外 部 直 接 访 问 功 能 . 用户呼入系统以后,通过二次拨号呼出。 Dictation 支持拨打分机录音,邮件发送到用户邮箱。 Do-Not-Disturb (DND) 支持用户通过功能热键激活免打扰功能。 Info Services 提 供 服 务 查 询 , 包 括 : • Company directory • Call trace • Echo test • Speaking clock • Name current extension Languages 支持用户同一语言呼叫设置。 Misc Applications 支持管理员设置不同的功能码路由呼叫方的呼叫到指定的 目的地。 Misc Destinations 允许管理员设置呼叫目的地来拨打本地分机。 Music on Hold 支持自定义音乐等待语音文件上传。如果用户处于音乐等待, 系统将播放此语音文件。 PIN Sets 支持对呼出路由或者会议进行密码保护。 Paging and Intercom 支持对讲功能。 [ 231 ] FreePBX Modules Module Function Parking Lot 电话驻留。 Recordings 支持录音,上传,录音文件合并功能。 Voicemail Blasting 语音邮箱广播。通过拨打指定的号码,对组内每个分机的语 音邮箱发送自定义的语音文件。 支持 Module Function Asterisk Logfiles 允许管理员通过界面访问Asterisk 系统日志记录。 Online Support 通过 Internet Relay Chat (IRC) 获得支持。 系统管理 模块 功能 Asterisk API 创建访问 AMI 接口用户(AMI). Asterisk CLI 通过界面执行 Asterisk CLI 命令,结果显示在界面。 [ 232 ] Appendix A 模块 功能 Asterisk Info Provides the following information from Asterisk: • Summary ° Active SIP and IAX2 channels ° Number of SIP and IAX2 registrations ° Number of online and offline SIP and IAX2 peers • Registries ° Active SIP and IAX2 registrations (including registration host, username, refresh interval, and registration state) • Channels ° ° • Peers ° • SIP Info ° Active channel summary Active number of SIP and IAX2 channels Shows all of the defined SIP and IAX2 extensions/peers Specific SIP registry and peer information • IAX Info ° Specific IAX2 registry and peer information • Conferences ° Shows details on conferences that are currently active • Subscriptions ° Shows registered dialplan hints • Voicemail users ° Shows a list of users that have a voicemail box and the number of waiting messages for those users • Full report ° Shows a full listing of all of the information contained within the other information sections [ 233 ] FreePBX Modules 模块 功能 Backup & Restore 对系统备份还原. Custom Applications 自定义应用模块和用户分机,写入 extensions_custom.conf 文 件 。 DUNDi Lookup Registry 支持对Distributed Universal Number Discovery (DUNDi) 查 找。 Java SSH 提供对嵌入式的 Java-based SSH 客户端登录服务器。 PHP Info 打印系统PHP信息。 PHPAGI Config 通过F r e e P B X 界面配置AGI 接口。 Phonebook Directory 提供电话簿查找,显示来电显示名称。 Weak Password Detection 对用户帐号提供密码保护提示。 [ 234 ] Appendix A 第三方模块 模块 功能 Customer DB 如果单FreePBX 系统支持多个公司的PBX,或者PBX托管服务, 自定义的 Customer DB 模块提供公司对中继或者SIP终端实现跟 踪检测。此模块仅实现跟踪功能,不影响配置和呼叫路由。 Gabcast 提供和第三方 podcasting 服务商— Gabcast集成。 Inventory 提供对员工MAC 地址或者IP地址管理。 Print Extensions 打印配置的分机,队列,会议,功能码。 [ 235 ] 附录 B 功能热键 如果安装了所有的FreePBX 模块,FreePBX将支持 45 个功能热键。通过拨打指定的功 能热键可以激活某个功能或者运行其他的应用程序。通过 Feature Code Admin 页面 可以自定义功能热键。具体的描述和使用方法如下: 黑名单 功能热键 默认 Default 执行 Blacklist a number *30 提示用户输入需要加入黑名单的电话号码。此号码呼入 以后,系统将不在对分机振铃,或者对呼入方播放不在 服务区的语音。 Blacklist the last caller *32 把最近呼叫此分机的号码列入黑名单。 Remove a number from the blacklist *31 提示用户输入电话号码,并且把此号码从黑名单删 除。 Feature Codes 呼叫前转 功能热键 默认 Default 执行 Call Forward All Activate *72 启用呼叫前转。 Call Forward All Deactivate *73 关闭呼叫前转。. Call Forward All Prompting Deactivate *74 提示用户输入分机号码,需要将改变此号码的呼叫前转功 能。 Call Forward Busy Activate *90 启用呼叫前转忙。 Call Forward Busy Deactivate *91 关闭呼叫前转忙。 Call Forward Busy Prompting Deactivate *92 关闭呼叫前转忙提示。 Call Forward No Answer/Unavailable Activate *52 启用呼叫前转无应答。 Call Forward No Answer/Unavailable Deactivate *53 关闭呼叫前转无应答。 [ 238 ] Appendix B 呼叫等待 功能热键 默认 Default 执行 Call Waiting Activate *70 启用呼叫等待。 Call Waiting Deactivate *71 关闭呼叫等待。 核心 功能热键 默认 执行 Asterisk General Call Pickup *8 电话抢接。 ChanSpy 555 监听通话。用户可以拨打 *循环监听活动的通道。 Dial System FAX 666 拨打自定义的默认传真分机号码。 Directed Call Pickup **(ext) 电话代接。如果分机5001 振铃,其他分机可以拨打 **5001 代接. [ 239 ] Feature Codes 功能热键 默认 执行 In-Call Asterisk Attended Transfer In-Call Asterisk Blind Transfer In-Call Asterisk Disconnect Code In-Call Asterisk Toggle Call Recording Simulate Incoming Call *2 询转通话。当呼入方呼入以后,接听方拨打需要转接 的第三方,如果第三方可以接听,则执行转接。 ## 盲转通话。呼入方通话直接经过接听方转接到第三 方。 ** 用户可以拨打此功能热键挂断通话。 *1 在通话过程中,用户可以拨打此功能热键对通话进行 录音。另外,必须在Recording Options 启用On Demand 设置。录音文件默认保存在 /var/spool/asterisk/monitor 文件夹。 7777 模拟一个呼入通话. 此通话将匹配呼入路由设置。 User Logon *11 如果FreePBX 在 DeviceAndUser模式环境下工作,此 功能热键支持用户通过分机和密码登录终端。登录以后, 如果有呼叫呼入到此分机,系统将对登录的终端振铃。 [ 240 ] Appendix B 功能热键 默认 Default 执行 User Logoff *12 如果FreePBX 在 DeviceAndUser模式环境下工作,此 功能热键支持用户从此终端设备退出登录。 ZapBarge 888 提示用户对模拟板卡的通道进行监听。因为知识产权的原 因,此功能已经重新命名为DAHDIBarge。 昼夜模式 Feature code Default Action Toggle Day Night Mode *28(num) 提供功能热键激活昼夜模式。拨打*283, 代表激活昼夜模 式(3为昼夜模式的标志符)。 口述录音 Feature code Default Action Perform dictation *34 输入文件名,播放录音文件。 Email completed dictation *35 输入文件名,如果此文件存在,将发送此文件到指定的 邮箱。 [ 241 ] Feature Codes 免打扰 Feature code Default Action DND Activate *78 启用免打扰功能。如果启用免打扰功能,振铃以后无人应 答,将自动转接到语音邮箱。 DND Deactivate *79 关闭免打扰功能。 DND Toggle *76 触发免打扰状态转换。 分机随行 Feature code Default Action Findme Follow Toggle *21 启用分机随行功能。 Info Services Feature code Default Action Call Trace *69 播放最近拨打本机的号码。 Directory # 连接公司目录. 此命令包含所有公司用户的语音邮箱。 [ 242 ] Appendix B Feature code Default Action Echo Test *43 对用户回放用户的通话,用来测试回声。 Speak Your Exten Number *65 播放呼入的分机号码。 Speaking Clock *60 播放当前系统时间。 对讲 Feature code Default Action Intercom prefix *80(ext) 通过功能热键拨打其他分机(呼叫的分机不振铃,自动通 过扬声器应答)。例如呼叫分机 5001, 拨打 *805001. 分 机5001 会自动应答此通话(确认此SIP 分机支持auto- answer)。 User Intercom Allow *54 启用此分机的对讲功能。 User Intercom Disallow *55 关闭此分机的对讲功能。 电话薄目录 Feature code Default Action Phonebook dial-by- name directory 411 电话薄查找,配合FreePBX电话薄模块使用。通过输入用 户名此查找匹配的用户号码,按 1呼叫此号码。 Appendix B Feature Codes 录音 功能热键 默认 执行 Save Recording *77 播放录音提示以后,对用户所将内容进行录音,并保存在 临时文件目录。配合FreePBX 录音模块使用。 Check Recording *99 对最近的录音文件进行播放。. 快速拨号 Feature code Default Action Set user speed dial *75 支持用户在地址中添加快速拨号号码设置。例如,在快速拨 号地址中添加号码 555-555-1234以后,用户可以拨打 *75, 提 示 音 后 , 然 后 输 入 1000# , 提 示 音 后 , 拨 打 5555551234#。 Speeddial prefix *0(num) 快速拨号前缀设置。num 是 快速拨号地址。如果拨打和 地址1000 关联的号码,可以直接拨打 *01000。 [ 244 ] Appendix B 语音邮箱 功能热键 默认 执行 Dial Voicemail *98 支持此功能热键拨打语音邮箱的号码和密码登录语音邮 箱,并且对其语音邮件进行处理。 My Voicemail *97 假设从分机呼叫到已关联的语音邮箱。系统提示用户 输入密码。如果认证成功,用户将被转到语音邮箱中 心。用户可以播放语音留言和对呼出的语音留言录 音。 [ 245 ] 附录 C Voicemail.conf 选项 当在 (Extensions 模式) 或者用户模式下设置FreePBX 时,FreePBX 提供了一个特别 的功能设置。在 Voicemail & Directory 菜单下支持 一个 VM 选项。这个选项支持 很多对语音邮箱的设置参数,此文件保存在/etc/asterisk/voicemail.conf 文 件。这些参数影响语音邮箱的功能和接受处理机制。 选项参数的设置语法为 optionname=value (这里 optionname是参数名称,value 是实际设 置 的 值 ) . 有些参数支持多选项,通过 ( | ) 隔开 (例如, attach=yes|attachfmt=gsm)。 选项 有效值 作用 attach yes, no 是否允许启用支持语音邮箱附件。如果没有设置此 项,Asterisk 使用 默认的值是 "no"。 注意,此选项可以通过FreePBX 界面设置Email Attachment,不要建议使用手动设置,避免导致设 置冲突。 Voicemail.conf Options Option Valid values Purpose attachfmt gsm, wav, wav49 callback (Any valid context) 指定语音邮件的语音文件格式,支持 gsm ,wav, wav49. GSM 文件是 raw GSM , WAV是 16-bit linear WAV, WAV49 是 GSM 编码的 WAV 格式文件. 大部分播放软件都可以播放以上格式的文 件。如果此项未设置,启用默认的 wav 格式。 Asterisk voicemail 应用模块提供通过回拨的方式访 问任何分机号码的语音邮箱。 用户可以通过自定义的context 来访问语音邮箱。 默认环境下,此功能被关闭。 [ 248 ] Appendix C 选项 有效值 作用 delete yes, no 用户是否可以删除语音邮箱信息。如果此选项未设 置,Asterisk 使用默认选项 "no"。 注意,用户可以通过 FreePBX 页面的 Delete Voicemail 设置此选项,不建议通过手动修改来设 置,避免设置冲突。 envelope yes, no 如果设置为"yes", 播放语音邮件时,系统将播放留言 的日期和时间。 forcegreetings yes, no 如果设置为 "yes", 新用户第一次登录语音邮箱时提 示”用户忙”或者”无效用户”. voicemail 模块根据用 户分机和用户语音邮箱密码是否相同判断是否是新用 户。如果未设置此项,系统默认设置为 "no"。 forcename yes, no 如果设置为 "yes", 新用户第一次登陆语音邮箱,需 要强制输入用户姓名。语音邮箱模块通过邮箱邮箱密 码和分机号码是否相同判断是否是新用户。如果此选 项未设置,则使用默认选项 "no"。 hidefromdir yes, no 如果设置为 "yes", 用户将从公司目录隐藏。如果未 设置,系统将使用默认设置 "no" 。 [ 249 ] Voicemail.conf Options 选项 有效值 作用 imapuser/ imappassword (IMAP account credentials) 语音邮箱支持 IMAP 服务器保存。用户可以拨打电话 或者邮件客户端访问存储在 IMAP 服务器端的语音邮 箱信息。修改 文件 /etc/asterisk/ vm_general.inc,添加 imapserver=servername 地址。 maxmsg (whole number) 定义每个语音文件保存的最多语音邮件信息数量。如 果此选项未设置,保存数量无限制。 operator yes, no 如 果 设 置 为 "yes", 呼叫方留言以后,按 0 将返回到 呼入前的呼叫目的地。例如,如果用户被抓接到语音 IVR,然后拨打分机和接收语音留言,用户可以按0 自 己返回到IVR 流程。如果直接来自于用户分机,按0 将返回到指定的用户分机,此分机通过FreePBX General Settings 页面的 Operator Extension 指定。 如果未设置此选项,系统使用默认设置 "no"。 review yes, no 如 果 设 置 为 "yes", 留言用户可以按 (#) 键 回放自 己的语音留言。如果此选项未设置,系统使用默认 值 "no"。 [ 250 ] Appendix C Option Valid values Purpose saycid yes, no 如 果 设 置 为 "yes", 系统会用户播放留言用户的电话 号码。如果此项未设置,系统使用默认值 "no"。 注意,此选项通过 FreePBX 页面的 Play CID 指 定,不建议手动设置,避免和系统设置冲突。 sayduration yes, no 如 果 设 置 为 "yes",系统对用户首先播放语音留言长度。 如果未设置,系统使用默认设置 "no"。 saydurationm (Minimum time, in whole number of minutes) 此选项用来限制语音留言长度功能。如果设置此值, 系统将对语音留言大于此设置的语音进行播放。例 如,如果此值设置为 "2",系统将对大于2 分钟的语音 留言进行播放。只有当 sayduration 设 置 为 "yes" 此功能有效。如果此项未设置,播放所有语音邮箱信 息(无论时间长短)。 sendvoicemail yes, no 如 果 设 置 为 "yes", 用户可以转发语音留言信息(已 经收到的)到其他用户。否则关闭此功能。默认设置 为 "no"。 serveremail (Email address) 此选项设置邮件服务器地址,如果有语音留言,提示 信息将发送到此邮箱。 tempgreetwarn yes, no 如果设置为 "yes" ,并且用户临时问候启用,每次检查语 音邮箱时,系统将对用户提示问候功能开启。 默认设置为 "no"。 [ 251 ] Voicemail.conf Options 选项 有效值 作用 tz (Valid timezone) volgain (Positive or negative numbers, rounded to one decimal place) 指定用户时区。系统播放留言时间时需要根据用户本地时 区时区设置,而不是服务器时间)。此值必须是一个有效 的时间格式,检查 /usr/share/zoneinfo 文 件 夹 定 义 不 同 的 时 区 值 。 系 统 默 认 时 将 使 用 F r e e P B X 值 。 定义留言信息的声音增益。一般留言声音比较低, 建议设置为 1.5。如果留言声音太高,此值应该小一 点,可以调整为 -2.1。 系统默认设置为 "0" , asterisk 没有支持对语音留言增益的调整。 [ 252 ] 附录 D 一般中继配置 以下列出了一般中继配置的选项。用户可以根据运营商提供的中继线路选项做相应的 通话即可: 标志符 替换值 (Name) 中继名称,支持字母,数字或者空格。 (TelNumber) 绑定的中继电话号码。模拟线路和VOIP线路的号码可能有所不同,需要 和运营商核实。. (Username) 运营商提供的中继用户名帐号。 (Password) 运营商提供的帐号密码。 (MaxChannels) 支持的最多并发通话通道数量。一些运营商限制了通道数量,根据购买的 服务来设置此项。 (FailureScript) 此脚本支持检测中继状态,如果中继线路状态异常,可以通过此脚本程 序让状态路由做相应的调整,参考 第四章的 Monitoring trunk status with FreePBX failure scripts 部分。 (VoIPHost) 运营商提供的SIP 或者 IAX VOIP 主机地址. 可以作为一个 "registration server" 或者是 "host"。 www.hiastar.com
还剩261页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享pdf获得金币 ] 12 人已下载

下载pdf

pdf贡献者

luanshp

贡献于2016-11-27

下载需要 10 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf