Команда Read()
Назначение
Чтение DTMF последовательности, которую набирает абонент.Описание
В Asterisk версии 1.0.X:
Read(variable[|filename][|maxdigits][|option])
Начиная с Asterisk версии 1.2:
Read(variable[|filename][|maxdigits][|option][|attempts][|timeout])
Начиная с Asterisk версии 1.6:
Read(variable[,filename[&filename2...]][,maxdigits][,option][,attempts][,timeout])
Считывает в указанную переменную, вводимую пользователем, DTMF последовательность, завершенную символом '#', заданное число раз.
Параметры команды:
- variable: имя переменной, в которой будет сохранена введенная пользователем последовательность.
- filename: имя звукового файла (или файлов, начиная с версии 1.6) или тона, если используется опция 'i', проигрываемых пользователю до считывания последовательности.
- maxdigits: максимально возможное число считываемых цифр. Считывание прекращается если введено максимальное количество цифр (в этом случае от пользователя не требуется нажатия кнопки '#'). Значение по умолчанию: 0 - нет лимита - команда ждет, пока пользователь не нажмет кнопку '#'. Любое значение меньше нуля приводят к такому же результату. Максимальное значение для этого параметра - 255.
- option: дополнительные параметры, допустимые значения 's', 'i', 'n':
- 's' - указывает немедленно закончить выполнение команды, если линия связи не в соединенном состоянии.
- 'i' - вместо имени файла/файлов указаны "indication tone", из файла indications.conf.
- 'n' - для чтения цифр, даже если линия не в соединенном состоянии.
- attempts: если больше 1, то указывается число попыток чтения последовательности, в том случае, если пользователь ничего не набрал.
- timeout: Количество секунд ожидания ввода пользователя. Если значение больше нуля, то это значение будет использоваться вместо значения таймаута по умолчанию. (Начиная с версии 1.6, могут использоваться не целые значения).
Начиная с версии 1.6, данное приложение по завершении устанавливает значение переменной канала READSTATUS в соответствии с результатом своей работы, в одно из значений:
OK | ERROR | HANGUP | INTERRUPTED | SKIPPED | TIMEOUT
Пример
; dial 307 = для перезапуска Asterisk ; Замечание: вместо Read() мы также можем использовать команду Authenticate() exten => 307,1,DigitTimeout(4) ; Установка Digit Timeout в 4 секунды exten => 307,2,ResponseTimeout(5) ; Установка Response Timeout в 5 секунды ; Следующая команда проигрывает приглашение: "для перезапуска введите пароль" exten => 307,3,Read(Secret,posix-pass-restart-ast,3) exten => 307,4,NoOp(${Secret}) exten => 307,5,Gotoif($[${Secret} = 123]?6:9) exten => 307,6,Playback(posix-restarting) ; "Перезапуск asterisk" exten => 307,7,Wait(1) exten => 307,8,System(/usr/sbin/asterisk -rx reload) exten => 307,9,Hangup
Коды возврата:
Возвращает -1 при разрыве связи или ошибке, 0 - в противном случае.Ссылки по теме
- Asterisk cmd authenticate: Авторизация пользователя
- Asterisk cmd DigitTimeout: Установка максимального таймаута между набираемыми цифрами
- Asterisk cmd ResponseTimeout: Установка максимального времени для ожидания ответа на вызов
- Asterisk cmd System: Выполнить команду операционной системы
- Asterisk sound files
- Asterisk variables
- список команд