marcelog/pagi

PHP 的 Asterisk Gateway Interface (AGI) 客户端,适用于使用呼叫流程节点制作电话应用

v2.0.0 2016-01-03 21:43 UTC

This package is not auto-updated.

Last update: 2024-09-17 18:01:50 UTC


README

License Latest Stable Version Documentation Status

Build Status Coverage Status Code Climate Issue Count

![点击此处支持:PAGI 并在 pledgie.com 捐赠 !](https://pledgie.com/campaigns/30945.png?skin_name=chrome' border='0')

简介

此框架旨在简化使用 Asterisk 的 AGI 制作 IVR 应用程序,为开发者提供一种很好的抽象级别,来了解 IVR 应该是什么样子。

文档

安装

将此库添加到您的 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。当前任务包括

运行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

除非适用法律要求或经书面同意,否则在许可证下分发的软件按“原样”基础分发,不提供任何明示或暗示的保证或条件。有关许可证具体规定的权限和限制,请参阅许可证。