设为首页 收藏本站
查看: 1251|回复: 0

[经验分享] 实战IBM Lotus Sametime 8.5 Web Client API

[复制链接]

尚未签到

发表于 2015-10-3 14:13:53 | 显示全部楼层 |阅读模式
  IBM Lotus Sametime 8.5 Web 客户端
  概述
  Lotus Sametime 8.5 版本开始支持纯网页版的客户端,并且提供了灵活的网页版客户端的定制方式。这就让企业应用开发人员可以通过一些公共 API 将 Lotus Sametime 的即时聊天,会议等功能绑定到企业应用中,企业应用因此能使其用户具有实时沟通协作的能力。
  公共 API 简介
  Sametime Web 版公共 API 从架构上自底向上可以分为三个层次:REST API,基本功能模块以及 UI API。
  REST API 是一些底层的与 Sametime 服务器交互数据的 API,这一层比较复杂并且不影响 Sametime Web 端的 UI 展现,不建议用户在这一层做任何修改。
  REST API 上面一层就是由一些 Javascript 对象包装起来的基本功能模块,这些模块封装了 REST API 的低层调用,并构成了 Sametime UI 的基础,但不包含任何 UI 的展现。
  UI API 是 Sametime 8.5 Web 版本的核心部件,它们实际上是由一系列的 Dojo 类组成。用户可以有选择性的引入部分 Dojo 组件来将 Sametime 8.5 的 Web 版本引入到各种 Web 应用中。
  引入 Sametime Web 版的几个主要步骤
  引入 Sametime Web 版主要是通过加载一些 Javascript 文件。清单 1 是一段示例的代码。

清单 1. 加载 Sametime Web 版
  <script type="text/javascript"   src="http://www.yoursametimeproxy.com:port /stbaseapi/baseComps.js"></script>   <script type="text/javascript">   var stproxyConfig = {   server: "http://www.yoursametimeproxy.com:portnumber"  }   // Dojo configuration: see Dojo Toolkit documentation   var djConfig = {   parseOnLoad: true   };   </script>  

  另外,为了保证 Sametime Web 版能正常显示,需要在 HTML 的 body 元素上加上一个 class=&#8221;tundra&#8221;,因为 Sametime Web 版是基于 Dojo toolkit 来构建的。

回页首
  UI 定制的 API
  UI widget 介绍
  如果说之前的一些 API 介绍的是 Sametime 核心的功能,那么从这一部分开始就是直接操纵或者定制 Sametime UI 了。Sametime 8.5 Web 版 UI 是基于 Dojo 开发的,所有 Sametime 默认提供的 Web UI 组件都具有了 Dojo 组件可扩展的优点。用户可以通过初始化以下这些 Sametime Dojo 类来生成相应的 Sametime UI。

  • sametime.WebClient
  • sametime.Awareness
  • sametime.QuickFind
  • sametime.LiveName
  • sametime.Chat
  • sametime.GroupChat
  • sametime.UserInfo
  • sametime.BusinessCard
  当然,一些额外的 Javascript 库以及 css 还需要在用户的页面上提前加载,如清单 3 所示。

清单 3. 加载 widget 所需资源
  <link rel="stylesheet" type="text/css"   href="/stwebclient/dojo_1.2.3/sametime/themes/ WebClientAll.css" />   <script type="text/javascript" src="/stbaseapi/baseComps.js"></script>   <script type="text/javascript"   src="/stwebclient/dojo_1.2.3/dojo/dojo.js"></script>   <script type="text/javascript" src="/stwebclient/widgets.js"></script>  

  这里以 sametime.Chat 为例来看该类是如何使用的。sametime.Chat 封装了一个聊天窗口的 UI 以及部分主要的窗口行为。用户可以使用 HTML 的方式来初始化该类,也可以用 Javascript 来创建该类的实例。
  1. HTML 声明方式:
<div dojoType="sametime.Chat" userid="foo"></div>  

  2. 用 Javascript 代码创建实例:
var client = new sametime.Chat({});  

  运行任意一种方式都可以得到如图 1 所示 UI。

图 1. Sametime Web 版聊天窗口示例
DSC0000.jpg
  如何扩展 UI widget
  对上述 UI widget 的扩展跟一般的 Dojo widget 扩展没有本质区别,都是需要对一些 Javascript 方法进行覆盖,或者在加载 widget 前修改部分参数。这里限于篇幅,我们来讨论几个具体的例子来看看在实战中如何扩展 UI widget。
  配置 Sametime UI
  全局对象 stproxyConfig 是用于修改用户需要的默认 Sametime Web UI 的。该对象中有几个属性非常有用:

  • cssUrl:用户想加载的额外的 CSS 文件路径。
  • jsUrl:用户想加载的额外的 Javascript 文件路径。
  • plugins:定义当前 UI 可以加载的各个 plugin 及其是否启用。具体形式为:
    plugins: {  "mmpFile": false,  "cmpTools": false,  "lnmpRemove": false   }  

      其中 mmpFile 即为一个 plugin。Sametime 自带的所有 plugin 请查阅参考资料中的相关产品文档。
  在聊天窗口中增加一个自定义的菜单
  默认的聊天窗口上面有三个菜单,如图 1 所示,分别是 File, Tools, Help。分别对应的菜单 ID 是 stproxy_fileMenu,stproxy_toolsMenu,stproxy_helpMenu。通过以下两个步骤,用户可以很轻松的做到在其中某个菜单下增加新的菜单项:
  1. 修改 stproxyConfig 对象,使之加载一个额外的 Javascript 文件,该文件将提供定制聊天窗口的 Javascript 代码

清单 4. 修改 stproxyConfig
  <script type="text/javascript">   var stproxyConfig =   {server:" http://www.yoursametimeproxy.com", jsUrl: "myChatWindow.js"}   </script>  

  2. 编辑 myChatWindow.js 的内容,将该菜单项加入到现有的 Tools (stproxy_toolsMen) 下面。

清单 5. myChatWindow 示例代码
  stproxy.uiControl.addChatMenuPlugin({   id:"myMenuId",   label: "my Menu Label",   menuId: "stproxy_toolsMenu",   isShowEntry: function(widgets) {},   onClick: function(mainWindow) {}   });  

  用户可以根据自己的逻辑需要来加入 Javascript 代码在 isShowEntry 和 onClick 中。isShowEntry 将会判断是否需要显示该菜单项,onClick 方法将会在用户点击菜单项时触发。在这两个方法中,用户可以调用 Dojo 基础的一些 API。
  把聊天窗口嵌在当前页面
  当用户调用到 sametime.WebClient 时,Sametime 的默认行为是把聊天窗口在一个新的浏览器窗口展现出来,要想做到把聊天窗口嵌入到当前页面,用户需要把聊天窗口的打开方法重写掉。
  1. 创建一个 Dojo 的 tab container 来包住用户想嵌入的聊天窗口

清单 6. tab container
  <div dojoType="dojo.layout.TabContainer">   <div dojoType="dijit.layout.ContentPane">   <div dojoType="sametime.WebClient"></div>   </div>   </div>  

  2. 将 stproxy.createChat 方法覆写,这段 Javascript 代码可以放在页面加载的过程中。

清单 7. 覆盖 createChat 方法
  stproxy.createChat = function(partnerId) {   var chat = new sametime.Chat({partnerId: partnerId});   var tab = new dijit.layout.ContentPane({   closable: true,   title:stproxy.STProxy.getDisplayName(partnerId)   });   tab.containerNode.appendChild(chat.domNode);   tabContainer.addChild(tab);   tabContainer.selectChild(tab);   return chat;   }  

  参考资料
  学习

  • 阅读 使用 IBM Lotus Sametime 监控可用性、性能和基础架构以及其他要素。
  • 阅读 IBM Lotus Sametime Server 故障诊断与排除。
  • 参考 IBM Lotus Sametime wiki。
  • 参考 IBM Lotus Sametime 主页。
  • 在 Sametime 论坛中获得帮助。
  • 访问 developerWorks Lotus 专区。
  • 随时关注 developerWorks 技术活动和网络广播。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-122199-1-1.html 上篇帖子: IBM高层李清平壮年辞世 IT过劳死让人忧[转] 下篇帖子: 专访IBM HR规划经理张榕 探求IBM招聘经
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表