2011-01-27 2 views
0

Я хочу сделать следующее в моем extensions.conf в звездочке:Функция, которая возвращает значение в extensions.conf - Звездочка

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

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

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

ответ

0

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

В сценарии:
echo -n ${value} > ${fileName}

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

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

1

Для таких вещей я использую 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}) 
Смежные вопросы