0

我正在使用 phpagi$agi->get_data从用户那里读取数字。
在某些电话中,用户没有按任何键,但音频播放立即停止并得到"D"!!
我搜索了很多关于它,看起来像$agi-get_dat接收包含0-9*#ABCD.
第一个问题是,为什么我的用户"D"不按任何键就能获得!
第二个问题是,我怎样才能忽略这些字符以防止打断我的 ivr。

4

2 回答 2

0

您可以通过以下命令检查日志:

星号-vvvvv

您可以检查输入的值,例如在 php 代码中:

$val = $agi->get_data exec("echo $val >> /tmp/output")

然后检查这个文件:/tmp/output

于 2019-07-30T22:29:10.320 回答
0

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
于 2019-05-19T18:56:45.133 回答