Channel API接口

Channel API是供频道服务器调用的。所有的请求都是POST请求,请求body使用json格式。所有接口的调用都必须经过签名。所有的响应数据都是JSON格式。端口使用80端口,不同于Sever API的端口(默认18080)

我们提供有Java版本的SDK,建议使用Java语言的客户使用这个SDK,其它语言可以按照本文档对接。

1. 签名规则

以下参数需要放在Http Request Header中

参数 参数说明
nonce 随机数
timestamp 当前的时间戳,为了防止重放攻击,时间戳与野火IM服务器时间戳差2个小时的请求会被拒绝
sign 签名
cid 频道id

签名的计算方法: sign = sha1(nonce + "|" + SECRET_KEY + "|" + timestamp)。其中SECRET_KEY为频道密钥。

2. Content-Type

"Content-Type": "application/json; charset=utf-8"

3. 响应

所有响应都是如下这个格式。成功时code为0,result为请求返回对于的数据;失败时code为错误码,msg为失败提示。

{
  "code":0,
  "msg":"success",
  "result":{
    "userId":"a"
  }
}

4. 频道属性

频道是可以开放给第三方使用的,因此有着严格的权限要求。频道的到的权限定义请参考频道属性

5. 发送消息

5.0.1. 地址

http://domain/channel/message/send

5.0.2. body

参数 类型 必需 描述
line int 会话线路,默认为0
targets list 指定发送对象,如果为空,将广播所有关注者。如果不为空将发送给指定对象,注意如果目标用户不在关注者列表中将被抛弃
payload json 消息负载

5.0.3. 响应

参数 类型 必需 描述
messageUid long 消息唯一ID
timestamp long 服务器处理时间

5.0.4. 示例

curl -X POST -H "nonce:76616" -H "timestamp":"1558350862502" -H "sign":"b98f9b0717f59febccf1440067a7f50d9b31bdde" -H "Content-Type:application/json" -H "cid":"channelId1" -d   \
  "{                       \
    \"payload\":{                 \
      \"type\":1,                       \
      \"searchableContent\":\"hello\"   \
    }                                   \
  }"                                \
  http://localhost/channel/channel/send

{
  "code":0,
  "msg":"success",
  "result":{
    "messageUid":5323423532,
    "timestamp":13123423234324,
  }
}

6. 获取用户信息

6.0.1. 地址

http://domain/channel/user_info

6.0.2. body

参数 类型 必需 描述
userId string 否(三个参数必须且只能存在一个) 用户ID
name string 否(三个参数必须且只能存在一个) 登录名
mobile string 否(三个参数必须且只能存在一个) 用户手机号码

6.0.3. 响应

参数 类型 必需 描述
userId string 用户ID
name string 登录名
displayName string 显示名字
portrait string 用户头像
mobile string 用户手机号码
email string 用户邮箱
address string 用户地址
company string 用户公司
extra string 附加信息

6.0.4. 示例

curl -X POST -H "nonce:76616" -H "timestamp":"1558350862502" -H "sign":"b98f9b0717f59febccf1440067a7f50d9b31bdde" -H "Content-Type:application/json" -H "cid":"channelId1" -d "{\"userId\":\"a\"}" http://localhost/channel/user_info

{
  "code":0,
  "msg":"success",
  "result":{
    "userId":"a",
    "name":"usera"
  }
}

7. 获取频道信息

7.0.1. 地址

http://domain/channel/get_profile

7.0.2. body

7.0.3. 响应

参数 类型 必需 描述
channelId string 频道ID
name string 频道名称
desc string 频道描述
portrait string 频道头像
extra string 频道附加信息
owner string 频道的拥有者
updateDt string 频道更新日期
callback string 频道回调地址
state int 频道属性
automatic string 消息是否发给owner,0 发送;1 不发送

频道信息

7.0.4. 示例

curl -X POST -H "nonce:76616" -H "timestamp":"1558350862502" -H "sign":"b98f9b0717f59febccf1440067a7f50d9b31bdde" -H "Content-Type:application/json" -H "cid":"channelId1"  http://localhost/channel/get_profile

{
  "code":0,
  "msg":"success",
  "result":{
    "channelId":"channela",
    "name":"channela"
  }
}

8. 修改频道组信息

8.0.1. 地址

http://domain/channel/update_profile

8.0.2. body

参数 类型 必需 描述
type int 修改资料类型
value string

Value在不同的type下具有不同的意义。boolean值转化为"0"和"1", int类型转化为字符串,比如“1”/”2“/“3”。

type type含义 value类型 value含义
0 频道名 string 频道名称
1 频道头像 string 频道头像链接地址
2 频道描述 string 频道描述
3 频道extra string 频道附加信息
4 频道密钥 string 频道密钥
5 频道回调地址 string 频道回调地址
6 频道仅回调 bool 频道的消息只回调给频道服务,不推送给频道的owner

8.0.3. 响应

8.0.4. 示例

curl -X POST -H "nonce:76616" -H "timestamp":"1558350862502" -H "sign":"b98f9b0717f59febccf1440067a7f50d9b31bdde" -H "Content-Type:application/json" -H "cid":"channelId1" -d "{\"type\":0,\"value\":\"野火官方频道\"}" http://localhost/channel/update_profile

{
  "code":0,
  "msg":"success"
}

9. 订阅/取消订阅频道

9.0.1. 地址

http://domain/channel/subscribe

9.0.2. body

参数 类型 必需 描述
target string 目标用户
subscribe int 1 订阅;0 取消订阅

9.0.3. 响应

9.0.4. 示例

curl -X POST -H "nonce:76616" -H "timestamp":"1558350862502" -H "sign":"b98f9b0717f59febccf1440067a7f50d9b31bdde" -H "Content-Type:application/json" -H "cid":"channelId1" -d "{\"type\":0,\"value\":\"野火官方频道\"}" http://localhost/channel/subscribe

{
  "code":0,
  "msg":"success"
}

10. 查询所有订阅者ID

10.0.1. 地址

http://domain/channel/subscriber_list

10.0.2. body

10.0.3. 响应

参数 类型 必需 描述
list list 订阅用户ID列表

10.0.4. 示例

curl -X POST -H "nonce:76616" -H "timestamp":"1558350862502" -H "sign":"b98f9b0717f59febccf1440067a7f50d9b31bdde" -H "Content-Type:application/json" -H "cid":"channelId1" " http://localhost/channel/subscriber_list

{
  "code":0,
  "msg":"success",
  "result":{
    "list":["a","b"]
  }
}

11. 验证用户

此方法是用于开放平台应用验证用户身份的,详情请参考开放平台.

11.0.1. 地址

http://domain/channel/application/get_user_info

11.0.2. body

参数 类型 必需 描述
authCode string 验证码(前端页面通过jssdk调用im sdk获取得到)

11.0.3. 响应

参数 类型 必需 描述
userId string 用户ID
displayName string 否(如果存在用户信息则一定存在) 用户昵称
portraitUrl string 否(如果存在用户信息则一定存在) 用户头像

11.0.4. 示例

curl -X POST -H "nonce:76616" -H "timestamp":"1558350862502" -H "sign":"b98f9b0717f59febccf1440067a7f50d9b31bdde" -H "Content-Type:application/json" -H "cid":"channelId1" -d "{\"authCode\":\"auth_code\"}" http://localhost/channel/application/get_user_info

{
  "code":0,
  "msg":"success"
  "result":{
    "userId":"userid1",
    "dispalyName":"name1",
    "portraitUrl":"url"
  }
}

12. config签名

此方法是用于签名当前应用,应用前端页面调用jssdc来认证应用,详情请参考开放平台.

12.0.1. 签名方法

此功能不涉及与IM服务交互,在本地按照规则签名,然后再经JSSDK调用IMSDK,最终在IM服务使用同样的规则验证。

签名的计算方法: sign = sha1(nonce + "|" + channelId + "|" + timestamp + "|" + channelSecret)。其中channelSecret为频道的密钥。客户端调用jssdk的config方法的参数appid、apptype、timestamp、signature分别对应channelId、1、签名的时间戳、签名。

2018 © wildfirechat.net 京ICP备18060403号-1 all right reserved,powered by Gitbook该文件修订时间: 2022-05-21 20:12:27

results matching ""

    No results matching ""