为什么我得到一个MSPL异常" ProxyRequest仅对sipRequest"有效。

时间:2015-01-22 13:39:16

标签: sip lync lync-2013

我正在使用清单和Windows服务编写Lync MSPL应用程序。在我的manifest.am中,我有以下代码:

<?xml version="1.0"?>
<r:applicationManifest
 r:appUri="http://www.company.no/LyncServerFilter"
 xmlns:r="http://schemas.microsoft.com/lcs/2006/05">

<r:requestFilter methodNames="ALL"
             strictRoute="true"
             domainSupported="false"/>

<r:responseFilter reasonCodes="ALL"/>
<r:proxyByDefault action="true" />
<r:allowRegistrationBeforeUserServices action="true" />

<r:splScript>
    <![CDATA[

callId = GetHeaderValues("Call-ID"); 
cseq = GetHeaderValues("CSeq");
content = "";
sstate = GetHeaderValues("subscription-state");
xevent = GetHeaderValues("Event");
xdir = GetHeaderValues("Direction");
xexp = GetHeaderValues("Session-Expires");
referto = GetHeaderValues("Refer-To");

if (sipRequest)
{
    if (sipRequest.Method == "INVITE") {
        if (ContainsString(sipRequest.Content, "m=audio", true)) { 
            content = "audio";
        }
        else if (ContainsString(sipRequest.Content, "m=video", true)) { 
            content = "video";
        }
        else if (ContainsString(sipRequest.Content, "m=message", true)) { 
            content = "message";
        }
        else if (ContainsString(sipRequest.Content, "m=application", true)) { 
            content = "application";
        }
        else {
            content = "unknown";
        }

    }
    else if (sipRequest.Method == "NOTIFY" || sipRequest.Method == "BENOTIFY") {
        content = sipRequest.Content;
    }


    DispatchNotification("OnRequest", sipRequest.Method, sipMessage.From, sipMessage.To, callId, cseq, content, xdir, xevent, sstate, xexp, referto);
    if (sipRequest) {       
        ProxyRequest();
    }
}
else if(sipResponse) {
    DispatchNotification("OnResponse", sipResponse.StatusCode, sipResponse.StatusReasonPhrase, sipMessage.From, sipMessage.To, callId, cseq, content, xdir, xevent, sstate, xexp, referto);
    ProxyResponse();
}
]]></r:splScript>
</r:applicationManifest>

我在Lync前端服务器上的事件日志中收到以下错误消息:  Lync Server应用程序MSPL脚本执行因错误而中止

申请Uri在'http://www.company.no/LyncServerFilter',第60行  错误:0x80070057 - 参数不正确

其他信息:ProxyRequest仅对sipRequest有效

第60行是我调用ProxyRequest的地方:

if (sipRequest) {       
ProxyRequest();
}

问题:

  1. 为什么errormessage说ProxyRequest仅对sipRequest有效?我正在检查它是sipMessage吗?
  2. 我可以删除对ProxyRequest()的调用,因为我设置了proxyByDefault = true吗? DistpathNotification方法是否“处理”该方法(吞下它),或者默认情况下是否会代理该消息?当我删除对ProxyRequest()的调用时,代码“有效”,但我不确定后果是什么......

1 个答案:

答案 0 :(得分:1)

ProxyRequest方法接受uri的参数,这就是您收到编译错误消息的原因。

所以你应该这样称呼它:

ProxyRequest(""); // send to the URI specified in the request itself

删除它的有效性与将proxyByDefault设置设置为true相同:

  

如果为true,则服务器会自动代理应用程序未处理的任何消息。如果为false,则删除该消息,并且在应用程序执行顺序中遵循此应用程序的应用程序将不会收到该消息。默认值为true。

作为旁注,您可以使用compilespl.exe作为Lync Server SDK的一部分,以便在尝试在lync服务器上启动之前验证您的MSPL脚本是否正确。

单独编译MSPL应用程序&#39;中查看此link。部分。