1

我在 freepbx 中看到了很多模块,并试图了解它们是如何工作的,但没有成功。

我不明白他们如何挂断电话以及何时拨打电话,所以他们打电话并工作

例如,假设我编写了在调用时打印“CALL IS MADE”的模块,并且我有 install.php 和 uninstall.php 和 module.xml 和 function.inc.php 以及所有需要的文件,我有下一个Function.inc.php 中的代码

function callmade(){agi->Verbose("Call is Made");}

现在我知道我可以在调用我的 php 的 extension_freepbx.conf (不在 extension.conf 中)中手动创建拨号计划,但如何让 freepbx 自动执行它(就像所有模块一样)

我很抱歉我的英语thks for helpers

4

2 回答 2

2

引用install.phpfunctions.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 提供的模块,并在代码中挖掘。请记住,许多模块仍在使用上面提到的旧文件,但它们已被弃用,并将在未来的版本中删除。

于 2017-02-02T00:06:50.320 回答
0

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

freepbx wiki 网站上有手册。

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

关于星号的配置,在大多数模块中,它位于函数的functions.inc.php中,如modulename_config。

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

于 2017-02-01T17:14:56.833 回答