# 消息管理接口

# 获取当前会话存档的配置状态

GET https://hub.juzibot.com/api/v1/message/configStatus?token=***

# 请求参数:

名称 类型 是否必须 备注
token string 调用接口凭证

# 返回示例:

{
  errcode: 0,
  errmsg: 'ok',
}

# 返回参数说明:

参数 类型 必定存在 备注
errcode number 返回码
errmsg string 对返回码的文本描述内容

# 错误码:

错误码 说明
-1 系统错误
-2 不存在会话存档配置
-3 secret无效
-4 空数据

# 获取消息的媒体链接

GET https://hub.juzibot.com/api/v1/message/getMediaUrl?token=***

# 请求参数:

名称 类型 是否必须 备注
token string 调用接口凭证
seq string 消息的seq

# 返回示例:

{
  errcode: 0,
  errmsg: 'ok',
  mediaUrl: '',
}

# 返回参数说明:

参数 类型 必定存在 备注
errcode number 返回码
errmsg string 对返回码的文本描述内容
mediaUrl string 消息的mediaUrl

# 错误码:

错误码 说明
-1 该消息不存在mediaUrl
-2 该消息的mediaUrl未处理完成,请稍后重试
-3 该消息不存在

# 拉取消息

POST https://hub.juzibot.com/api/v1/message/get?token=***

# 请求参数:

名称 类型 是否必须 备注
token string 调用接口凭证
pageSize number 每次拉去多少条消息
seq number 拉取自此seq以后发生的消息
date string 字符串格式为 YYYY-MM-DD, 例如:'2020-11-20

TIP

  1. pageSize 每页数据条数, 不能超过500。

# 返回示例:

{
  {
  errcode: 0,
  errmsg: 'ok',
  seq: 1,
  data: [{
    wxMessageId: '8999998875080674547_1597906666',
    action: 1,
    fromId: 'string',
    roomId: 'wraHgNCAAA9sssUo6C3K_FEuiIA4FUdd',
    toList: ['wxUserId','externalContactId'],
    timestamp: 1597903969925,
    messageType: 1,
    message: object
  }]
}

# 返回参数说明:

参数 类型 必定存在 备注
errcode number 返回码
errmsg string 对返回码的文本描述内容
seq string 当不存在消息时返回undefined, 下次拉取消息起始
data.wxMessageId string 消息id
data.seq string 消息seq
data.action number 1 发送消息 2 撤回消息
data.fromId string 消息发送方id。同一企业内容为userId,非相同企业为external_userId。消息如果是机器人发出,也为external_userId
data.roomId number 群聊消息的群id。如果是单聊则为空
data.toList array 消息接收方列表,可能是多个,同一个企业内容为userId,非相同企业为external_userId
data.timestamp number 消息发送时间戳,utc时间,ms单位
data.messageType number 消息类型
data.message object 消息结果 具体在下方

# 错误码:

错误码 说明
-2 不存在会话存档配置

# 文本 类型

# 返回示例:

{
  messageType: 1,
  action: 1,
  message: {
    content: '这是一条引用/回复消息:\n'nick\n666'\n------\n@nick777'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 1 文本
action number 1 发送消息
message.content string 消息内容

# 图片 类型

# 返回示例:

{
  messageType: 2,
  action: 1,
  message: {
    md5sum: '50de8e5ae8ffe4f1df7a93841f71993a',
    filesize: 70961,
    sdkfileid: 'CtYBMzA2OTAyMDEwMjA0NjIzMDYwMDIwMTAwMDIwNGI3ZmU0MDZlMDIwMzBmNTliMTAyMDQ1YzliNTQ3NzAyMDQ1YzM3M2NiYzA0MjQ2NjM0MzgzNTM0NjEzNTY1MmQzNDYxMzQzODJkMzQzMTYxNjEyZDM5NjEzOTM2MmQ2MTM2NjQ2NDY0NjUzMDY2NjE2NjM1MzcwMjAxMDAwMjAzMDExNTQwMDQxMDUwZGU4ZTVhZThmZmU0ZjFkZjdhOTM4NDFmNzE5OTNhMDIwMTAyMDIwMTAwMDQwMBI4TkRkZk1UWTRPRGcxTVRBek1ETXlORFF6TWw4eE9UUTVOamN6TkRZMlh6RTFORGN4TWpNNU1ERT0aIGEwNGQwYWUyM2JlYzQ3NzQ5MjZhNWZjMjk0ZTEyNTkz',
    mediaUrl: 'https://juzi-work-message-media.s3.cn-northwest-1.amazonaws.com.cn/message/ww5ecc1acd5dce6e9d/b78f354290726e8c37771207b687b381/image.png'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 2 图片
action number 1 发送消息
message.md5sum string 图片资源的md5值,供进行校验
message.filesize number 图片资源的文件大小
message.sdkfileid string 媒体资源的id信息
message.mediaUrl string 资源下载url

# 撤回消息 类型

# 返回示例:

{
  messageType: 3,
  action: 2,
  message: {
    pre_msgid: '14822339130656386894_1603875600'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 3 撤回消息
action number 2 撤回消息
message.pre_msgid string 标识撤回的原消息的msgid

# 同意会话聊天内容 类型

# 返回示例:

{
  messageType: 4,
  action: 1,
  message: {
    userid: 'wmGAgeDQAAvQeaTqWwkMTxGMkvI7OOuQ',
    agree_time: 1603875826656
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 4 同意会话
action number 1 发送消息
message.userid string 同意协议者的userid,外部企业默认为external_userid
message.agree_time number 同意协议的时间,utc时间,ms单位

# 不同意会话聊天内容 类型

# 返回示例:

{
  messageType: 5,
  action: 1,
  message: {
    userid: 'wmGAgeDQAAvQeaTqWwkMTxGMkvI7OOuQ',
    agree_time: 1603875826656
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 5 不同意会话
action number 1 发送消息
message.userid string 同意协议者的userid,外部企业默认为external_userid
message.agree_time number 同意协议的时间,utc时间,ms单位

# 语音 类型

# 返回示例:

{
  messageType: 6,
  action: 1,
  message: {
    md5sum: '9db09c7fa627c9e53f17736c786a74d5',
    voice_size: 6810,
    play_length: 10,
    sdkfileid: 'kcyZjZqOXhETGYxajB2Zkp5Rk8zYzh4RVF3ZzZGdXlXNWRjMUoxVGZxbzFTTDJnQ2YxL0NraVcxUUJNK3VUamhEVGxtNklCbjZmMEEwSGRwN0h2cU1GQTU1MDRSMWdTSmN3b25ZMkFOeG5hMS90Y3hTQ0VXRlVxYkR0Ymt5c3JmV2VVcGt6UlNXR1ZuTFRWVGtudXVldDRjQ3hscDBrMmNhMFFXVnAwT3Y5NGVqVGpOcWNQV2wrbUJwV01TRm9xWmNDRVVrcFY5Nk9OUS9GbXIvSmZvOVVZZjYxUXBkWnMvUENkVFQxTHc2N0drb2pJT0FLZnhVekRKZ1FSNDU3ZnZtdmYvTzZDOG9DRXl2SUNIOHc9PRI0TkRkZk56ZzRNVE13TVRjMk5qQTRNak0yTmw4ek5qRTVOalExTjE4eE5qQXpPRGMxTmpBNRogNzM3MDY2NmM2YTc5Njg3NDdhNzU3NDY0NzY3NTY4NjY=',
    mediaUrl: 'https://juzi-work-message-media.s3.cn-northwest-1.amazonaws.com.cn/message/ww5ecc1acd5dce6e9d/345f1eb267bd34c9cb85007278553f24/voice.amr'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 6 语音
action number 1 发送消息
message.md5sum string 资源的md5值,供进行校验
message.voice_size number 语音消息大小
message.play_length number 播放长度
message.sdkfileid string 媒体资源的id信息
message.mediaUrl string 资源下载url

# 视频 类型

# 返回示例:

{
  messageType: 7,
  action: 1,
  message: {
    md5sum: 'd06fc80c01d6fbffcca3b229ba41eac6',
    filesize: 15169724,
    play_length: 108,
    sdkfileid: 'MzAzMjYxMzAzNTYzMzgzMjMyMzQwMjAxMDAwMjA0MDBlNzc4YzAwNDEwZDA2ZmM4MGMwMWQ2ZmJmZmNjYTNiMjI5YmE0MWVhYzYwMjAxMDQwMjAxMDAwNDAwEjhORGRmTVRZNE9EZzFNREEyTlRjM056QXpORjgxTWpZeE9USTBOek5mTVRZd016ZzNOVFl5Tnc9PRogNTIzNGQ1NTQ5N2RhNDM1ZDhlZTU5ODk4NDQ4NzRhNDk=',
    mediaUrl: 'https://juzi-work-message-media.s3.cn-northwest-1.amazonaws.com.cn/message/ww5ecc1acd5dce6e9d/c11a6f90611a58a35b6dd46ac514fc58/video.mp4'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 7 视频
action number 1 发送消息
message.md5sum string 资源的md5值,供进行校验
message.filesize number 资源的文件大小
message.play_length number 播放长度
message.sdkfileid string 媒体资源的id信息
message.mediaUrl string 资源下载url

# 名片 类型

# 返回示例:

{
  messageType: 8,
  action: 1,
  message: {
    corpname: '微信联系人',
    userid: 'wmGAgeDQAAGjFmfnP7A3j2JxQDdLNhSw'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 8 名片
action number 1 发送消息
message.corpname string 名片所有者所在的公司名称
message.userid string 名片所有者的id,同一公司是userid,不同公司是external_userid

# 位置 类型

# 返回示例:

{
  messageType: 9,
  action: 1,
  message: {
    longitude: 116.586285899,
    latitude: 39.911125799,
    address: '北京市xxx区xxx路xxx大厦x座',
    title: 'xxx管理中心',
    zoom: 15
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 9 位置
action number 1 发送消息
message.longitude number 经度
message.latitude number 纬度
message.address string 地址信息
message.title string 位置信息的title
message.zoom number 缩放比例

# 表情 类型

# 返回示例:

{
  messageType: 10,
  action: 1,
  message: {
    type: 1,
    width: 290,
    height: 290,
    imagesize: 962604,
    md5sum: '94c2b0bba52cc456cb8221b248096612',
    sdkfileid: '4eE1ESTVNalE1TnprMFh6RTJNRE00TnpVMk1UST0aIDc0NzI2NjY1NzE3NTc0Nzg2ZDZlNzg2YTY5NjY2MTYx',
    mediaUrl: 'https://juzi-work-message-media.s3.cn-northwest-1.amazonaws.com.cn/message/ww5ecc1acd5dce6e9d/3fcc0e33feb95536bc362ab8caeeec68/emotion.gif'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 10 表情
action number 1 发送消息
message.type number 表情类型,png或者gif.1表示gif 2表示png
message.width number 表情图片宽度
message.height string 表情图片高度
message.imagesize string 资源的文件大小
message.md5sum string 资源的md5值
message.sdkfileid string 媒体资源的id信息
message.mediaUrl string 资源下载url

# 文件 类型

# 返回示例:

{
  messageType: 11,
  action: 1,
  message: {
    md5sum: 'e4851a68731a228ad70a0039da361d28',
    filename: '【第20期】小程序导流到企微案例.pdf',
    fileext: 'pdf',
    filesize: 1104095,
    sdkfileid: 'CiA2Zjk0NDEzMWNjMWJjYThlZjI5ZjllNjIzNDBhMWYwZBI4TkRkZk56ZzRNVE13TURRNE5Ua3pNVFUwT0Y4NE1EZ3hNRFl3TURkZk1UWXdNRFU1TWpBd01RPT0aIDBhNTY5MmZjZTQ3NWUzMDkwMGUxOGQ1YWFmMzljN2Fk',
    mediaUrl: 'https://juzi-work-message-media.s3.cn-northwest-1.amazonaws.com.cn/message/ww5ecc1acd5dce6e9d/【第20期】小程序导流到企微案例.pdf/e4851a68731a228ad70a0039da361d28'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 11 文件
action number 1 发送消息
message.md5sum string 资源的md5值
message.filename string 文件名称
message.fileext string 文件类型后缀
message.filesize number 文件大小
message.sdkfileid string 媒体资源的id信息
message.mediaUrl string 资源下载url

# 链接 类型

# 返回示例:

{
  messageType: 12,
  action: 1,
  message: {
    title: '邀请你加入群聊',
    description: '技术支持群,进入可查看详情',
    link_url: 'https://work.weixin.qq.com/wework_admin/external_room/join/exceed?vcode=xxx',
    image_url: 'https://wework.qpic.cn/wwpic/xxx/0'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 12 链接
action number 1 发送消息
message.title string 消息标题
message.description string 消息描述
message.link_url string 链接url地址
message.image_url string 链接图片url

# 小程序消息 类型

# 返回示例:

{
  messageType: 13,
  action: 1,
  message: {
    title: '开始聊天前请仔细阅读服务须知事项',
    description: '客户需同意存档聊天记录',
    username: 'xxx@app',
    displayname: '服务须知'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 13 小程序消息
action number 1 发送消息
message.title string 消息标题
message.description string 消息描述
message.username string 用户名称
message.displayname string 小程序名称

# 会话记录消息 类型

# 返回示例:

{
  messageType: 14,
  action: 1,
  message: {
    title: "群聊",
    item: [{
      type: "ChatRecordText",
      msgtime: 1603875610,
      content: "{\"content\":\"test\"}",
      from_chatroom: false
    }, {
      type: 'ChatRecordText",
      msgtime: 1603875620,
      content: "{\"content\":\"test2\"}",
      from_chatroom: false
    }]
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 14 会话记录消息
action number 1 发送消息
message.title string 聊天记录标题
message.item array 消息记录内的消息内容,批量数据
message.item.type string ChatRecordText/ ChatRecordFile/ ChatRecordImage/ ChatRecordVideo/ ChatRecordLink/ ChatRecordLocation/ ChatRecordVoice/ ChatRecordCard /ChatRecordMixed /ChatRecordEmotion /chatrecord
message.item.msgtime number 消息时间,utc时间,ms单位
message.item.content string 消息内容。Json串,内容为对应类型的json
message.item.from_chatroom boolean 是否来自群会话

# 待办消息 类型

# 返回示例:

{
  messageType: 15,
  action: 1,
  message: {
    title: "XX创建的待办",
    content: "todo1"
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 15 待办消息
action number 1 发送消息
message.title string 代办的来源文本
message.content string 代办的具体内容

# 投票消息 类型

# 返回示例:

{
  messageType: 16,
  action: 1,
  message: {
    votetitle: "投票主题",
    voteitem: ["早上","中午","晚上"],
    votetype: 101,
    voteid: "4a285e038cd509b33bad86747a9a4426"
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 16 投票消息
action number 1 发送消息
message.votetitle string 投票主题
message.voteitem array 投票选项,可能多个内容
message.votetype number 投票类型.101发起投票、102参与投票
message.voteid string 投票id,方便将参与投票消息与发起投票消息进行前后对照

# 填表消息 类型

# 返回示例:

{
  messageType: 17,
  action: 1,
  message: {
    room_name: '这是一个群',
    creator: 'nick',
    create_time: '2019-12-11 11:21:22',
    title: '这是填表title',
    details: [{
      id: 1,
      ques: '表项1,文本',
      type: 'Text'
    }, {
      id: 2,
      ques: '表项2,数字',
      type: 'Number'
    }, {
      id: 3,
      ques: '表项3,日期',
      type: 'Date'
    }, {
      id: 4,
      ques: '表项4,时间',
      type: 'Time'
    }]
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 17 填表消息
action number 1 发送消息
message.room_name string 填表消息所在的群名称
message.creator string 创建者在群中的名字
message.create_time string 创建的时间
message.title string 表名
message.details.id string 表项id
message.details.ques string 表项名称
message.details.type string 表项类型,有Text(文本),Number(数字),Date(日期),Time(时间)

# 红包消息 类型

# 返回示例:

{
  messageType: 18,
  action: 1,
  message: {
    type: 1,
    wish: '恭喜发财,大吉大利',
    totalcnt: 1,
    totalamount: 3000
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 18 红包消息
action number 1 发送消息
message.type number 红包消息类型。1 普通红包、2 拼手气群红包、3 激励群红包
message.wish string 红包祝福语
message.totalcnt number 红包总个数
message.totalamount number 红包总金额,单位为分

# 会议邀请消息 类型

# 返回示例:

{
  messageType: 19,
  action: 1,
  message: {
    topic: "夕会",
    starttime: 1603877400,
    endtime: 1603881000,
    address: "",
    remarks: "",
    meetingtype: 102,
    meetingid: 1210342560,
    status: 1
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 19 会议邀请消息
action number 1 发送消息
message.topic string 会议主题
message.starttime number 会议开始时间
message.endtime number 会议结束时间
message.address string 会议地址
message.remarks string 会议备注
message.meetingtype number 会议消息类型。101发起会议邀请消息、102处理会议邀请消息
message.meetingid number 会议id。方便将发起、处理消息进行对照
message.status number 会议邀请处理状态。1 参加会议、2 拒绝会议、3 待定、4 未被邀请、5 会议已取消、6 会议已过期、7 不在房间内。只有meetingtype为102的时候此字段才有内容。

# 在线文档消息 类型

# 返回示例:

{
  messageType: 20,
  action: 1,
  message: {
    title: '测试&演示客户',
    doc_creator: 'test',
    link_url: 'https://doc.weixin.qq.com/txdoc/excel?docid=xxx'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 20 在线文档消息
action number 1 发送消息
message.title string 在线文档名称
message.doc_creator string 在线文档链接
message.link_url string 在线文档创建者。本企业成员创建为userid;外部企业成员创建为external_userid

# MarkDown格式消息 类型

# 返回示例:

{
  messageType: 21,
  action: 1,
  message: {
    content: '请前往系统查看,谢谢。'
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 21 MarkDown格式消息
action number 1 发送消息
message.content string 在markdown消息内容,目前为机器人发出的消息

# 图文消息 类型

# 返回示例:

{
  messageType: 21,
  action: 1,
  message: {
    item: [{
      title: 'service',
      description: 'test',
      url: 'http://xxx',
      picurl: 'https://www.qq.com/xxx.jpg'
    }]
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 22 图文消息
action number 1 发送消息
message.item object 图文消息数组,每个item结构包含title、description、url、picurl等结构
message.item.title string 图文消息标题
message.item.description string 图文消息描述
message.item.url string 图文消息点击跳转地址
message.item.picurl string 图文消息配图的url

# 日程消息 类型

# 返回示例:

{
  messageType: 23,
  action: 1,
  message: {
    title: "xxx业绩复盘会",
    creatorname: "test",
    attendeename: ["aaa","bbb"],
    starttime: 1603882800,
    endtime: 1603886400,
    place: "",
    remarks: ""
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 23 日程消息
action number 1 发送消息
message.title string 日程主题
message.creatorname string 日程组织者
message.attendeename array 日程参与人
message.starttime number 日程开始时间。Utc时间,单位秒
message.endtime number 日程结束时间。Utc时间,单位秒
message.place string 日程地点
message.remarks string 日程备注

# 混合消息 类型

# 返回示例:

{
  messageType: 24,
  action: 1,
  message: {
    item: [{
      type: "text",
      content: "{\"content\":\"你好[微笑]\\n\"}"
    }]
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 24 混合消息
action number 1 发送消息
message.item array 其中每个元素由type与content组成,type和content均为String类型
message.item.type string 消息类型
message.item.content array 消息内容json

# 音频存档消息 类型

# 返回示例:

{
  messageType: 25,
  action: 1,
  message: {
    endtime: 1594197635,
    sdkfileid: 'CpsBKjAqd0xhb2JWRUJldGtwcE5DVTB6UjRUalN6c09vTjVyRnF4YVJ5M24rZC9YcHF3cHRPVzRwUUlaMy9iTytFcnc0SlBkZDU1YjRNb0MzbTZtRnViOXV5WjUwZUIwKzhjbU9uRUlxZ3pyK2VXSVhUWVN2ejAyWFJaTldGSkRJVFl0aUhkcVdjbDJ1L2RPbjJsRlBOamJaVDNnPT0SOE5EZGZNVFk0T0RnMU16YzVNVGt5T1RJMk9GOHhNalk0TXpBeE9EZzJYekUxT1RReE9UYzJNemM9GiA3YTYyNzA3NTY4Nzc2MTY3NzQ2MTY0NzA2ZTc4NjQ2OQ==',
    demofiledata: [{
      filename: '65eb1cdd3e7a3c1740ecd74220b6c627.docx',
      demooperator: 'wo137MCgAAYW6pIiKKrDe5SlzEhSgwbA',
      starttime: 1594197599,
      endtime: 1594197609
    }],
    sharescreendata: [{
      share: 'wo137MCgAAYW6pIiKKrDe5SlzEhSgwbA',
      starttime: 1594197624,
      endtime: 1594197624
    }]
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 25 音频存档消息
action number 1 发送消息
message.endtime number 音频结束时间
message.sdkfileid string 音频媒体下载的id
message.demofiledata.filename string 文档共享名称
message.demofiledata.demooperator string 文档共享操作用户的id
message.demofiledata.starttime number 文档共享开始时间
message.demofiledata.endtime number 文档共享结束时间
message.sharescreendata.share string 屏幕共享用户的id
message.sharescreendata.starttime number 屏幕共享开始时间
message.sharescreendata.endtime number 屏幕共享结束时间

# 音频共享文档消息 类型

# 返回示例:

{
  messageType: 26,
  action: 1,
  message: {
    filename: '欢迎使用微盘.pdf.pdf',
    md5sum: 'ff893900f24e55e216e617a40e5c4648',
    filesize: 4400654,
    sdkfileid: 'CpsBKjAqZUlLdWJMd2gvQ1JxMzd0ZjlpdW5mZzJOOE9JZm5kbndvRmRqdnBETjY0QlcvdGtHSFFTYm95dHM2VlllQXhkUUN5KzRmSy9KT3pudnA2aHhYZFlPemc2aVZ6YktzaVh3YkFPZHlqNnl2L2MvcGlqcVRjRTlhZEZsOGlGdHJpQ2RWSVNVUngrVFpuUmo3TGlPQ1BJemlRPT0SOE5EZGZNVFk0T0RnMU16YzVNVGt5T1RJMk9GODFNelUyTlRBd01qQmZNVFU1TkRFNU9USTFOZz09GiA3YTcwNmQ2Zjc5NjY3MDZjNjY2Zjc4NzI3NTZmN2E2YQ=='
  }
}

# 返回参数说明:

参数 类型 必定存在 备注
messageType number 26 音频共享文档消息
action number 1 发送消息
message.filename string 文档共享文件名称
message.md5sum string 共享文件的md5值
message.filesize number 共享文件的大小
message.sdkfileid string 共享文件的sdkfile
最近更新: 2021/3/4 下午3:05:21