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

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


person MeTe-30    schedule 19.05.2019    source источник


Ответы (2)


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

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

поэтому вы можете расширить его, добавив параметр разрешенных цифр. PhpAGI lib имеет открытый исходный код и исходный код.

На самом деле вы можете просто использовать вызов stream_file

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-адреса

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

string $filename: without extension, often in /var/lib/asterisk/sounds    
string $escape_digits 
integer $offset
person arheops    schedule 19.05.2019
comment
Спасибо, но, к сожалению, он ограничен одной цифрой, верно? - person MeTe-30; 20.05.2019
comment
Потоковый файл состоит из одной цифры. Используйте exec('Read') если вам нужно больше контроля, включая воспроизведение более одного раза. Или используйте background/waitexten, это не остановит воспроизведение. - person arheops; 20.05.2019

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

звездочка -ввввв

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

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

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

person iman tavakoli    schedule 30.07.2019