Freeswitch 语音信箱在 Alpine Linux 上

来自 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"/>
注意: 以下项目对于 Alpine Linux 3.2 或更高版本不是必需的。由于 Freeswitch 软件包中的错误默认路径,早期版本需要它们。

修复 /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 默认本地分机之一。

  1. 拨打分机 2100 以验证在呼叫不受支持的分机时会发生什么
  2. 以 root 身份登录 ACF,创建一个分机号为 2100 和某个密码的语音信箱用户
  3. 再次拨打分机 2100 以验证您现在可以为分机 2100 留言
  4. 拨打分机 4000 并以用户 2100 和您上面定义的密码登录以收听消息
  5. 以 root 身份注销 ACF,然后以用户 2100 和您上面定义的密码再次登录以查看您的消息

其他功能

从 wav 切换到 mp3 录音(推荐)

注意: mp3 格式在 acf-freeswitch-vmail-0.6.2 及更高版本中受支持,可在 Alpine Linux 3.2 或更高版本上使用。

默认情况下,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
注意: Freeswitch 并非总是能正确停止。您可能需要运行 'ps ax' 来查找进程并 'kill' 它。运行 'rc-service freeswitch zap' 也可能是必要的。

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