脚本变量不应该用于呼叫处理?

script variable should not be used for call processing?

先生,

我正在尝试在 opensips 2.4 中创建有状态代理。

我只是想要一个变量来保存收到的消息信息并进行处理。

所以我在 opensips "core variable" 中检查 manual.it 说,脚本变量是明智的。所以我不应该使用像 $var(Ruri)=$ru 这样的脚本值来保存 header 值?它会被其他调用覆盖吗??

$var(userName)=$rU;
$var(removePlus) = '+';
# Search the string starting at 0 index
if($(var(userName){s.index, $var(removePlus)})==0){ 
  $rU=$(var(userName){s.substr,1,0});
}

$var 变量是进程本地的,这意味着即使您愿意,也不能与其他 SIP 工作人员共享它们!事实上,它们被优化得如此之好,以至于它们的起始值通常是同一过程在之前的 SIP 消息处理过程中留下的值(提示:您可以通过 运行 opensips 和 children = 1 来证明这一点,并制作两个电话)。

另一方面,$avp 等变量在进程之间共享,但不是以 "dangerous" 的方式共享,您不必担心并行处理两个 INVITE 重传处理,每个都覆盖另一个一个人的$avp,等等。不!这是在引擎盖下处理的。 "sharing" 仅意味着,例如,在由与中继初始 INVITE 的进程不同的进程处理的 200 OK 回复期间,您仍然可以读取和写入相同的 $avp您在请求处理期间设置。

最后,你的代码看起来是正确的,但它可以大大简化:

if ($rU =~ "^+")
    strip(1);