Freeswitch 语音信箱在 Alpine Linux 上
概述
本页介绍了如何安装基于 Freeswitch 的基本语音信箱服务器,包括基于 ACF 的 Web 界面。它在 Alpine Linux 2.7、3.0、3.1 和未来的 3.2 上构建和测试。
设置步骤
1. 配置机器
安装和配置带有 ACF Web 界面的基本 Alpine Linux 服务器。
setup-alpine setup-acf
2. 安装 Freeswitch
apk add freeswitch freeswitch-sounds-en-us-callie-8000 freeswitch-flite acf-freeswitch acf-freeswitch-vmail
3. 配置 Freeswitch
为了本文档的目的,我们将使用 Freeswitch 示例配置。不建议在生产环境中使用此配置,但它可以让我们快速启动并运行语音信箱。我们将使用 apk 获取文件,而不是安装软件包。
apk fetch --quiet --stdout freeswitch-sample-config | tar -C / -zvx
修改默认密码以避免警告和延迟(显然,如果您愿意,可以选择 12345 以外的其他密码)
sed -i s/"default_password=1234"/"default_password=12345"/ /etc/freeswitch/vars.xml
使用 Freeswitch XML curl 调用 ACF 以确定语音信箱帐户。为此,编辑 /etc/freeswitch/autoload_configs/xml_curl.conf.xml 并添加以下绑定
<binding name="voicemaildialplan"> <param name="gateway-url" value="https://127.0.0.1/cgi-bin/acf/freeswitch-vmail/vmail/processdialplanxml" bindings="dialplan"/> </binding> <binding name="voicemaildirectory"> <param name="gateway-url" value="https://127.0.0.1/cgi-bin/acf/freeswitch-vmail/vmail/processdirectoryxml" bindings="directory"/> </binding>
并修改 /etc/freeswitch/autoload_configs/modules.conf.xml 以加载 mod_xml_curl 模块
<load module="mod_xml_curl"/>
修复 /etc/freeswitch/autoload_configs/voicemail.conf.xml 中的语音信箱存储目录,使其指向 /var/lib/freeswitch/voicemail
<param name="storage-dir" value="/var/lib/freeswitch/voicemail"/>
通过添加以下行在 /etc/freeswitch/vars.xml 中设置声音目录
<X-PRE-PROCESS cmd="set" data="sounds_dir=/usr/share/freeswitch/sounds"/>
4. 启动 Freeswitch
启动 Freeswitch 并将其添加到默认运行级别。
rc-update add freeswitch rc-service freeswitch start
现在您应该能够通过将 SIP 用户代理注册到 Freeswitch 默认本地分机之一(用户=1000-1019,密码=12345,如上所述)并将 SIP 呼叫定向到 1000 到 1019 之间的任何其他分机或分机 4000 来拨入 Freeswitch 语音信箱。对于每个语音信箱帐户,默认密码与分机号相同。有关此的更多详细信息,请参阅 Freeswitch 文档。请记住,这些分机和语音信箱是示例配置的一部分,不由 ACF 管理。我们将在下面添加 ACF 管理的语音信箱帐户。
5. 配置 acf-freeswitch-vmail
将语音信箱身份验证器添加到 ACF 配置。这将允许语音信箱用户登录 ACF 以检查他们的语音信箱。
echo "authenticator = authenticator-freeswitch-vmail,authenticator-plaintext" >> /etc/acf/acf.conf
更改 ACF 语音信箱域以匹配示例配置中的域。您应该使用语音信箱服务器的 IP 地址,因为这是示例配置使用的地址。
sed -i /^domain=/d /etc/freeswitchvmail.conf echo "domain=IPADDRESS" >> /etc/freeswitchvmail.conf
ACF Web 界面
您现在可以浏览到 https://IPADDRESS 以访问 Web 界面。要登录进行管理,请使用 root 用户和系统 root 密码(这是 setup-acf 设置的默认配置)。
用户
语音信箱 | 用户 选项卡将显示通过 ACF Web 界面管理的所有语音信箱用户。开始时,这将是空的。当您在 ACF 中创建用户时,它将修改 Freeswitch 拨号方案和目录(使用 xml_curl)以允许这些用户接收和检索语音信箱。它还将允许这些用户登录 ACF 界面以检查他们的语音信箱并修改语音信箱设置。此处定义的密码将控制 ACF 和 IVR 访问。
语音信箱
语音信箱 | 语音信箱 选项卡将允许您查看、收听、下载、转发和删除语音信箱消息。
配置
语音信箱 | 配置 选项卡允许管理员修改 acf-freeswitch-vmail 配置。
设置
语音信箱 | 设置 选项卡允许语音信箱用户修改其设置。
演示
我们现在准备好使用 ACF 创建语音信箱帐户。Freeswitch 示例配置创建了一个相当完整的拨号方案,我们不想破坏它的任何功能,因此我们将演示 2100 - 2199 范围内的帐户,该范围未使用。再次强调,要拨入 Freeswitch,您可以使用上述 Freeswitch 默认本地分机之一。
- 拨打分机 2100 以验证在呼叫不受支持的分机时会发生什么
- 以 root 身份登录 ACF,创建一个分机号为 2100 和某个密码的语音信箱用户
- 再次拨打分机 2100 以验证您现在可以为分机 2100 留言
- 拨打分机 4000 并以用户 2100 和您上面定义的密码登录以收听消息
- 以 root 身份注销 ACF,然后以用户 2100 和您上面定义的密码再次登录以查看您的消息
其他功能
从 wav 切换到 mp3 录音(推荐)
默认情况下,Freeswitch 将以 wav 格式存储语音信箱录音。如果安装了 mod_shout,Freeswitch 还可以选择以 mp3 格式存储录音。由于 mp3 格式需要更少的存储空间/带宽,并且受到 Web 浏览器的更好支持,因此我建议进行此更改
1. 添加 mod_shout 模块
修改 /etc/freeswitch/autoload_configs/modules.conf.xml 以加载 mod_shout 模块
<load module="mod_shout"/>
2. 将录音格式更改为 mp3
sed -i s/'name="file-extension" value="wav"'/'name="file-extension" value="mp3"'/ /etc/freeswitch/autoload_configs/voicemail.conf.xml
3. 重启 Freeswitch
rc-service freeswitch restart
使用 PostgreSQL
Freeswitch-1.2.5 和 acf-freeswitch-vmail-0.5.0 完全支持 Postgresql 作为语音信箱数据库。这些版本在 Alpine Linux 3.2 及更高版本中可用。要配置它
1. 安装 Postgresql
apk add postgresql acf-postgresql
2. 设置和启动 Postgresql
rc-update add postgresql rc-service postgresql setup rc-service postgresql start
3. 创建数据库
psql -U postgres -c "CREATE DATABASE voicemail"
4. 停止 Freeswitch
rc-service freeswitch stop
5. 配置 Freeswitch 和 acf-freeswitch-vmail
编辑 /etc/freeswitch/autoload_configs/voicemail.conf.xml 以将 odbc-dsn 参数设置为 "pgsql://hostaddr=127.0.0.1 dbname=voicemail user=postgres password= options="
<param name="odbc-dsn" value="pgsql://hostaddr=127.0.0.1 dbname=voicemail user=postgres password= options=" />
编辑 /etc/freeswitchvmail.conf 并将 dsn 参数设置为 "pgsql://hostaddr=127.0.0.1 dbname=voicemail user=postgres password= options="
dsn=pgsql://hostaddr=127.0.0.1 dbname=voicemail user=postgres password= options=
6. 重启 Freeswitch
rc-service freeswitch start