努力将有效的星号服务器转换为opensips,以获得更好的性能
在大多数情况下它正在运作,但我遇到了一个我无法弄清楚的问题。
asterisk这样做:
if ("${fromourmobile}" != "") // Check if mobile Call Waiting is set to "n"
{
set(phonenumber=${FROM});
set(GROUP()=${phonenumber});
noop(Group Count: ${GROUP_COUNT(${phonenumber})});
if (${GROUP_COUNT(${phonenumber})} > 1)
{
Busy();
}
}
和这个
if (${MATH(${EPOCH} % 2)} = 0)
{
set(dialhost=193.88.58.86);
Dial(SIP/${numbertodial}@${dialhost},60,wWtT);
&hangupcausecheck(${numbertodial}, ${dialhost});
switch (${DIALSTATUS})
{
case BUSY:
busy;
break;
default:
break;
}
set(dialhost=195.215.252.15);
Dial(SIP/${numbertodial}@${dialhost},60,wWtT);
&hangupcausecheck(${numbertodial}, ${dialhost});
switch (${DIALSTATUS})
{
case BUSY:
busy;
break;
default:
break;
}
我似乎无法在opensips中找到类似的方法,主要是group_count()和hangupcausecheck()
此外是否有等同于星号的$ server变量?
答案 0 :(得分:1)
首先想你需要明白是
Asterisk是类似pbx的软件。 Opensips是PROXY软件。
在Opensips中没有GROUP,播放等。对于编程opensips,您已经是编程专家,并且完全了解SIP协议的工作原理。
可以使用对话框和缓存服务器模拟通道数。但是,如果您在BYE / CANCEL处理中配置任何单个错误,它将无法工作。在大多数情况下,检查通道无法激活(因为它不跟踪通道的RTP数据)。
没有像Dial这样的应用程序。而不是你已经重写了INVITE数据包以获得正确的目的地/号码。