学习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 将不能生效。其它属性没有检验过。
在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)
会话窗口的动作菜单(TheActions 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
缺省MainWindowRightClick 和ConversationWindowContextual
多个菜单项目之间用分号(“;”)分隔。
菜单说明
键名称(Key) 说明 MainWindowActions 主窗口菜单的[工具] 工菜单下MainWindowRightClick OC主窗口联系人[右键] 菜单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 应用系统的集成
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>
IIS发布方式可以有HTTP、HTTPS这两种方式(如果为HTTPS,则必须将该站点加入IE的信任站点列表中)。
说明:发布方式还可以通过文件共享的方式,但不推荐这种方式。
最后说明两点:
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配置文件
</tabdata>
XML文件中,各元素的详细说明如下:
(“true” | “false”)
缺省:false
“inside” |
“outside” |
“both”)
inside :仅在内部登录时显示;
outside:仅在外部登录时显示;
both:都显示
HTTP:
HTTPS: 确认要在IE浏览器中可正确访问,如果不能访问,请将该站点加入IE的信任站点列表中。
文件共享:其书写规则为: [url=file:///c:/intput/wwwroot/OcsConfig/Tab/tabURL.xml]file:///c:/intput/wwwroot/OcsConfig/Tab/
三、注册XML文件
也可编辑一个reg 文件,直接导入即可:
在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 页面,比如:
(2)如果需要将当前选中的联系人、联系人分组信息传到web 页面,有一个脚本函数可以使用
今天就写到这里了,其实,这里面还有很多很炫的功能,希望能和大家一起讨论,下一堂课,将讲述
一步一步学习OC2007(三)--定制菜单命令
在前面的两篇文章中,我们讲了如何定制联系人的在线状态,如何定制web 标签页,是不是对OC2007 的魔力有所感触了呢?其实,这只是一个引言,一道开胃菜而已,后面还有更多的大餐等着你呢?今天,我们就一起来谈谈,如何定制OC2007的菜单命令?
OC2007中,有三种类型的菜单:
工具栏菜单(
会话窗口的动作菜单(The
联系人窗口右键菜单(The right-click menu off the Contact List)
在这些菜单列表中,都可以扩充我们的自定义菜单项。
在OC2007 中,扩展菜单项,比扩展web 标签页,要容易一些,只要在注册表中定义清楚菜单项的各项属性就可以正常运行。如下代码所示:
各注册键说明如下:
REG_SZ
菜单命令名称
应用程序类型:0:可执行文件;1:协议
REG_SZ
当
REG_SZ
应用程序的完整路径及其参数,缺省参数 %user-id% 和%contact-id%.
DWORD
会话类型。
0:本地会话,应用程序只在本地启动。
1:双方会话(缺省)
2:多方会话
REG_SZ
应用程序将会在哪些菜单上显示:
MainWindowRightClick
ConversationWindowActions
ConversationWindowContextual
ConversationWindowRightClick
缺省
多个菜单项目之间用分号(“;”)分隔。
菜单说明
一步一步学习OC2007(四)--扩展帮助菜单
在OC2007中扩展帮助菜单,也是OC护展中最简单的一项,只要在注册表中注册以下两项就可以了:
注册代码如下:
重启OC,就可以看到我们的帮助菜单条了,
通过前面几课的学习,大家可能对OC的强大功能有所了解了吧,她的即时通信、她的语音聊天、她的视频会议、她的分组、她的联系人查找等等等,都是其它IM工具所无法比拟的,再加之她的二次开发接口,更是锦上添花。
前面几课,无论是web 标签页的扩展、OC状态的自定义,还是菜单功能的扩展,都是针对于OC进行扩充与完善。试想,如果一个论坛与OC进行集成,在线人员一栏,就不是一些干涩文字,直接用OC的在线状态显示出来,如果想与之交流,就直接可以用OC进行交流了,如下图所示:
与电话联系表的集成,此时可以直接与对方通过OC 交流,即方便又适用。
与文章管理系统的集成,如果读者看了这篇文章后,有什么感想、有什么心得、或者有什么不同的见解,都可以立即与作者、与审核人员进行OC沟通,再不用另外查找他的通信方式。而且,也不必把对方加入联系人中,就可以直接通信。
怎么实现呢,其实很简单,请参照下面的代码就,依样画葫芦就可以了。
OC与Web 网页的集成源码
如果想与DataGrid 绑定,也非常简单
C#代码
Aspx 代码
就这样,短短的几行代码,就会让你的系统,大放异彩。试一试吧,你会有意想不到的收获。