marcelog/pagi

Asterisk网关接口(AGI)的PHP客户端,适用于使用调用流程节点创建电话应用

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应用

包含用于轻松测试IVR应用的模拟PAGI客户端。请参阅doc/examples/mock以查看如何使用它的示例。

功能

节点

有关节点的教程,请参阅这篇文章

提供简单的调用流程节点(见doc/examples/node/example.php)。使用节点可以简化您构建和测试IVR应用的方式。节点在PAGI客户端之上提供抽象层,并支持:

  • 混合声音文件、播放数字/日期/时间的提示。
  • 取消和输入结束数字。
  • 输入验证器的回调,可以在验证失败时可选地指定1个或多个要播放的声音文件。
  • 无效和有效输入的回调。
  • 无输入时的可选声音。
  • 最大有效输入尝试次数。
  • 达到最大尝试次数时的可选声音。
  • 每个输入至少/最多/恰好N个数字。
  • 多数字输入中数字之间的超时。
  • 每个输入尝试的超时。
  • 有效输入的重试尝试。
  • 等等!

NodeController将允许您通过根据节点结果注册节点和操作来控制您应用程序的调用流程。因此,您可以在取消或完成输入时从一个节点跳转到另一个节点,挂断通话,执行回调等。示例请参阅doc/examples/nodecontroller/example.php

有关节点控制器的文章可在此处找到

自动拨号

支持呼叫文件。您还可以安排将来进行呼叫。

传真

使用 spandsp(应用程序 SendFax 和 ReceiveFax)支持发送和接收传真。

可用的外观

  • PAGI\Client\CDR:用于访问 CDR 变量。
  • PAGI\Client\ChannelVariables:用于访问通道变量和 Asterisk 环境变量。
  • PAGI\Client\CallerID:用于访问来电 ID 变量。
  • 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

贡献

要贡献

  • 请确保您提交一个 简洁的简短的 pull request。
  • 投入任何需要的单元测试,以适应新的代码或涉及到的更改。
  • 运行 phing 并确保在提交 pull request 之前一切正常(使 phpmd 和 CodeSniffer 满意,还要确保 phpDocumentor 不会发出任何警告,因为我们的所有文档都是自动生成的)。
  • 您的代码必须符合 PSR-2,CodeSniffer 应负责此任务。

许可证

版权所有 2011 Marcelo Gornstein marcelog@gmail.com

根据 Apache License,版本 2.0(“许可证”)许可;除非符合许可证规定或以书面形式达成协议,否则不得使用此文件。您可以在以下位置获取许可证副本:

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

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