如何将应用程序写入 freepbx

how to write application to freepbx

我在 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)中手动创建拨号计划来调用我的 php,但是如何让 freepbx 自动执行它(就像所有模块一样)

抱歉我的英语不好 感谢帮助者

不幸的是,如果不了解星号和 freepbx 内部知识,就无法为 freepbx 编写应用程序。

freepbx wiki 站点上有手册。

你应该明白,freepbx 除了为 asterisk 创建配置外什么都不做。

关于 asterisk 的配置,在大多数模块中它在 functions.inc.php 中,在 modulename_config.

函数中

大多数 freepbx 根本不使用 agi。实际上,agi 仅供那些对 asterisk 经验不足的人使用,并且由于历史原因被包含在 freepbx 中。即使用更少的代码,大多数 agi 都可以通过拨号方案重写。

install.phpfunctions.inc.php 的引用已过时,这不再是现代 FreePBX 模块的构建方式。所有工作都在 FreePBX\modules 命名空间中的 class 中完成。所以在你的模块目录中你会有这个 class 文件:

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 提供的模块,并深入研究代码。请记住,许多模块仍在使用上面提到的遗留文件,但它们已被弃用,并将在未来的版本中删除。