Звездочка, игнорировать специальные символы DTMF в GET DATA

Я использую phpagi $agi->get_data читать цифры от пользователя.
В некоторых телефонах пользователь не нажимал ни одной клавиши, но воспроизведение звука немедленно останавливается и получается результат "D"!!
Я много об этом искал, и выглядит $agi-get_dat получает данные DTMF, которые содержат 0-9*#ABCD,
1-й вопрос, почему мои пользователи получают "D" не нажимая ни одной клавиши!
2-й вопрос, как я могу игнорировать эти символы, чтобы предотвратить прерывание моего IVR.

1 ответ

Вы можете проверить журналы с помощью следующей команды:

звездочка -vvvvv

и вы можете проверить значение ввода, например, в коде php:

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

а затем проверьте этот файл: /tmp/output

phpagi getdata сделать этот вызов

https://wiki.asterisk.org/wiki/display/AST/AGICommand_stream+file

так что вы можете расширить его, добавив разрешенные цифры param. 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 пример: пинг IP-адреса

массив, файл_потока (строка $filename, [string $escape_digits = ''], целое число $offset)

string $filename: without extension, often in /var/lib/asterisk/sounds    
string $escape_digits 
integer $offset
Другие вопросы по тегам