Функция, которая возвращает значение в extensions.conf - asterisk - PullRequest
0 голосов
/ 27 января 2011

Я хочу сделать следующее в файле extensions.conf в звездочке:

  1. Считать число, введенное пользователем. - легко
  2. Введите это число в скрипт, который возвращает WAV-файл.
  3. Этот wav-файл затем воспроизводится.

Я знаю команду system, но не смог найти способ вернуть ей значение.

Любая помощь приветствуется,
Спасибо,
Sriram.

Ответы [ 2 ]

1 голос
/ 27 января 2011

Для таких вещей я использую Asterisk AGI .Идея похожа на CGI-скрипты для веб-серверов.Вы можете использовать разные языки, но я использую Python с библиотекой pyst: Python for Asterisk .Такой скрипт / программа AGI может читать или устанавливать переменную канала и таким образом связываться с абонентской группой Asterisk.

Пример такого кода с pyst agilib:

wav_to_play = 'other.wav'
user_nr = agilib.get_variable('user_entered_number')
if not user_nr:
    wav_to_play = 'nothing.wav'
elif user_nr.endswith('0'):
    wav_to_play = 'zero.wav'
# ...
agilib.set_variable('wav_selected', wav_to_play)

После сохранения такого кода в wav_selector.agi (вы должны добавить нормальный заголовок Python, библиотеки и т. д.), вы можете использовать его в плане набора, например:

exten => s,n,Set(user_entered_number=5)
exten => s,n,AGI(wav_selector.agi)
exten => s,n,Background((${wav_selected})
0 голосов
/ 19 июля 2011

Можно заставить программу / скрипт записать значение в файл, а затем использовать функции звездочки, такие как ReadFile, для получения значения. Это можно сделать так:

Внутри скрипта:
echo -n ${value} > ${fileName}

Изнутри звездочка:
exten => 0,n,ReadFile(ValueReadFromFile=${fileName},${MAX_FILE_CHAR})

где: ${MAX_FILE_CHAR} - макс. символы, которые необходимо прочитать из файла ${fileName}. Значение, которое вы хотите прочитать, будет сохранено в ValueReadFromFile.

...