marcelog / pagi
PHP 的 Asterisk Gateway Interface (AGI) 客户端,适用于使用呼叫流程节点制作电话应用
Requires
- php: >=5.3.3
- psr/log: >= 1.0.0
Requires (Dev)
- codeclimate/php-test-reporter: dev-master
- evert/phpdoc-md: ~0.1.1
- monolog/monolog: 1.*
- phing/phing: 2.*
- phpdocumentor/phpdocumentor: 2.*
- phpmd/phpmd: 2.*
- phpunit/phpunit: 4.*
- satooshi/php-coveralls: 0.*
- sebastian/phpcpd: *
- squizlabs/php_codesniffer: 2.*
This package is not auto-updated.
Last update: 2024-09-17 18:01:50 UTC
README
简介
此框架旨在简化使用 Asterisk 的 AGI 制作 IVR 应用程序,为开发者提供一种很好的抽象级别,来了解 IVR 应该是什么样子。
文档
- 主站点
- API
- 2013 年阿根廷 PHP 会议的 PAGI/PAMI 完整演讲。请查看幻灯片注释以获取完整文本 :)
- 深入教程
- 这里有一个包含单元测试的示例 IVR 应用程序
- 实用的 PHP 函数式编程入门 《软件开发者杂志》的 3 月版特刊中有一篇关于使用 PAMI 和 PAGI 编写电话应用的完整文章。
安装
将此库添加到您的 Composer 配置中。在 composer.json 中
"require": { "marcelog/pagi": "2.*" }
使用它
首先,请确保您包含了与 composer 一起提供的 自动加载器
require __DIR__ . '/vendor/autoload.php';
快速入门
您可以从 doc/examples/quickstart 开始,这是一个非常基础的示例。您需要在您的拨号计划中包含类似以下内容
[default]
exten => 1,1,AGI(/path/to/PAGI/doc/examples/quickstart/run.sh,a,b,c,d)
exten => 1,n,Hangup
测试 IVR 应用程序
包含了一个模拟的 pagi 客户端,以轻松测试您的 ivr 应用程序。查看 doc/examples/mock 了解如何使用它的示例。
特性
节点
有关节点的教程,请参阅 这篇文章
提供了简单的呼叫流程节点(参见 doc/examples/node/example.php)。使用节点可以让您简化构建和测试 IVR 应用程序的方式。节点是 pagi 客户端的抽象层,并支持
- 提示音混合声音文件、播放数字/数字/日期时间。
- 取消和输入结束数字。
- 输入验证器回调,当验证失败时可以选择播放一个或多个声音文件。
- 无效和有效输入的回调。
- 无输入时的可选声音。
- 最大有效输入尝试次数。
- 达到最大尝试次数时的可选声音。
- 每个输入至少/最多/正好 N 位数字。
- 多于 1 位数字输入之间的超时。
- 每次输入尝试的超时。
- 对有效输入的重试尝试。
- 等等!
NodeController 允许您通过根据节点结果注册节点和操作来控制您应用程序的呼叫流程。因此,您可以在取消或完成输入时从一个节点跳转到另一个节点,挂断电话,执行回调等。有关示例,请参阅 doc/examples/nodecontroller/example.php
有关节点控制器有一篇文章 在这里
自动拨号
支持CallFiles。您还可以安排将来进行通话。
传真
使用spandsp(SendFax和ReceiveFax应用程序)支持发送和接收传真。
可用的外观
- PAGI\Client\CDR:提供访问cdr变量。
- PAGI\Client\ChannelVariables:提供访问通道变量和asterisk环境变量。
- PAGI\Client\CallerID:提供访问来电显示变量。
- PAGI\Client\Result:提供用于封装agi命令结果的包装。
- PAGI\CallSpool\CallFile:通话文件外观。
- PAGI\CallSpool\CallSpool:通话队列外观。
- PAGI\Logger\Asterisk:提供对asterisk日志的访问(请参阅asterisk安装中的logger.conf)。
结果
对于每个操作,都会提供一个结果。某些操作会装饰这个结果以添加功能,如PlayResult、ReadResult等。例如,流文件将返回一个PlayResult,它装饰了一个ReadResult,而ReadResult又装饰了一个Result。
- PAGI\Client\DialResult
- PAGI\Client\ExecResult
- PAGI\Client\ReadResult
- PAGI\Client\PlayResult
- PAGI\Client\FaxResult
调试、记录
您可以设置一个兼容PSR-3的记录器。
$pagi->setLogger($logger);
默认情况下,客户端将使用NullLogger。
开发者
此项目使用phing。当前任务包括
- 测试:运行PHPUnit。
- cs:运行CodeSniffer。
- doc:运行PhpDocumentor。
- md:运行PHPMD。
- 构建:这是默认任务,将运行所有其他任务。
运行phing任务
要运行任务,只需做
vendor/bin/phing build
贡献
要贡献
- 确保您打开一个简洁的和简短的拉取请求。
- 添加任何必要的单元测试以适应新代码或相关的更改。
- 运行
phing
并确保在提交拉取请求之前一切正常(让phpmd和CodeSniffer满意,还要确保phpDocumentor没有抛出任何警告,因为我们的所有文档都是自动生成的)。 - 您的代码必须符合PSR-2,CodeSniffer应该会处理这一点。
授权
版权所有2011 Marcelo Gornstein marcelog@gmail.com
根据Apache License,版本2.0(“许可证”)授权;除非适用法律要求或经书面同意,否则不得使用此文件,除非符合许可证。您可以在以下位置获得许可证的副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或经书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证具体规定的权限和限制,请参阅许可证。