Звездочка, игнорировать специальные символы 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