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