嗨,我是 asterisk 的新手,我喜欢拨号到一个随机且可用的 sip peer。在这里,我尝试了一些技术,例如使用 ChanIsAvail(SIP/user1&SIP/user2&SIP/user3,j) 从用户列表中进行选择。我想选择可用的随机用户对等体。
exten => _XXXXXXX,1,ChanIsAvail(SIP/user1&SIP/user2&SIP/user3,j)
exten => _XXXXXXX,n,Dial(${AVAILORIGCHAN})
sip 用户喜欢
[user1]
type=peer
username=user1
secret=user1XX
host=dynamic
context=from-pstn
[user2]
type=peer
username=user2
secret=user2XX
host=dynamic
context=from-pstn
[user3]
type=peer
username=user3
secret=user3XX
host=dynamic
context=from-pstn
.
.
.
我如何从这些..中选择可用(不忙)用户?
没有以星号方式实现。
您已经使用了 GotoIf、Set、变量、简单循环和带有 RAND 函数的 CUT。
所以只需组织随机选择频道,保存在已测试频道的变量中。
如果未测试,请检查是否可用并致电。失败时根据 DIALSTATUS 尝试下一步。
http://www.voip-info.org/wiki/view/Asterisk+cmd+GotoIf
http://www.voip-info.org/wiki/view/Asterisk+cmd+Set
http://www.voip-info.org/wiki/view/Asterisk+variables
好吧,你可以用编程语言做到这一点。只需获取在线 sip 用户列表并将它们设置在数组或其他集合中,然后你就可以通过调用文件来调用那个人(通过从该列表中选择随机人)或其他方式。
最简单的方法是创建一个队列。文件 queues.conf
[users]
member=SIP/user1,0
member=SIP/user2,0
member=SIP/user3,0
strategy = random
文件扩展名.conf
exten => _XXXXXXX,1,Queue(users)
来自队列用户的随机免费(NOT_INUSE)成员将响铃