-2

m 目前正致力于将现有的星号服务器转换为 opensips,以获得更好的性能

在大多数情况下它正在工作,但我遇到了一个我无法真正弄清楚的问题。

星号正在这样做:

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 变量等效的变量?

4

1 回答 1

1

首先认为你需要了解的是

Asterisk 是类似 pbx 的软件。Opensips 是代理软件。

Opensips 中没有 GROUP、回放等。对于 opensips 编程,您必须是编程专家,并且完全了解 SIP 协议的工作原理。

可以使用对话和缓存服务器来模拟通道计数。但是,如果您在 BYE/CANCEL 处理中配置了任何单个错误,它将不起作用。在大多数情况下,无法检查通道是否处于活动状态(因为它不跟踪通道的 RTP 数据)。

没有像拨号这样的应用程序。取而代之的是,您已经为正确的目的地/号码重写了 INVITE 数据包。

于 2014-05-28T08:02:54.667 回答