adrian0350 / php-ami
PHP Asterisk Management Interface for PHP ^5.1.6 ʕ•ᴥ•ʔ
Requires
- php: >=5.1.6
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
资源
- API
- 阿根廷PHP会议2013的完整PAMI演讲。请查看幻灯片备注以获取完整文本 :)
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
除非适用法律要求或书面同意,否则根据本许可分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关本许可具体管理权限和限制的条款,请参阅许可。