我在freepbx中看到很多模块,并尝试了解它们如何工作而没有成功。
我无法理解他们如何挂断电话以及何时打电话让他们打电话并让他们工作
例如,让我说我写的模块打印" CALL IS MADE"打电话的时候 我有install.php和uninstall.php以及module.xml和function.inc.php以及需要的所有文件 我在Function.inc.php中有下一个代码function callmade(){agi->Verbose("Call is Made");}
现在我知道我可以在extension_freepbx.conf(而不是在extension.conf中)手动创建dialplan,它可以调用我的php,但是如何让freepbx自动执行它(就像所有模块一样)
对不起我的英语 帮帮忙
答案 0 :(得分:1)
对install.php
或functions.inc.php
的引用已过时,这不再是现代FreePBX模块的构建方式。所有工作都在FreePBX\modules
命名空间的类中完成。因此,在您的模块目录中,您将拥有此类文件:
<强> Mymodule.class.php 强>
<?php
namespace FreePBX\modules;
class Mymodule extends \FreePBX\FreePBX_Helpers implements \FreePBX\BMO
{
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提供的模块,并深入研究代码。请记住,许多模块仍在使用上面提到的旧文件,但它们已弃用,将在以后的版本中删除。
答案 1 :(得分:0)
在没有星号和freepbx内部知识的情况下,不得不为freepbx编写应用程序。
freepbx wiki网站上有手册。
你应该明白,除了CREATE config for asterisk之外,freepbx什么都不做。
关于星号的配置,在大多数模块中,它位于函数中的functions.inc.php中,如modulename_config。
大多数freepbx根本不使用agi。 Actualy agi仅由对星号经验较少的人使用,并且由于历史原因包含在freepbx中。即使用较少的代码,大多数agi都可以通过dialplan重新编写。