我正在使用 phpagi$agi->get_data
从用户那里读取数字。
在某些电话中,用户没有按任何键,但音频播放立即停止并得到"D"
!!
我搜索了很多关于它,看起来像$agi-get_dat
接收包含0-9*#ABCD
.
第一个问题是,为什么我的用户"D"
不按任何键就能获得!
第二个问题是,我怎样才能忽略这些字符以防止打断我的 ivr。
2 回答
您可以通过以下命令检查日志:
星号-vvvvv
您可以检查输入的值,例如在 php 代码中:
$val = $agi->get_data exec("echo $val >> /tmp/output")
然后检查这个文件:/tmp/output
phpagi getdata 做这个调用
https://wiki.asterisk.org/wiki/display/AST/AGICommand_stream+file
所以你可以通过添加允许的数字参数来扩展它。PhpAGI lib 是开源的并且有源代码。
实际上你可以只使用 stream_file 调用
流文件(第 677 行)
播放给定的音频文件,允许播放被 DTMF 数字中断。此命令类似于 GET DATA 命令,但此命令在按下第一个 DTMF 数字后返回,而 GET DATA 可以在返回之前累积任意位数。
return: see evaluate for return information. ['result'] is -1 on hangup or error, 0 if playback completes with no digit received,
否则为 DTMF 音的十进制值。使用 chr() 转换为 ASCII。链接:http ://www.voip-info.org/wiki-stream+file 示例:Ping 一个 IP 地址
数组,stream_file (string $filename, [string $escape_digits = ''], integer $offset)
string $filename: without extension, often in /var/lib/asterisk/sounds string $escape_digits integer $offset