我想在星号的 extensions.conf 中执行以下操作:
- 读入用户输入的数字。- 简单的
- 将该数字输入到返回 wav 文件的脚本中。
- 然后播放这个 wav 文件。
我知道这个system
命令,但还没有找到让它返回值的方法。
非常欢迎任何帮助,
谢谢,
Sriram。
对于这样的事情,我使用Asterisk AGI。Idea 类似于 Web 服务器的 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})
可以让程序/脚本将值写入文件,然后使用星号内的函数ReadFile
来获取值。这可以这样做:
在脚本中:
echo -n ${value} > ${fileName}
从星号内:
exten => 0,n,ReadFile(ValueReadFromFile=${fileName},${MAX_FILE_CHAR})
其中:${MAX_FILE_CHAR}
是最大值。需要从文件中读取的字符${fileName}
。您要读取的值将存储在ValueReadFromFile
.