在extensions.conf中返回值的函数 - 星号

时间:2011-01-27 14:08:42

标签: asterisk telephony

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

  1. 读入用户输入的数字。 - 轻松
  2. 将该数字输入到返回wav文件的脚本中。
  3. 然后播放此wav文件。
  4. 我知道system命令,但无法找到返回值的方法。

    非常欢迎任何帮助,
    谢谢,
    斯利拉姆。

2 个答案:

答案 0 :(得分: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})

答案 1 :(得分:0)

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

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

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

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