部分代码来源于网络,经过调试后写在此:

/etc/asterisk/phpagi.conf  配置内容:

[phpagi]

debug=true //是否打开debug,一般生产环境关闭

error_handler=true

tempdir=/var/spool/asterisk/tmp/

[asmanager]

server=10.1.0.7

port=5038

username=astman

secret=astman

[fastagi]

setuid=true

basedir=/var/lib/asterisk/agi-bin/

#!/usr/bin/php -q

set_time_limit(60);

ob_implicit_flush(false);

include("phpagi.php");

$agi=new AGI;

$agi->answer();

$agi->verbose('HELLO WORLD!!!!!!');

$agi->stream_file('welcome','#'); //播放语音流媒体,按#号终止播放

$agi->say_digits('1001','1234567890*#');

$agi->hangup();

?>

简单IVR流程:

#!/usr/bin/php -q

set_time_limit(60);

ob_implicit_flush(false);

include("phpagi.php");

$agi=new AGI;

$agi->answer();

$prompt_enter_dest="welcome";

$res_dtmf=$agi->get_data($prompt_enter_dest,1000,1); //超时1000,最多1个数字

$res_num=$res_dtmf["result"];

$agi->say_digits($res_num);

if($res_num=="1")

{

$agi->verbose('You enter 1');

}

elseif($res_num=='2')

{

$agi->verbose('You enter 2');

}

else

{

$agi->stream_file('vm-goodbye','#');

}

$agi->hangup();

?>

如果带参数的方式调用AGI则按照如下规则:

调用方法:

exten => s,1,AGI(myagi.php,${exten},${mID})

在myagi.php 中则使用如下的方法来获取:

$argv[1] 对应${exten}

$argv[2] 对应${mID}

php agi api,PHP agi 编写测试相关推荐

  1. 怎样编写测试类测试分支_编写干净的测试–天堂中的麻烦

    怎样编写测试类测试分支 如果我们的代码有明显的错误,我们很有动力对其进行改进. 但是,在某些时候,我们认为我们的代码"足够好"并继续前进. 通常,当我们认为改进现有代码的好处小于所 ...

  2. junit编写测试代码_编写数据访问代码测试-不测试框架

    junit编写测试代码 当我们向数据访问代码编写测试时,是否应该测试其公共API的每种方法? 一开始听起来很自然. 毕竟,如果我们不测试所有内容,那么如何知道我们的代码可以按预期工作? 这个问题为我们 ...

  3. 怎样编写测试类测试分支_编写干净的测试-被认为有害的新内容

    怎样编写测试类测试分支 很难为干净的代码找到一个好的定义,因为我们每个人都有自己的单词clean的定义. 但是,有一个似乎是通用的定义: 简洁的代码易于阅读. 这可能会让您感到有些惊讶,但我认为该定义 ...

  4. 为数据访问代码编写测试–不测试框架

    当我们向数据访问代码编写测试时,是否应该测试其公共API的每种方法? 一开始听起来很自然. 毕竟,如果我们不对所有内容进行测试,那么如何知道我们的代码可以按预期工作呢? 这个问题为我们提供了重要的线索 ...

  5. 如何使用Postman和Newman在CI环境中自动化REST API端到端测试

    Postman is a great tool to explore REST APIs. You can build requests and try them out to get quick f ...

  6. XCode中的单元测试:编写测试类和方法(内容意译自苹果官方文档)

    当你在工程中通过测试导航栏添加了一个测试target之后, xcode会在测试导航栏中显示该target所属的测试类和方法. 这一章演示了怎么创建测试类,以及如何编写测试方法. 测试targets, ...

  7. 什么是API? [如何编写和阅读API文档]

    随着API在互联网时代中变得越来越普遍,不仅是编程人员会用到,现在也会要求产品经理或互联网运营会调试和对接API.看这篇文章的你可能会使用或开发API,或者两者兼而有之. 因此,对你来说,不仅要了解如 ...

  8. php 使用api接口测试工具,php API接口如何进行测试 - Codeception

    如题codeception 单元测试 Undefined index: HTTP_HOST 报错 测试驱动代码: commonconfigmain.php 跨域登陆代码 : 测试驱动运行到common ...

  9. nightwatch编写测试

    nightwatch编写测试 使用describe()接口 使用"导出"接口 使用ES6 async/await 断言 使用.expect()断言 编写单元测试 异步单元测试 合并 ...

最新文章

  1. 使用OpenCV进行人脸关键点检测
  2. 台湾一校长震动所有中国人的演讲
  3. jQuery可放大预览的图片滑块
  4. QString中包含中文的时候, 转为char *
  5. “约见”面试官系列之常见面试题之第一百零六篇之css只在当前组件中起作用(建议收藏)
  6. Spring基础面试题-同步更新
  7. [转]ASP.NET刷新页面的六种方法
  8. mysql 存储过程 风险_删除/恢复SQL server危险的存储过程方法
  9. OSPF邻接关系状态机
  10. ERWIN中表结构导出到doc文件中
  11. Linux学习第一节课学习心得
  12. 暗影精灵4如何调节风扇转速_惠普暗影精灵4 简单几步设置让游戏画面更流畅
  13. 中职计算机教学工作随笔,教学随笔(精选15篇)
  14. 手把手教你用SetWindowsHookEx做一个键盘记录器
  15. Android利用jsoup爬虫爬网页数据(二)
  16. C++约瑟夫环改良版
  17. 蘑菇街Android组件与插件化
  18. 佛山市政携手企企通,打造高效协同的云端极速供应链
  19. MySQL 8.0 全文检索功能 根据中文字符检索相关数据
  20. 地球最后的夜晚 HDTC

热门文章

  1. vue-devTools插件安装流程
  2. Go 学习笔记(70)— Go 变量声明、变量初始化、值类型变量赋值、指针类型变量赋值
  3. 【软件工程】RUP与软件开发5大模型
  4. 算法最少分组法_数据结构
  5. 关于pytorch--embedding的问题
  6. OpenArkCompiler方舟编译
  7. CUDA上的量化深度学习模型的自动化优化
  8. 高精地图与自动驾驶(上)
  9. 怎样训练YOLOv3
  10. 2021年大数据Flink(四十六):扩展阅读 异步IO