ryzhov/pami

PHP Asterisk 管理器接口 (AMI) 客户端,由 marcelog/pami 分支而来

维护者

详细信息

github.com/ryzhov/PAMI

主页

源代码

v1.0 2017-02-11 19:10 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:36:58 UTC


README

这是 https://github.com/marcelog/PAMI 的分支

PAMI 代表 PHP Asterisk 管理器接口。正如其名所示,它只是一组 PHP 类,允许您向 AMI 发送命令或接收事件,使用观察者-监听器模式。

安装

将此库添加到您的 Composer 配置中。在 composer.json 文件中

  "require": {
    "ryzhov/pami": "dev-master"
  }

快速入门

// Make sure you include the composer autoload.
require __DIR__ . '/vendor/autoload.php';

$options = array(
    'host' => '2.3.4.5',
    'scheme' => 'tcp://',
    'port' => 9999,
    'username' => 'asd',
    'secret' => 'asd',
    'connect_timeout' => 10,
    'read_timeout' => 10
);
$client = new \PAMI\Client\Impl\ClientImpl($options);

// Registering a closure
$client->registerEventListener(function ($event) {
});

// Register a specific method of an object for event listening
$client->registerEventListener(array($listener, 'handle'));

// Register an IEventListener:
$client->registerEventListener($listener);

使用谓词

在注册事件监听器时,可以(可选地)使用第二个参数:一个将在调用回调之前评估的闭包。只有当此谓词返回 true 时,才会调用回调

use PAMI\Message\Event\DialEvent;

$client->registerEventListener(
    array($listener, 'handleDialStart'),
    function ($event) {
        return $event instanceof DialEvent && $event->getSubEvent() == 'Begin';
    })
);

调试、日志记录

您可以(可选地)设置一个兼容 PSR-3 的记录器

$pami->setLogger($logger);

默认情况下,客户端将使用 NullLogger

感谢

  • Marcelo Gornstein marcelog@gmail.com

  • Jason Blank 在调试队列功能和其他一些 ami 不一致性方面提供了帮助。

  • Francesco Usseglio Gaudi,在调试 Originate 动作方面提供了帮助。

  • Matías Barletta,为vgms支持做出了贡献。

  • Eli Hunter,在引入tls兼容性方面提供了帮助。

  • Freddy dafredmail at googlemail,在添加串烧支持方面提供了帮助和测试环境。

  • Joshua Elson 在尝试和调试加载的 asterisk 服务器方面提供了帮助。

  • Jacob Kiers 在引入和测试异步agi功能以及CEL事件支持方面提供了帮助。

  • Richard Baar 注意到从套接字读取时缺少 eof 支持,以及在 JabberEvent 和 JabberAction 中的 ScreenName。

  • Scot Opell 在调试 5.3.9 和 5.3.10 中的 stream_get_line() 方面提供了帮助。

  • Brian (wormling) 在尝试和修复 asyncagi 上的错误方面做出了贡献。

  • Henning Bragge 在处理 newstate 事件和队列方面提供了帮助。

  • mbonneau 为 ParkedCall 和 UnParkedCall 事件做出了贡献。