|
- syntax = "proto3";
- package pb;
- option go_package = "gim/pkg/pb/";
-
- enum PackageType {
- PT_UNKNOWN = 0; // 未知
- PT_SIGN_IN = 1; // 设备登录请求
- PT_SYNC = 2; // 消息同步触发
- PT_HEARTBEAT = 3; // 心跳
- PT_MESSAGE = 4; // 消息投递
- PT_SUBSCRIBE_ROOM = 5; // 订阅房间
- }
-
- /************************************消息体定义开始************************************/
- // 单条消息投递内容(估算大约100个字节),todo 通知栏提醒
- message Message {
- Sender sender = 1; // 发送者
- ReceiverType receiver_type = 2; // 接收者类型,1:user;2:group
- int64 receiver_id = 3; // 用户id或者群组id
- repeated int64 to_user_ids = 4; // 需要@的用户id列表
- MessageType message_type = 5; // 消息类型
- bytes message_content = 6; // 消息内容
- int64 seq = 7; // 用户消息发送序列号
- int64 send_time = 8; // 消息发送时间戳,精确到毫秒
- MessageStatus status = 9; // 消息状态
- }
-
- message Sender {
- SenderType sender_type = 1; // 发送者类型,1:系统,2:用户,3:第三方业务系统
- int64 sender_id = 2; // 发送者id
- int64 device_id = 3; // 发送者设备id
- string avatar_url = 4; // 头像
- string nickname = 5; // 昵称
- string extra = 6; // 扩展字段
- }
-
- // 消息类型
- enum MessageType {
- MT_UNKNOWN = 0; // 未知
- MT_TEXT = 1; // 文本
- MT_FACE = 2; // 表情
- MT_VOICE = 3; // 语音消息
- MT_IMAGE = 4; // 图片
- MT_FILE = 5; // 文件
- MT_LOCATION = 6; // 地理位置
- MT_COMMAND = 7; // 指令推送
- MT_CUSTOM = 8; // 自定义
- MT_RECALL = 9; // 撤回消息
- MT_RED_PACKAGE = 10; // 红包消息
- }
-
- // 红包类型
- enum RedPacketType {
- RPT_UNKNOWN = 0; // 未知
- RPT_FRIEND = 1; // 好友红包
- RPT_GROUP_NORMAL = 2; // 群组普通红包
- RPT_GROUP_LUCK = 3; // 群组手气红包
- RPT_GROUP_SPECIALLY = 4; // 群组专属红包
- RPT_SYSTEM_FOR = 5; // 系统红包
- }
-
- // 红包消息类型
- enum RedPacketMessageType {
- RMT_UNKNOWN = 0; // 未知
- RMT_SEND = 1; // 发红包
- RMT_GRAB = 2; // 抢红包
- }
-
- // 红包状态类型
- enum RedPacketStatusType {
- RPS_NOT_DRAW = 0; // 未领取
- RPS_DRAWING = 1; // 领取中
- RPS_DRAW_OVER = 2; // 领取完
- RPS_EXPIRE = 3; //已过期
- }
-
- // 文本消息
- message Text {
- string text = 1; // 文本消息内容
- }
-
- // 表情消息
- message Face {
- int64 face_id = 1;
- string face_url = 2;
- }
-
- // 语音消息
- message Voice {
- string id = 1; // 语音包id
- int32 size = 2; // 语音包大小
- int32 duration = 3; // 语音时长
- string url = 4; // 语音文件URL
- }
-
- // 图片消息
- message Image {
- string id = 1; // 图片id
- int32 width = 2; // 图片宽度
- int32 height = 3; // 图片长度
- string url = 4; // 图片URL
- string thumbnail_url = 5; // 图片缩略图url
- }
-
- // 文件消息
- message File {
- int64 id = 12; // 文件id
- string name = 13; // 文件名
- int64 size = 14; // 文件大小
- string url = 15; // 文件url
- }
-
- // 地理位置消息
- message Location {
- string desc = 1; // 描述
- double latitude = 2; // 经度
- double longitude = 3; // 纬度
- }
-
- // Command 指令推送,1000以下,IM内部用,1000以上,留给业务用
- message Command {
- int32 code = 1; // 指令码
- bytes data = 2; // 数据内容
- }
-
- // 自定义消息
- message Custom {
- string data = 1; // 自定义数据
- }
-
- // 撤回消息
- message RECALL {
- int64 recall_seq = 1; // 撤回消息seq
- }
-
-
- // 红包消息
- message RED_PACKAGE {
- RedPacketMessageType red_message_type = 1;// 红包消息类型
- RedPacketType red_packet_type = 2; // 红包类型
- string red_packet_content = 3; // 红包文字内容
- float red_packet_amount = 6; // 红包金额
- int32 red_packet_nums = 5; // 红包数量
- float red_packet_balance_amount = 7; // 红包余额
- int64 received_user_id = 8; // 领取用户id
- float received_user_amount = 9; // 领取用户金额
- string received_user_nickname = 10; // 领取用户昵称
- RedPacketStatusType red_packet_status_type = 11; // 领取状态
- int64 red_packet_id = 12; // 红包id
- }
-
- /************************************消息体定义结束************************************/
-
- // 上行数据
- message Input {
- PackageType type = 1; // 包的类型
- int64 request_id = 2; // 请求id
- bytes data = 3; // 数据
- }
-
- // 下行数据
- message Output {
- PackageType type = 1; // 包的类型
- int64 request_id = 2; // 请求id
- int32 code = 3; // 错误码
- string message = 4; // 错误信息
- bytes data = 5; // 数据
- }
-
- // 设备登录,package_type:1
- message SignInInput {
- int64 device_id = 1; // 设备id
- int64 user_id = 2; // 用户id
- string token = 3; // 秘钥
- }
-
- // 消息同步请求,package_type:2
- message SyncInput {
- int64 seq = 1; // 客户端已经同步的序列号
- }
- // 消息同步响应,package_type:2
- message SyncOutput {
- repeated Message messages = 1; // 消息列表
- bool has_more = 2; // 是否有更多数据
- }
-
- // 订阅房间请求
- message SubscribeRoomInput {
- int64 room_id = 1; // 房间ID,如果为0,取消房间订阅
- int64 seq = 2; // 消息消息序列号,
- }
-
- enum ReceiverType {
- RT_UNKNOWN = 0; // 未知
- RT_USER = 1; // 用户
- RT_GROUP = 2; // 群组
- RT_ROOM = 3; // 房间
- }
-
- // 消息投递,package_type:4
- message MessageSend {
- Message message = 1; // 消息
- }
-
- enum SenderType {
- ST_UNKNOWN = 0; // 未知的
- ST_SYSTEM = 1; // IM系统
- ST_USER = 2; // 用户
- ST_BUSINESS = 3; // 业务方
- }
-
- enum MessageStatus {
- MS_UNKNOWN = 0; // 未知的
- MS_NORMAL = 1; // 正常的
- MS_RECALL = 2; // 撤回
- }
-
- // 投递消息回执,package_type:4
- message MessageACK {
- int64 device_ack = 2; // 设备收到消息的确认号
- int64 receive_time = 3; // 消息接收时间戳,精确到毫秒
- }
|