adrian0350/php-ami

PHP Asterisk Management Interface for PHP ^5.1.6 ʕ•ᴥ•ʔ

1.0.8 2017-08-29 17:33 UTC

This package is auto-updated.

Last update: 2024-09-25 06:26:36 UTC


README

PHP-AMI代表PHP Asterisk Management Interface。这是Marcelog的PAMI的一个降级版本,适用于PHP ^5.1.6。正如其名称所示,它只是一组PHP类,可以让你向AMI发送命令或接收事件,使用观察者-监听器模式。

背后的想法是,通过SOA或ajax轻松实现操作控制台、监控器等。

nodejs的端口可在以下位置找到:http://marcelog.github.com/Nami。Erlang的端口可在以下位置找到:https://github.com/marcelog/erlami

资源

PHP版本

注意:PHP-AMI需要PHP 5.1.6+。由于在5.3.9中引入的stream_get_line()的bug,PHP版本5.3.9和5.3.10将无法工作。请使用5.3.11+或更高版本,或者使用5.3.8(请参阅README.PHP-5.3.9-and-5.3.10)。

安装

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

  "require": {
    "adrian0350/php-ami": "1.*"
  }

快速入门

对于深入的教程:http://marcelog.github.com/articles/pami_introduction_tutorial_how_to_install.html

require_once dirname(__FILE__) . '/src/Implementation/AMIListener.php';
require_once dirname(__FILE__) . '/src/Implementation/AMIClient.php';

// Configure as required.
$options = array(
	'host'            => '192.168.1.250',
	'username'        => 'root',
	'password'        => 'toor',
	'port'            => 5038,
	'connect_timeout' => 10,
	'read_timeout'    => 100,
	'scheme'          => 'tcp://'
);

$AMIClient   = new AMIClient($options);
$AMIListener = new AMIListener();

// Registering a closure ** NOT AVAILABLE FOR PHP VERSION 5.1.6 **
$AMIClient->registerEventListener(function($event){});

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

// Register an IEventListener:
$AMIClient->registerEventListener($AMIListener);

使用谓词

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

require_once dirname(__FILE__) . '/src/PHPAMI/Message/Event/DialEvent.php';

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

示例

请参阅/index.php以获取一个非常基本的示例。

请注意它使用的是更高版本的PHP

AsterTrace是一个完整的应用程序:https://github.com/marcelog/AsterTrace

此外,你可能还想看看这篇文章:http://marcelog.github.com/articles/php_asterisk_listener_example_using_pami_and_ding.html

三月版软件开发者期刊》中有一篇完整的关于使用PAMI和PAGI编写电话应用程序的文章。

当前支持的事件

随着时间的推移,将添加更多事件。我只能添加我能测试和使用的那些,所以你的贡献可能会产生差异! ;)

未知的(尚未实现)事件将被报告为UnknownEvent,所以你仍然可以捕获它们。如果你捕获了其中之一,请报告它!

  • AgentsComplete
  • AgentConnect
  • Agentlogin
  • Agentlogoff
  • AGIExec
  • Bridge
  • CEL
  • ChannelUpdate
  • ChannelReloadEvent
  • ConfbridgeStart
  • ConfbridgeEnd
  • ConfbridgeJoin
  • ConfbridgeLeave
  • ConfbridgeMute
  • ConfbridgeStart
  • ConfbridgeTalking
  • ConfbridgeUnmute
  • CoreShowChannel
  • CoreShowChannelComplete
  • DAHDIChannel
  • DAHDIShowChannel
  • DAHDIShowChannelsComplete
  • FullyBooted
  • DongleSMSStatus
  • DongleUSSDStatus
  • DongleNewUSSD
  • DongleNewUSSDBase64
  • DongleNewCUSD
  • DongleStatus
  • DongleDeviceEntry
  • DongleShowDevicesComplete
  • DBGetResponse
  • Dial
  • DTMF
  • Extension
  • Hangup
  • Hold
  • JabberEvent
  • 加入
  • 离开
  • 链接
  • 列出Dialplan
  • 伪装
  • 消息等待
  • 通话保持音乐
  • 新账户代码
  • 新主叫方ID
  • 新通道
  • 新分机
  • 新状态
  • 起源响应
  • 停泊呼叫
  • 停泊呼叫完成
  • 对等方条目
  • 对等方列表完成
  • 对等方状态
  • 队列成员
  • 队列成员添加
  • 队列成员移除
  • 队列成员暂停
  • 队列成员状态
  • 队列参数
  • 队列状态完成
  • 队列摘要完成
  • 重新加载
  • 注册完成
  • 注册表
  • 重命名
  • RTCP接收
  • RTCP接收器
  • RTCP发送
  • RTP接收器状态
  • RTP发送器状态
  • 显示Dialplan完成
  • 成功
  • 状态
  • 状态完成
  • 转移
  • 断开链接
  • 取消停泊呼叫
  • 用户事件
  • 变量设置
  • vgsm_me_state
  • vgsm_net_state
  • vgsm_sms_rx
  • 语音邮件用户条目
  • 语音邮件用户条目完成

当前支持的操作

  • 绝对超时
  • AGI
  • 代理商
  • 代理商登出
  • Atxfer (asterisk 1.8?)
  • Bridge
  • 更改监控
  • 命令
  • ConfbridgeMute
  • ConfbridgeUnmute
  • 核心设置
  • 核心显示通道
  • 核心状态
  • DAHDIDialOffHookAction
  • DAHDI挂断
  • DAHDI重启
  • DAHDIShowChannels
  • DAHDIDNDOn
  • DAHDIDNDOff
  • DBGet
  • DBPut
  • DBDel
  • DBDelTree
  • DongleSendSMS
  • DongleSendUSSD
  • DongleSendPDU
  • DongleReload
  • DongleStop
  • DongleStart
  • DongleRestart
  • DongleReset
  • DongleShowDevices
  • 分机状态
  • 创建配置
  • 获取配置
  • 获取配置JSON
  • 获取变量
  • Hangup
  • JabberSend
  • 本地优化
  • 登录
  • 登出
  • 列出类别
  • 列出命令
  • 邮箱计数
  • 邮箱状态
  • Meetme列表
  • Meetme静音
  • Meetme取消静音
  • MixMonitor
  • 模块检查
  • 模块加载(拆分为模块加载、模块卸载和模块重新加载)
  • 监控
  • 起源
  • 停泊呼叫
  • 暂停监控
  • Ping
  • 播放DTMF
  • 队列
  • 队列添加
  • 队列
  • 队列日志
  • 队列暂停
  • 队列惩罚
  • 队列重新加载
  • 队列移除
  • 队列重置
  • 队列规则
  • 队列摘要
  • 队列状态
  • 队列取消暂停
  • 重定向
  • 重新加载
  • 发送文本
  • 设置变量
  • 显示Dialplan
  • Sipnotify
  • Sippeers
  • Sipqualifypeer
  • Sipshowpeer
  • Sipshowregistry
  • 状态
  • 停止MixMonitor
  • 停止监控
  • 取消暂停监控
  • VGSM_SMS_TX
  • 语音邮件用户列表

调试、日志记录

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

$AMIClient->setLogger($logger);

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

贡献

要贡献

  • 确保您提交一个简洁简短的拉取请求。

LICENSE

版权 2016 Marcelo Gornstein marcelog@gmail.com(原始存储库)版权 2017 Adrián Zúñiga jaime.ziga@gmail.com(仅此存储库)

根据Apache License,Version 2.0(“许可”);除非适用法律要求或书面同意,否则不得使用此文件,除非符合本许可。您可以在以下位置获得许可副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则根据本许可分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关本许可具体管理权限和限制的条款,请参阅许可。