首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

操作系统

Windows 9X | Linux&Uinx | Windows Server | 其它操作系统 | Vista | FreeBSD | Windows 7 |
首页 > 操作系统 > Windows Server > Live Communications Server API 详解(1) > 正文

Live Communications Server API 详解(1)

出处:微软中国 作者:微软中国 时间:2005-12-26 9:02:00
Live Communications Server Application API
发布时间:2005 年 6 月
摘要:LCS API套件中包括:Microsoft SIP Processing Language(MSPL)、Microsoft.Rtc.Sip命名空间、application manifests 和为LCS构建SIP应用程序的资料。本文档将针对以上部分进行详细介绍。
LCS API套件中包括:
Microsoft SIP Processing Language(MSPL)、Microsoft.Rtc.Sip命名空间、application manifests 和为LCS构建SIP应用程序的资料。
Note   The Live Communications Server Application API currently does not support SIP dialogs and UAC server behaviors. Future versions of the API will add support for these features.
1. Application manifests
The application manifest is an XML document that describes a Live Communications Server application to the server on which it is running. This document is presented to the server when the application registers with Live Communications Server through the Microsoft.Rtc.Sip.ServerAgent managed class.
1.1 Application manifests构成:
Application manifests由以下三部分组成:
1.1.1 <alias:applicationManifest>标签。
在这个标签内装入应用程序属性(Application attributes)和消息过滤脚本(MSPL),可以为"alias"定义一个别名,微软建议使用默认别名"ls"。
1.1.2 A set of application attributes that defines key properties of the application, such as the SIP message types to filter and whether it is script-only.
1.1.3 用MSPL语言写的消息过滤脚本。
在CDATA element里被附加上<alias:splScript>标签。
1.2 Application manifests部属:
这个Application manifests文件,一次建立后,可以和装配件(assembly)里的resource一样,植入应用程序内部,或者像一个外部文件一样存在。
1.2.1 植入assembly内部:
用Microsoft.Rtc.Sip命名空间的ApplicationManifest类,在新生成的 ApplicationManifest对象里用Compile方法对它进行编译。样里代码如下:
        ResourceManager myResourceManager = new ResourceManager(MyApplicationType);
        
string appManifestXml = myResourceManager.GetString("appManifest"
);
        ApplicationManifest myAppManifest 
=
 ApplicationManifest.CreateFromString(appManifestXml);
        
try 
{
            myAppManifest.Compile();
        }

        
catch (CompilerErrorException cee) 
{
            Console.WriteLine(
"Failed to compile."
);
            
foreach (string message in cee.ErrorMessages) 
{
                Console.WriteLine(message);
            }

            
return
;
        }

               
               编译成功后,这个编译过的Application manifests部属到代理服务器上,
1.2.2 外部文件格式:
下面是一个仅有SIP INVITE and MESSAGE请求的基本的application manifest:
               <?xml version="1.0" ?>
               
<
lc:applicationManifest
             
appUri="http://www.adatum.com/myApplicationLocation"

             xmlns:lc
="http://schemas.microsoft.com/lc/2003/05">

                  
<lc:requestFilter methodNames="INVITE,MESSAGE"
 
                              strictRoute
="false"
 
                        registrarGenerated
="true"

                        domainSupported
="true">

                  
<lc:responseFilter reasonCodes="NONE" />

                  
<lc:proxyByDefault action="true" />

                
<lc:scriptOnly />

             
<lc:splScript><![CDATA[

                              if (sipRequest) {
                            if (sipRequest.Method == StandardMethod.Invite) {
                          Dispatch("NameOfInviteHandlerMethodInApplicationHere");
                            }
                                 else if (sipRequest.Method == StandardMethod.Message) {
                                    Dispatch("NameofMessageHandlerMethodInApplicationHere");
                            }
                              }
             
]]></lc:splScript>

               
</lc:applicationManifest>
1.3 Application Attributes
Application Attibutes在消息过滤脚本的前面,在<lc:applicationManifest>标签的后面,包含详细的描述LCS应用程序的数据。例如下面所示:
               <?xml version="1.0" ?>
               
<
lc:applicationManifest
                
lc:appUri="http://www.adatum.com/applicationName"

                xmlns:lc
=http://schemas.microsoft.com/lcs/2004/05>
                 
application attributes
               <lc:splScript
><![CDATA[

                 message filter script
               
]]></lc:splScript>

</lc:applicationManifest>

       
       其中,xmlns属性指定了用那个版本的LCS来运行应用程序,如果是LCS2003就采用下面的方式:
       xmlns:lc=http://schemas.microsoft.com/rtc/2003/05
共有下列应用程序属性标签可供Application manifests使用:
1.3.1
 <lc:proxyByDefault  action="true|false" />

说明:为应用程序指定默认代理行为。
如果是true,服务器自动代理任意消息,应用程序不依据句柄执行。如果是false,消息被抛出,应用程序结束,同时,一方将不会收到它。
1.3.2
<lc:scriptOnly />

说明:当部署时,指定应用程序不含托管代码的成分。
1.3.3
<lc:requestFilter methodNames="METHOD_NAMES|NONE|ALL" registrarGenerated="true|false"       strictRoute="true|false"  domainSupported="true|false" />

说明:指定应用程序通过服务器的那些请求。
有下列methodNames
REGISTER
SUBSCRIBE
NOTIFY
BENOTIFY
ACK
BYE
INVITE
OPTIONS
MESSAGE
SERVICE
INFO
REFER
OTHER
1.3.4
<lc:responseFilter reasonCodes="RESPONSE_CLASSES|ALL|NONE" />

说明:定义应用程序通过服务器响应那个类别。
类别如下:
1XX
2XX
3XX
4XX
5XX
6XX
1.3.5
 <lc:file path="filePath"  keyColumnName=[columName] delimitedBy="comma/tab/whitespace"
              <column name
="columnName"/>
 
<lc:column name="ColumnName"/>

</lc:file>

说明:Name属性指引用的text文件名称,必须是有效的MSPL。Path属性是这个文件的决对路径,如果是相对的,它必须是相对于运行RTCSRV.exe的路径。
1.3.6
<lc:column name="columnName"

用这个标签可以指定一个或多个列节点。

2. Microsoft SIP Processing Language
       MSPL是用来过滤或路由SIP消息的脚本语言,像大家知道的"message filters",这个脚本是植入到application manifests里的LCS应用程序中。
MSPL不支持:
Explicit (declarative) data types
Type casting
Pointers
Declarations (other than basic function declarations, as detailed below)
Arithmetic operations
Iteration statements
Preprocessor statements
Attributes
Static or global variables (state is not maintained across script invocations)
2.1 MSPL Script Syntax
2.1.1 Function Invocation
 一个函数在MSPL里是唯一的,在MSPL里函数用如下语法格式来定义:
function ParseDisplayName (displayName) 
               }

所有的函数定义必须在消息过滤脚本的开始处,在过滤脚本之前。一个函数能有零个或更多的参数。为了防止无意中的循环,递归函数的调用是不允许的。互相的递归调用calls-calls模式也是不允许的。例如,如果函数1调用函数2,然后调用函数3,函数3不能调用1或2的任意一个。返回值类型是implicitly defined的,更确切的说,这个类型是传递的返回声明的值决定的。参数也是implicitly defined的。函数不能返回collections,它支持的的返回类型有strings,bools,integers和floats.
下面的函数示例过滤了一个特殊的string,如果这个string被找到返回true,否则,返回false.
               function FilterString (content) 
               
{
                              filterWord 
="confidential"

                               
return ContainsString(content, filterWord, true
);
               }
2.1.2 The foreach Statement
       在SIP消息处理过程中foreach允许脚本编写者比较句柄collections,例如contact header collections和 endpoint collections。下面示例演示了foreach loop的语法构成。
       foreach (element in expression) statement
For example:
               
foreach (dbEndpoint in

               QueryEndpoints(
"someone@example.com"))  }
       这段代码将求出collections里的值,Strings和其他unary types 像single-item collections一样的处理。
2.1.3 The break Statement
Break 的用法和C#中switch/case里的用法相同
2.1.4 The null Keyword
Null关键字,脚本语法能添加一个null关键字,与empty string ("")不同,empty string是不能建立的。有下列函数将返回一个null来表明值没有找到或者错误。
" GetDisplayName
" GetHostName
" GetParameterValue
" GetScheme
" GetUri
" GetUriParameter
" GetUserName
" GetUserAtHost
" GetXMLAttr
" QueryHomeServer
另外,Message.Stamp 和 Message.StampPool也返回null.
相关文章 热门文章
  • Lync Server 2010部署攻略之域管理员启用
  • Lync Server 2010部署攻略之服务器部署篇
  • Lync Server 2010部署攻略之标准版部署体验
  • Lync Server 2010部署攻略之规划准备篇
  • 在配置完 Exchange Server 2010 CAS Array后需要做的两件事
  • windows NT 4.0 Domain升级到windows server 2008 R2需要注意的几个问题
  • Exchange Server 2010与RMS集成
  • Exchange Server 2010 跨组织移动邮箱
  • 设置Exchange Server 2010客户端访问服务器的URL
  • Exchange Server 2007中配置多名称证书
  • 配置Exchange Server 2010 DAG
  • 利用网络负载均衡来实现Exchange Server 2010客户端访问的高可用性
  • “http 500内部服务器错误”的解决方法
  • 利用Windows 2000 Server的RRAS实现VPN服务器
  • 用凤凰万能启动盘解决本地/域管理员密码丢失
  • Win2003 Server企业版安装配置
  • Active directory 灾难恢复
  • Windows 2000/03域和活动目录
  • 如何在vmware4上创建windows 2003群集
  • MSI文件制作全过程
  • Win2000命令全集(一)
  • Windows 2000/AD技巧
  • 此系统的本地策略不允许您采用交互式登录解决方法
  • Win2000路由的安装与设置实现不同网段互通
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号