我在freepbx中看到了很多模块,并试图理解它们是如何工作的,但没有成功。
我无法理解他们如何拨打电话以及何时拨打电话,以便他们打电话并工作吗
例如,假设我编写了在进行调用时打印"CALL IS MADE"的模块我有安装.php和卸载.php和模块.xml和function.inc.php以及所有需要的文件我在 Function.inc 中有下一个代码.php
function callmade(){agi->Verbose("Call is Made");}
现在我知道我可以在 extension_freepbx.conf(而不是在 extension.conf)中手动创建拨号计划来调用我的 php,但如何使 freepbx 自动执行此操作(像所有模块一样)
对不起我的英语给帮手的感谢
对install.php
或functions.inc.php
的引用已经过时了,这不再是现代 FreePBX 模块的构建方式。所有工作都在 FreePBXmodules
命名空间中的类中完成。所以在你的模块目录中,你将有这个类文件:
我的模块.class.php
<?php
namespace FreePBXmodules;
class Mymodule extends FreePBXFreePBX_Helpers implements FreePBXBMO
{
public function install()
{
// here is the install stuff
}
public function uninstall()
{
// here is the uninstall stuff
}
public function myDialplanHooks()
{
// signal our intent to hook into the dialplan
return true;
}
public function doDialplanHook(&$ext, $engine, $pri)
{
// this is run when the PBX is reloaded
$context = "from-internal";
$extension = "s";
$ext->splice($context, $exten, "n", new ext_log(1, "Call is made"));
}
}
现在,我不知道这是否有效。我对 FreePBX 模块非常熟悉,但通常不会挂接到拨号计划。但它会让你知道从哪里开始。看看 FreePBX 提供的模块,并深入研究代码。请记住,许多模块仍在使用上面提到的遗留文件,但它们已被弃用,并将在未来的版本中删除。
如果没有星号和 freepbx 内部的知识,就无法为 freepbx 编写应用程序。
freepbx wiki 网站上有手册。
你应该明白,freepbx 除了星号的 CREATE 配置之外什么都不做。
关于星号的配置,在大多数模块中,它位于 functions.inc 中.php在 modulename_config 等函数中。
大多数freepbx根本不使用agi。实际上,由于历史原因,只有那些对星号经验不足的人才会使用,并被包含在freepbx中。大多数 agi 都可以通过拨号计划重写,即使代码更少。