0

我想在星号的 extensions.conf 中执行以下操作:

  1. 读入用户输入的数字。- 简单的
  2. 将该数字输入到返回 wav 文件的脚本中。
  3. 然后播放这个 wav 文件。

我知道这个system命令,但还没有找到让它返回值的方法。

非常欢迎任何帮助,
谢谢,
Sriram。

4

2 回答 2

1

对于这样的事情,我使用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})
于 2011-01-27T20:00:54.940 回答
0

可以让程序/脚本将值写入文件,然后使用星号内的函数ReadFile来获取值。这可以这样做:

在脚本中:
echo -n ${value} > ${fileName}

从星号内:
exten => 0,n,ReadFile(ValueReadFromFile=${fileName},${MAX_FILE_CHAR})

其中:${MAX_FILE_CHAR}是最大值。需要从文件中读取的字符${fileName}。您要读取的值将存储在ValueReadFromFile.

于 2011-07-19T07:49:27.667 回答