在不久的将来,我将安装一个 Asterisk 盒子来处理我们办公室(Linux 软件开发人员)的所有电话。我试过,基本设置似乎相当简单,复杂的东西也可以实现。
我是否应该考虑使用 GUI,例如 asterisk-gui 或 FreePBX?GUI 似乎想要“按照自己的方式”配置事物,有时它们无法提供我想要的详细程度,但它们确实很容易。
一种选择可能是基本上在 GUI 中设置系统,然后手动编辑配置文件。
有人对这个有经验么?
答案1
您的初步印象是正确的;GUI 喜欢按照自己的方式做事,尝试跳出这个框框有时会很困难。想想 Debian 进行 Apache 配置的方式与标准源发行版的方式 - 一个配置文件与通过包含语句引入的数十甚至数百个配置文件。您还会倾向于在 GUI 发行版中找到多个级别的宏,这可能会使使用它们创建的配置文件不太理想。
如果您随后要编辑他们创建的配置文件,则必须非常小心地在 GUI 允许您进行的配置的相同部分中进行更改 - 否则 GUI 可能无法识别您所做的操作,或者更糟的是,由于您将更改放在了错误的位置,它甚至会用自己的模板覆盖您所做的操作。
如果您只是想使用 GUI 来开始,那么请完全控制可运行的配置,但您可能会为了您自己的理智而减少 GUI 所使用的层。
如果你想要完全的控制(就像我一样),我建议:
- 编写自己的配置文件
- 使用 AEL(Asterisk 扩展语言)作为拨号方案,而不是原始的 extensions.conf 样式。它为您提供了一些可以在 extensions.conf 中模拟的流控制和条件原语,但更容易规划和可视化
- 使用好的文本模板实用程序来简单地生成大型拨号计划块。我使用模板工具包因为我是一个 Perl 爱好者,但有很多可以嵌入到其他语言中或独立运行
- 在开发服务器上安装一个或多个 GUI(或者甚至在 VM 中仅以 SIP/IAX 的形式运行它们),这样当其中一个提供简洁的功能时,你可以快速使用它并查看生成的配置是什么样的
希望这对你有用。
答案2
先说一句:我曾经是 freepbx 的核心开发人员,但是后来转到了另一家公司,不幸的是没有时间再做这件事了。
这真的取决于你的风格。当然,手写的话,你会获得大量的控制权。但是,你还必须考虑你想要实现什么。最终,办公室 PBX 通常需要以某种方式工作,并且你需要提供一堆基础服务。手写的话,你最终会重新发明轮子,编写每个 PBX 都需要的所有小服务和东西。
当您使用 GUI 时,您使用的代码已经编写好了,社区已经共同找出了问题所在,并且知道哪些可行哪些不可行。坦率地说,使用 GUI 执行常见任务(例如设置新扩展)比使用一堆配置文件要快得多——尤其是如果您几个月没做过这件事了——因为 GUI 直观且易于重新上手。
至于自定义,手写无疑可以做任何你想做的事情。但是,freepbx 尤其允许通过插件完成相当多的工作 - 插件或多或少可以修改拨号方案的任何部分。纯 asterisk 拨号方案代码有一层抽象,因此如果你已经了解 asterisk,你将不得不重新学习其中的一些内容,但这并不是很大的飞跃。
当您确实需要偏离库存 PBX 功能时,也没有什么可以阻止您添加自己的自定义应用程序(手写),并且 freepbx 可以轻松地从 GUI 引用这些应用程序,无缝地将它们绑定到本机应用程序上(通过插件或只是自定义操作)。
我最初参与 Freepbx 是因为我正在设置一个办公室 PBX,而且我很懒 — — 手动添加分机,并记得添加适当的挂钩以转到语音信箱,并启用其他功能等,这是重复、无聊且容易出错的(例如,“哎呀,鲍勃的分机转到了戴夫的语音信箱?对不起,打错了!”)。
我不能代表每个 GUI,但我不建议使用 freepbx 生成配置文件,以便以后手动编辑它们:它旨在提高星号和插件代码的效率,而不是人类可读的。(例如,它有时会重复代码块而不是使用宏)。最重要的是,如果您再次通过 freepbx 生成配置,您将丢失对自动生成的文件所做的任何更改。
当然,手动编辑最终会产生更高效的拨号方案,就像用汇编编写程序比用 C++ 编写程序对 CPU 更高效一样。您必须考虑什么更有价值 - 100 美元购买更大的 CPU,还是您花费的大量(可能数百)小时的时间?
几个月过去了,听听您的经历会很有趣。
答案3
几乎您想要做的所有事情都可以通过 FreePBX“系统”来完成(它不仅仅是一个 GUI)。并且,FreePBX 为您设置了很多开箱即用的功能,这对于新的 Asterisk 管理员来说会很困难。
如果 FreePBX 无法通过 Web 界面执行您想要的操作,您还可以使用它来覆盖它创建的配置。
答案4
不,Asterisk 的 GUI 具有误导性。所有 GUI 都倾向于更改 Asterisk 的配置文件,并且它们会传授不良(阅读专有)做法。Digium 在每个主要版本中都会更改 Asterisk 语法,您需要跟上这一变化。在此基础上添加 GUI 自己的配置逻辑是不必要的开销。我理想的 Asterisk GUI 完全不会造成干扰。它只会在端口 5038 上监听管理器事件并报告它们。还会发出命令。Bout 不需要任何内部管道。