我正在使用phpagi $agi->get_data
从用户读取数字。
在某些电话中,用户没有按下任何键,但是音频播放立即停止并获得"D"
的结果!
我进行了很多搜索,看起来$agi-get_dat
收到了包含0-9*#ABCD
的DTMF数据。
第一个问题是,为什么我的用户没有按任何键就能获得"D"
!
第二个问题是,我如何忽略这些字符以防止中断ivr。
答案 0 :(得分:0)
phpagi getdata进行此调用
https://wiki.asterisk.org/wiki/display/AST/AGICommand_stream+file
,因此您可以通过添加允许的数字参数来扩展它。 PhpAGI lib是开源的,并且具有源代码。
实际上,您只能使用stream_file调用
stream_file(第677行)
播放给定的音频文件,从而允许播放中断 DTMF数字。该命令类似于GET DATA命令,但是 在GET期间按下第一个DTMF数字后,命令返回 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地址
array,stream_file(字符串$ filename,[string $ escape_digits =”], 整数$ offset)
string $filename: without extension, often in /var/lib/asterisk/sounds string $escape_digits integer $offset
答案 1 :(得分:0)
您可以通过以下命令查看日志:
星号-vvvvv
并且您可以检查输入值,例如php代码:
$ val = $ agi-> get_data exec(“ echo $ val >> / tmp / output”)
,然后检查此文件:/ tmp / output