如何开发接口配合exmobi客户端实现IM即时通讯功能

zhangyihui11@fiberhome
   2015-03-20 17:51:39发布 0收藏, 2589浏览
其他相关技术
0

tbl_persons.zip(0.00M 下载次数:399) Imdb.zip(0.00M 下载次数:383)

一.  基本概念介绍
login.png(0.04M 下载次数:127)
其中的Account Sid和Auth Token是主帐号id和主帐号安全令牌,“主账号”一般来说是IM功能的开发者、管理者使用的,请求容联云SDK的每个接口,都要带上这两个重要参数;下面的两个URL,就是容联云服务端SDK要请求的服务器地址,它分为开发环境和生产环境,项目没有上线前就是开发环境,要连接开发的那个URL。
       下面是要创建应用,点击左侧菜单里的“创建应用”,创建出一个容联云应用,创建完后在显示出来的应用列表里,点击进入应用,
app.png(0.02M 下载次数:121)
可以看到,每个应用都会被分配到一个应用的appId,这个参数也是某些容联云服务端SDK接口要用到的。
       还有一个最关键的问题,既然是IM即时通讯,那么必然是要像微信一样,每个用户都有一个绝不会重复的帐号,这才能互相聊天,那么这个帐号在容联云通讯里,对应的是“子帐号”这个概念,每个用户要想使用容联云进行IM通讯,必须先给每个用户注册一个子帐号。这个给用户注册子帐号的操作,是要通过请求容联云通讯服务端SDK完成的。容联云给返回的子帐号信息包括以下几个参数:
subAccountSid ——子账户Id。由32个英文字母和阿拉伯数字组成的子账户唯一标识符。
subToken——子账户的授权令牌。由32个英文字母和阿拉伯数字组成。
dateCreated——子账户的创建时间。
voipAccount——VoIP号码。由14位数字组成;若应用为语音类,voipAccount 不为空;若应用为短信类,voipAccount 为空。
voipPwd——VoIP密码。由8位数字和字母组成;若应用为语音类,voipPwd不为空;若应用为短信类,voipPwd为空。

二.   模拟环境搭建
       上面说过必须给每个用户建立一个容联云子帐号,在请求创建子帐号的SDK的时候,要求上传一个绝不会重复子帐号名称参数,容联云服务器会根据这个子帐号名称参数创建出子帐号,在实际的项目场景中,我们一般推荐使用业务系统登录账号或者每个人的电子邮箱作为这个子帐号名称参数,那么这个业务系统登录账号或者每个人的email只能是从第三方业务系统中得到。
       首先我们来模拟出一个第三方业务系统,如何模拟?就建立一个数据库就行了,里面放一张存储每个人员信息的表就可以了,这张表里存储人员的名字、业务系统登录账号、邮箱、联系方式、部门等信息。实际上,在实际业务场景中,我们也建议业务系统开放出数据库来给我们将要实现的服务端SDK接口来访问,这是比较方便的获取业务系统人员信息的方式。这张表的结构如下(字段名仅为示例,实际项目中根据项目情况自定字段名),附件中的tbl_persons.zip里有创建此表的sql文件,仅供参考
tblperson.png(0.02M 下载次数:126)


       这个第三方业务系统数据库开放出来以后,我们将要开发的服务端SDK接口就可以访问这个人员数据表,来同步人员信息,给每个人员创建一个容联云的子帐号。

       下面来解决第二个问题——给每个人员创建完子帐号以后,这些人员的子帐号信息存储在哪里呢?如果存储在客户端,那么一个是客户端容量方面会有影响(加入企业人员非常多的情况下),另外一个也不安全(从企业信息安全角度考虑),所以,对于已经创建好的人员子帐号信息,我们再建立一个数据库,存储在里面,这个数据库只能是由我们将要实现的服务端SDK接口服务能够访问的,我们称之为“Im数据库”,为了方便维护操作,笔者把人员子帐号信息分为两张表,一张表用来存放容联云子帐号信息,一张用来存放从业务系统数据库同步来的人员账号信息(这张表相对于业务系统的人员数据表多了一个imgSrc字段,用来存放每个用户自己上传的头像图片路径),两张表之间通过业务系统登录账号这个字段进行一对一的数据关联。附件中的Imdb.zip里有创建这两张表的sql文件,仅供参考
   
members.png(0.04M 下载次数:114) imaccounts.png(0.04M 下载次数:107)

三.  开发服务端SDK接口
      把下载下来的zip包解压,在eclipse中导入这个java web工程,工程结构如下:
construct.png(0.02M 下载次数:120)
      上图中的servlet包下,就是开放出来给外部访问的各种http接口,下面详细介绍下各个接口作用,以及参数要求:
1. CreateSubAccountServlet——从业务系统数据库同步人员信息数据,并根据业务系统登录账号给每个人员创建容联云子帐号,创建完成后写入Im数据库;
    参数体:无;
    响应体:json对象,{result:999},数字代表一共创建成功多个子帐号;
    访问场景:第三方业务系统或者是exmobi应用开发人员统一给所有人员创建容联云子帐号,新增人员时也可再次调用此接口创建;
2. QuerySubAccountInfoServlet——根据业务系统登录账号查询单个人员的容联云子帐号信息;
    访问地址:http://ip:port/ImWeb/
querySubAccount.do  ;method:不限;
    参数体: account=zhangsan ; account参数为第三方业务系统登录账号;
    响应体:json对象: {subAccountSid:abcdefghijklmnopqrstuvwxyz123456,subToken:666961bb08a14f568d42176fe571234,dateCreated:2013-09-27

json.png  (0.01M  下载次数:153次)

下载APP
扫码下载栗子社区APP