星号随机发​​生器

时间:2015-02-02 08:34:38

标签: random asterisk

请问我该如何解决这个问题? 打电话到Asterisk服务器,随机的“x”号码(生成1 - 100), 如果被叫号码中的前两位数字小或等于当时生成的数字中的数字50,那么让Asterisk回答并播放一个文件,如果它从50开始大(50是随机生成的数字) 让Asterisk放弃通话。 请问谁可以帮助我?

2 个答案:

答案 0 :(得分:0)

Asterisk有功能RAND

Asterisk func rand
Synopsis:
Choose a random number in a range

Description:

  RAND([min][,max])

Choose a random number between min and max. Min defaults to 0, if not
specified, while max defaults to RAND_MAX (2147483647 on many systems).

您还需要阅读有关星号拨号方案和gotoIf功能的信息

GotoIf(condition?[label1]:label2)

Go to next step (or label1 if defined) if condition is true or to label2 if condition is false.

Either label1 or label2 may be omitted (in that case, we just don't take the particular branch), but not both.

condition is just a string. If the string is empty or "0", the condition is considered to be false. If it is anything else, the condition is true. This is designed to be used together with expression syntax.

http://www.voip-info.org/wiki/view/Asterisk+func+rand

http://www.voip-info.org/wiki/view/Asterisk+cmd+GotoIf

答案 1 :(得分:0)

有几种方法可以达到你想要的效果,我认为最简单的方法就是在你现有的拨号方案中添加以下内容:

ExecIf($[ ${RAND(1,100)} < 50 ]?HangUp():Playback(youraudiofile))

进一步解释:此行将测试函数RAND返回的值,如果返回1到49,ExecIf应用程序将执行命令HangUp(),如果该值高于50则将执行播放命令以播放给定的音频文件名,然后转到下一个拨号方案行。

不要忘记将'youraudiofile'替换为应放在星号声音文件夹中的实际音频文件的名称(tip / var / lib / asterisk / sounds /)。