学习OCS客户端定制

一步一步学习OCS2007(一)--如何定制在线状态?(转自:http://www.cnblogs.com/invinboy )
 OCS 2007(即Microsoft Office Communicators Server 2007) 是微软2007年推出的一款非常重要的即时通讯软件,她汇集了多方即时通讯、多方语音聊天、多方视频会议等众多功能,同时还提供了强大的二次开发接口,以便用户进一步去扩展、去开拓。
  下面,我将逐惭就OCS2007二次开发过程中的一些体会,感受表达出来,与读者共享。
  今天的主题是,用户如何自定义在线状态
  在OCS2007中,主要有三种基础状态:Online、Busy、Do Not Disturb ,这些状态是根据Availability 属性决定自定义的状态显示哪一个图标。定制自定义状态的核心是:(1)配置自定义状态的XML文件;(2)配置文件在注册表中进行注册。下面将一步一步地介绍如何进行这一扩展。

  一、定义XML配置文件,如下例:

<?xml version="1.0" encoding="utf-8" ?>
<customStates>
  <customState ID="1" availability="online">
    <activity LCID="2052"> 下雪啦!</activity>
  </customState>
  <customState ID="2" availability="do-not-disturb">
    <activity LCID="2052">会议中......</activity>
  </customState>
  <customState ID="3" availability="busy">
    <activity LCID="2052">OCS2007 研究中......</activity>
  </customState>
</customStates>

</customStates>

  二、在IIS中发布该XML文件,在IIS中创建一个网站或者一个虚拟目录,然后将该XML文件放入此虚拟目录中应该就可以了(确认:在IIS中选中这个XML文件,右键,在浏览器中浏览,看是否能在IE中正确打开,如果这个地址需要发布出去共多人使用,别人不能使用时,请将此地址加入IE的信任站点中即可)。如图:


  IIS发布方式可以有HTTP、HTTPS这两种方式(如果为HTTPS,则必须将该站点加入IE的信任站点列表中)。
      说明:发布方式还可以通过文件共享的方式,但不推荐这种方式。

  三、在注册表注册配置文件:打开注册表,找到HKLM\software\Policies\Microsoft\Communicator 创建一字符串项CustomStateURL其值就是在IIS中发布的XML文件的URL,比如:http://localhost/OcsConfig/CustomStateURL.XML,如图:

  

  四、退出OCS2007客户端,重新登录,令人心动的功能是不是就出来了呢。


  最后说明两点:
  1、OCS2007中,最多可以定义四种自定义状态。
  2、每种自定义状态的最大长度不能超过64个字符。
  3、在XML文件中的LCID,它是用来标识不同语言版本的OC,英语美国:1033;中国大陆:2052;中国香港:3076。
      4、XML文件配置项是大小写敏感的,其中availability这个属性,我试验过了,如果写成Availability 将不能生效。其它属性没有检验过。

一步一步学习OCS2007(二)--如何定制web 标签页?

 前面我们体验了如何定制OCS2007的在线状态,不知道大家有没有去实践过,今天我与大家一道来分享另一个课题:如何在OC 2007中定制web 标签页?
  在OC2007中,在联系人窗口的下方,我们可以添加一系列web 页,将业务系统中重要的、常用的功能集成到OC平台上,致使在OC中可以解决很复杂的业务问题,在业务系统中,也可以方便地进行即时通讯,以达到优势互补之目的。如下图所示:


下面我们将一步一步地学习,怎么来实现这一功能:
  
  一、定义XML配置文件,web 标签页的所有属性,比如说标签图标的URL、名称、tooltip 提示、web 页面的地址、传递的参数等,都必须通过一个XML文件来加以定,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<tabdata>
    <tab>
        <image>http://localhost/BNSolution/WebTest/RESOURCE/IMAGE/away.png</image>
        <name>System</name>
        <tooltip>常用系统</tooltip>
        <contenturl>http://localhost/BNSolution/WebTest/OCS/WebForm1.aspx</contenturl>
        <userid>true</userid>
        <contactid>true</contactid>
        <accessibility>inside</accessibility>
    </tab>
    <tab>
        <image>http://localhost/BNSolution/WebTest/RESOURCE/IMAGE/2.png</image>
        <name>System</name>
        <tooltip>信息中心</tooltip>
        <contenturl>http://localhost/BNSolution/WebTest/OCS/HTMLPage1.htm</contenturl>
        <userid>true</userid>
        <contactid>true</contactid>
        <accessibility>inside</accessibility>
    </tab>
</tabdata>
   XML文件中,各元素的详细说明如下: XML 元素
描述
是否必须
tabdata
Contains 0 or more tab elements. The aximum number of tab elements is 32.  
No
tab
Contains image, name, tooltip, contenturl, userid, contactid, and accessibility elements.
No
image
标签图片的URL.

No
name
标签的友好名称,用于标识XML结点,将不显示。

Yes
tooltip
鼠标悬停在标签上时的提示信息。.

No
contenturl
web 标签页面的URL。

Yes
userid (“true” | “false”)
展现标签页面时,是否带上usrid 参数(当前用户SIP:URI)。缺省:false

No
contactid
(“true” | “false”)

展现标签页面时,是否带上联系人的 contactid 参数(联系人的SIP:URI)。
缺省:false



No
accessibility (
“inside” |
“outside” |
“both”)

用户在企业内部或者外部登录时,该标签是否显示:
inside :仅在内部登录时显示;
outside:仅在外部登录时显示;
both:都显示

No

  二、发布XML文件,发布方式有:
  HTTP:
  HTTPS: 确认要在IE浏览器中可正确访问,如果不能访问,请将该站点加入IE的信任站点列表中。
  文件共享:其书写规则为:  [url=file:///c:/intput/wwwroot/OcsConfig/Tab/tabURL.xml]file:///c:/intput/wwwroot/OcsConfig/Tab/tabURL.xml[/url]  

 三、注册XML文件,打开注册表编辑器,找到HKEY_LOCAL_MACHINE\software\Policies\Microsoft\Communicator ,创建一字符串项TabURL 其值就是上面发布的XML文件的URL,比如:http://localhost/OcsConfig/TabURL.XML
  也可编辑一个reg 文件,直接导入即可:[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Communicator]
"TabURL"=[url=file://server//comshare//Presence.xml]"[/url]http://localhost/OcsConfig/TabURL.XML[url=file://server//comshare//Presence.xml]"[/url]

  四、重新登录OC,看一看漂亮的女神,终于揭开她神秘的面纱,是不是能和我们一见忠情啊!

   在OC2007中,通过定制web 标签页,才算打开它二次开发的大门,开始踏上二次开发的慢慢征途。这些标签页,基本上没有什么限制,无论asp、ASP.net 、Microsoft SharePoint Services Web parts、Microsoft ActiveX
controls 还是  scripted applications,都可以正确的运行。所以说,尽可能地发挥你丰富的想象力,把OC与应用系统很好地集成起来,不怕做不到,只怕想不到。

  最后补充说明几个问题:
  1、在OC2007中,最多可以创建 32个tab 标签页,否则将不能生成。其实也用不了那么多,小小的一块天地,捡重点,捡实用的东东放上就可以了,现在楼市火爆,地盘值钱,方寸大小的屏幕,也价值不菲啊,所以就更要合理运用了。

  2、标签图片(即:XML文件中的image 图片),必须为*.png 格式的图片。图片的大小为 16 X 16 或者 32 X 32 ,如果图片格式或者图片大小不符合规范,则显示缺省图标。

  3、如果需要将当前用户或者被选中的联系人,传递给标签中的web 页面,我们可以有下面两种办法:、
  (1)、在XML文件中,设置 userid =true   contactid =true,这样当前用户或者联系人的SIP:URI 就会作为页面参数传递给web 页面,比如:
contenturl=http://moc.corp.contoso.com/corpnews.html  当前用户为sip:mallen@contoso.com ,加载web 页面时的URL则为:http://moc.corp.contoso.com/corpnews.html ?usrid=sip:mallen@contoso.com

(2)如果需要将当前选中的联系人、联系人分组信息传到web 页面,有一个脚本函数可以使用    
    OnSelectionChange(contacts, groups, distribution_groups)
  今天就写到这里了,其实,这里面还有很多很炫的功能,希望能和大家一起讨论,下一堂课,将讲述如何扩展OC2007的菜单功能,敬请关注。
一步一步学习OC2007(三)--定制菜单命令
 在前面的两篇文章中,我们讲了如何定制联系人的在线状态,如何定制web 标签页,是不是对OC2007 的魔力有所感触了呢?其实,这只是一个引言,一道开胃菜而已,后面还有更多的大餐等着你呢?今天,我们就一起来谈谈,如何定制OC2007的菜单命令?
  OC2007中,有三种类型的菜单:
  工具栏菜单(The Tools menu)
  会话窗口的动作菜单(The Actions menu off the Conversation window)
  联系人窗口右键菜单(The right-click menu off the Contact List)

在这些菜单列表中,都可以扩充我们的自定义菜单项。
  在OC2007 中,扩展菜单项,比扩展web 标签页,要容易一些,只要在注册表中定义清楚菜单项的各项属性就可以正常运行。如下代码所示:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Communicator\SessionManager\Apps\{27877e66-615c-4582-ab88-0cb2ca05d951}]
"Name"="发送短信"
"ExtensibleMenu"="ConversationWindowRightClick;MainWindowActions;MainWindowRightClick;ConversationWindowActions;ConversationWindowContextual"
"Path"="E:\\群发邮件\\SendNote\\SendNote.exe %user-id% %contact-id%"
"ApplicationInstallPath"="E:\\群发邮件\\SendNote\\SendNote.exe"
"SessionType"=dword:00000000
"ApplicationType"=dword:00000000

各注册键说明如下:
Name
Type
Data
Name
REG_SZ
菜单命令名称
ApplicationType
DWORD
应用程序类型:0:可执行文件;1:协议
ApplicationInstallPath
REG_SZ
ApplicationType = 0 时,应用程序的完整路径
Path
REG_SZ
应用程序的完整路径及其参数,缺省参数 %user-id% 和%contact-id%.
SessionType
DWORD
会话类型。
0:本地会话,应用程序只在本地启动。
1:双方会话(缺省)
2:多方会话

ExtensibleMenu
REG_SZ
应用程序将会在哪些菜单上显示:
  MainWindowActions
  MainWindowRightClick
  ConversationWindowActions
  ConversationWindowContextual
  ConversationWindowRightClick


缺省MainWindowRightClickConversationWindowContextual 
多个菜单项目之间用分号(“;”)分隔。

菜单说明

键名称(Key) 说明 MainWindowActions主窗口菜单的[工具]工菜单下MainWindowRightClickOC主窗口联系人[右键]菜单ConversationWindowActions对话窗口菜单的[操作]菜单下ConversationWindowContextual对话窗口的[发送文件]菜单ConversationWindowRightClick对话窗口,联系人列表[右键]菜单定义完成后,重启OC,就可以达到如图所示的效果了。



一步一步学习OC2007(四)--扩展帮助菜单

在OC2007中扩展帮助菜单,也是OC护展中最简单的一项,只要在注册表中注册以下两项就可以了:

  HelpMenuText :帮助菜单名称。
  HelpMenuURL
:帮助内容页面的URL。

注册代码如下:   

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Communicator]
"HelpMenuText"="发送短信帮助"
"HelpMenuURL"=http://localhost/SendNoteHelp/index.htm

 
  重启OC,就可以看到我们的帮助菜单条了,



一步一步学习OC2007(五)--OC与 Web 应用系统的集成

  通过前面几课的学习,大家可能对OC的强大功能有所了解了吧,她的即时通信、她的语音聊天、她的视频会议、她的分组、她的联系人查找等等等,都是其它IM工具所无法比拟的,再加之她的二次开发接口,更是锦上添花。
  前面几课,无论是web 标签页的扩展、OC状态的自定义,还是菜单功能的扩展,都是针对于OC进行扩充与完善。试想,如果一个论坛与OC进行集成,在线人员一栏,就不是一些干涩文字,直接用OC的在线状态显示出来,如果想与之交流,就直接可以用OC进行交流了,如下图所示:

与电话联系表的集成,此时可以直接与对方通过OC 交流,即方便又适用。


与文章管理系统的集成,如果读者看了这篇文章后,有什么感想、有什么心得、或者有什么不同的见解,都可以立即与作者、与审核人员进行OC沟通,再不用另外查找他的通信方式。而且,也不必把对方加入联系人中,就可以直接通信。

    怎么实现呢,其实很简单,请参照下面的代码就,依样画葫芦就可以了。

OC与Web 网页的集成源码

如果想与DataGrid 绑定,也非常简单

C#代码

 

Aspx 代码

 

就这样,短短的几行代码,就会让你的系统,大放异彩。试一试吧,你会有意想不到的收获。

JS 文件下载




posted @ 2008-03-27 12:49  kongkong  阅读(5141)  评论(12编辑  收藏  举报