• 消息协议
    • 概述
    • 协议定义
    • 消息体定义
      • 消息体子类型定义
    • 消息示例
    • 相关文档

    消息协议

    概述

    JMessage 对于不同的消息类型,有一个 JSON 格式的消息协议。这个业务级别的协议,由发送者编码,由接收者解码,并处理接收到的消息。

    面向开发者接口提供的发送消息接口,也需要遵循此文档定义来组装消息,以发往客户端。

    协议定义

    • version Number
      • 必须。
      • 协议版本号。第一版本:1,以此类推。
    • target_type String
      • 必须。
      • 接收者类型。
      • 选项:single, group
    • target_id String
      • 必须。
      • 接收者ID。
      • 可能值:${username}, ${gid}
      • 接收方可用此字段,校验消息是不是发给自己的。
    • target_name String
      • 可选。
      • 接收者的展示名。
    • from_type String
      • 必须。
      • 发送方来源。
      • 选项:user, robot, admin, …。可用于扩展特定消息来源。
      • 用户只允许发送 from_type = user 的消息。
    • from_id String
      • 必须。
      • 发送者 username
    • from_name String
      • 可选。
      • 发送方展示名。
    • create_time Number
      • 必须。
      • 消息发送时间。
      • 精确到秒。
    • msg_type String
      • 必须。
      • 选项:text, voice, image, file, video, location, custom
    • msg_body JsonObject
      • 必须。
      • 消息实体。
    • from_appkey String
      • 可选
      • 发送者所属应用appkey

    消息体定义

    根据 msg_type 的不同,msg_body 里会有以下字段信息。

    • extras

      • 可选。
      • JsonObject
      • 用于附加参数。所有的消息类型都可以带此字段。
        msg_type = text
    • text String

      • 必须。
      • 文本类型消息内容。
        msg_type = voice
    • media_id String

      • 必须。
      • 媒体文件上传到得到的KEY,用于生成下载URL。
    • media_crc32 Number
      • 必须。
      • 文件的 CRC32 校验码。
    • duration Number
      • 必须。
      • 语音时长(单位:秒)
    • format String
      • 必须。
      • 语音类型。
    • fsize Number

      • 必须
      • 文件大小(字节数)
        msg_type = image
    • media_id String

      • 必须。
      • 媒体文件上传到得到的KEY,用于生成下载URL。
    • media_crc32 Number
      • 必须。
      • 文件的 CRC32 校验码。
    • width Number
      • 必须。
      • 原图片宽度。
    • height Number
      • 必须。
      • 原图片调度。
    • format String
      • 可选。
      • 图片格式。
    • fsize Number

      • 必须
      • 文件大小(字节数)
        msg_type = file
    • media_id String

      • 必须。
      • 媒体文件上传到得到的KEY,用于生成下载URL。
    • media_crc32 Number
      • 必须。
      • 文件的 CRC32 校验码。
    • fsize Number
      • 必须
      • 文件大小(字节数)
    • fname String

      • 必须
      • 文件名
        msg_type = location
    • latitude Number

      • 必须。
      • 纬度
    • longitude Number
      • 必须。
      • 经度
    • scale Number
      • 必须
      • 缩放比例
    • lable String

      • 必须
      • 位置信息
        msg_type = video
    • video JsonObject

      • 必须
      • 视频文件信息, 使用FileObject消息体子类型,类型定义见下文
    • duration Number
      • 必须
      • 视频时长
    • thumb JsonObject

      • 可选
      • 缩略图文件信息, 使用ImageObject消息体子类型,类型定义见下文
        msg_type = custom
    • 开发者自定义字段。JsonObject。

    消息体子类型定义

    FileObject

    • media_id String
      • 必须
      • 媒体文件上传之后得到的key,用于生成下载的URL
    • media_crc32 Number
      • 必须
      • 文件的 CRC32 校验码。
    • fsize Number
      • 必须
      • 文件大小
    • fname String

      • 必须
      • 发送与接收到的文件名
        ImageObject
    • media_id String

      • 必须
      • 媒体文件上传之后得到的key,用于生成下载的URL
    • media_crc32 Number
      • 必须
      • 文件的 CRC32 校验码。
    • format String
      • 必须
      • 图片格式
    • width Number
      • 必须
      • 图宽度
    • height Number
      • 必须
      • 图高度
    • fsize Number
      • 必须
      • 文件大小

    消息示例

    1. 文字消息
    2. {
    3. "version": 1,
    4. "target_type": "single",
    5. "target_id": "javen",
    6. "target_name": "Javen Fang",
    7. "from_type": "user",
    8. "from_id": "fang",
    9. "from_name": "Fang Javen",
    10. "create_time": 135432432187,
    11. "msg_type": "text",
    12. "msg_body": {
    13. "text": "Hello, JPush IM!"
    14. }
    15. }
    16. 图片消息
    17. {
    18. "version": 1,
    19. "target_type": "single",
    20. "target_id": "javen",
    21. "from_type": "admin",
    22. "from_id": "fang",
    23. "msg_type": "image",
    24. "msg_body": {
    25. "media_id": "qiniu/image/CE0ACD035CBF71F8",
    26. "media_crc32":2778919613,
    27. "width":3840,
    28. "height":2160,
    29. "fsize":3328738,
    30. "format":"jpg"
    31. }
    32. }
    33. 语音消息
    34. {
    35. "version": 1,
    36. "target_type": "single",
    37. "target_id": "ppppp",
    38. "from_type": "admin",
    39. "from_id": "admin_caiyh",
    40. "msg_type": "voice",
    41. "msg_body": {
    42. "media_id": "qiniu/voice/j/A96B61EB3AF0E5CDE66D377DEA4F76B8",
    43. "media_crc32":1882116055,
    44. "hash":"FoYn15bAGRUM9gZCAkvf9dolVH7h",
    45. "fsize" :12344,
    46. "duration": 6
    47. }
    48. }
    49. 位置消息
    50. {
    51. "version":1,
    52. "target_type":"single",
    53. "target_id":"oooo",
    54. "target_appkey":"4f7aef34fb361292c566a1cd",
    55. "from_type":"admin",
    56. "from_id":"oooo",
    57. "msg_type":"location",
    58. "msg_body":{
    59. "latitude":111.2,
    60. "longitude":22.3,
    61. "scale":500,
    62. "label":"xx省xx市xx区xx街道"
    63. }
    64. }
    65. 视频消息
    66. {
    67. "version":1,
    68. "target_type":"single",
    69. "target_id":"oooo",
    70. "target_appkey":"4f7aef34fb361292c566a1cd",
    71. "from_type":"admin",
    72. "from_id":"oooo",
    73. "msg_type":"video",
    74. "msg_body":{
    75. "duration":10,
    76. "thumb":{
    77. "fsize":20736,
    78. "width":72,
    79. "format":"png",
    80. "media_crc32":2565087609,
    81. "media_id":"qiniu/image/a/707F13B42CEDB275702938DD13ED76E8.png",
    82. "height":72
    83. },
    84. "video":{
    85. "fname":"testvideo",
    86. "fsize":2900883,
    87. "media_crc32":428957395,
    88. "media_id":"qiniu/file/a/2745EACC984972A4F914C7614CEC1572"
    89. }
    90. }
    91. }
    92. 自定义消息
    93. {
    94. "version": 1,
    95. "target_type": "single",
    96. "target_id": "ppppp",
    97. "from_type": "admin",
    98. "from_id": "admin_caiyh",
    99. "msg_type": "voice",
    100. "msg_body": {
    101. json define yourself
    102. }
    103. }

    相关文档

    • JMessage 产品简介
    • IM REST API
    • 资源下载