消息推送开发指南

部署在WorkPlus平台应用中心中的各种应用——包括轻应用、iOS和Android原生应用——可以通过WorkPlus平台向用户发送包括文本和图文在内的各种消息。

本文具体描述消息发送请求和响应的详细格式。

1. 支持的消息类型

WorkPlus支持下列的消息类型:

  • 文本消息TEXT
  • 图片消息IMAGE
  • 语音消息VOICE
  • 文件消息FILE
  • 图文消息ARTICLE

2. 消息推送API

WorkPlus通过REST向外界暴露API。发送所有类型消息的API都是下面这个:

POST https://api.workplus.io/app/mbox?access_token={access_token}

(如果您的WorkPlus是私有化部署,请根据实际情况修改API服务器的域名/IP和端口)

请把{access_token}替换为你的应用登录WorkPlus后获得的access_token。获取access_token的方法请参考应用快速接入与单点登录指南

3. HTTP HEADER设置

WorkPlus RESTful API的请求和响应的媒体类型都是JSON。因此,发送消息时必须设置以下的HTTP HEADER:

Content-Type="application/json"

4. 请求参数

请求参数是个JSON对象,下面是个文本消息请求参数的例子,要将文本消息“你好!”推送给名为"zhangsan", "lisi"的两个用户:

{
    "type": "TEXT",
    "body": {
        "content": "你好!"
        "dest_type": "P2P"
    },
    "client_ids": ["zhangsan", "lisi"]
}

每种消息类型都包含type、body和client_ids三个属性。

参数名称 说明 类型 是否必填
type 消息类型,有TEXT(文本)、图片(IMAGE)、VOICE(语音)、VIDEO(视频)、FILE(文件)、ARTICLE(图文)等几种类型 string true
body 消息体。不同类型的消息的消息体内容各不相同 JSON对象 true
client_ids 接收方的username列表。可以同时向一个或一个以上的人发送同一条消息 JSON数组 true

不同的消息type具有不同的body结构(下文会详细介绍)。

各种消息请求的body对象中都有个必填的dest_type属性,其取值范围只有P2P和DISCUSSION。当dest_type=P2P时,消息发送给个人(client_ids是用户名的列表);当dest_type=DISCUSSION时,消息发送给群组(client_ids是群组名称的列表)。

4.1 文本消息TEXT

范例:

{
    "type": "TEXT",
    "body": {
        "content": "你好!"
        "dest_type": "P2P"
    },
    "client_ids": ["zhangsan", "lisi"]
}

当请求对象的type="TEXT"时,body对象包含下列属性:

参数名称 说明 类型 是否必填
content 要推送的文本消息内容 文本 true

4.2 图片消息IMAGE

范例:

{
    "type" : "IMAGE",
    "body": {
        "media_id": "56722e6d83143c4999b45843",
        "content" : "/9j/4AAQSkZJRgABAQAASABIAAD/"
        "dest_type": "DISCUSSION"
    }
    "client_ids": ["dev"]
}

当请求对象的type="IMAGE"时,body对象包含下列属性:

参数名称 说明 类型 是否必填
media_id 要推送的图片在WorkPlus媒体中心中的媒体ID 文本 true
content 要推送的图片内容 文本 true

4.3 语音消息VOICE

范例:

{
    "type": "VOICE",
    “body”: {
        "media_id": "56722ac083143c4999b4583f",
        "played": "YES",
        "duration": 2,
        "dest_type": "P2P"
    }
    "client_ids": ["zhangsan", "lisi"]
}

当请求对象的type="IMAGE"时,body对象包含下列属性:

参数名称 说明 类型 是否必填
media_id 要推送的音频在WorkPlus媒体中心中的媒体ID 文本 true
played 是否即时播放 布尔值 true
duration 播放时长(秒) 整数 true

4.4 文件消息FILE

范例:

{
    "type": "FILE",
    “body”: {
        "media_id": "5672706f83143c4999b45849",
        "name": "HTTP-RFC2616.pdf",
        "size" : 713185
        "dest_type": "P2P"
    }
    "client_ids": ["zhangsan", "lisi"]
}

当请求对象的type="FILE"时,body对象包含下列属性:

参数名称 说明 类型 是否必填
media_id 要推送的文件在WorkPlus媒体中心中的媒体ID 文本 true
name 文件名 文本 true
size 文件长度(字节) 整数 true

4.5 图文消息ARTICLE

范例:

{
    "type": "ARTICLE",
    "body": {
        "articles": 
            [
                {
                    "url" : "文章打开地址",
                    "show_cover" : true,
                    "cover_url" : "图文封面图片url",
                    "summary" : "文章摘要",
                    "create_time" : 1433314282603,
                    "content_source" : "文章原文链接",
                    "author" : "文章作者",
                    "sort" : 0,
                    "title" : "文章标题",
                    "content" : "<p>文章内容</p>"
                }
            ]
        "dest_type": "P2P"
    },
    "client_ids": ["zhangsan", "lisi"]
}

当请求对象的type="ARTICLE"时,body对象包含单一属性articles,它本身是一个JSON数组,包含一个或多个JSON对象,这些该对象有下列的属性:

参数名称 说明 类型 是否必填
url 文章的URL 文本 true
show_cover 是否显示封面图片 布尔值 true
cover_url 图文封面图片的URL 文本 true
summary 文章摘要 文本 false
create_time 用数值表示的创建时间 整数 true
content_source 文章原文链接 文本 false
author 文章作者 文本 false
sort 排序号(按由小到大顺序排列) 整数 true
title 文章标题 文本 true
content 文章内容 文本 true

5. 响应格式

消息推送的响应同样是个JSON对象。

5.1 成功响应

成功响应的范例:

{
    "status": 0,
    "message": "Everything is ok.",
    "result": {
        "id": "推送计划ID",
        "app_id": "应用id",
        "tenant_id": "租户id",
        "material_id": "",
        "expects": "",
        "fails": "",
        "oks": "",
        "create_time": "创建时间",
        "refresh_time": "刷新时间",
        "expect_time": ""
    }
}

说明:

参数名称 说明 类型 是否必填
status 执行状态。0为正常,各种非0值代表各种不同的异常 整数 true
message 执行结果说明。如果一切正常,内容为"Everything is ok."。如果执行异常,呈现异常消息 文本 true
result 执行结果内容 JSON对象 true

result对象的属性说明如下:

参数名称 说明 类型 是否必填
id 自动生成的消息ID 文本 true
app_id 发送消息的应用的ID 文本 true
tenant_id 所属租户的ID 文本 true
material_id 所属租户的ID 文本 true
expects 文本 true
fails 文本 true
oks 文本 true
create_time 消息创建时间 文本 true
refresh_time 刷新时间 文本 true
expect_time 文本 true

5.2 失败响应

失败响应的范例:

{
    "status": 115,
    "message": "Internal Server Error.",
    "result": {
    }
}

属性说明同成功响应。不过status属性是非0整数。

results matching ""

    No results matching ""