im.proto
syntax = "proto3";
package bilibili.im.interfaces.v1;
import "bilibili/im/type/im.proto";
//私信
service ImInterface {
// 发送消息
rpc SendMsg (ReqSendMsg) returns (RspSendMsg);
// 同步关系
rpc SyncRelation (ReqRelationSync) returns (RspRelationSync);
// 确认同步进度
rpc SyncAck (ReqSyncAck) returns (RspSyncAck);
// 同步版本拉取消息
rpc SyncFetchSessionMsgs (ReqSessionMsg) returns (RspSessionMsg);
// 拉取会话记录列表
rpc GetSessions (ReqGetSessions) returns (RspSessions);
// 拉取新消息
rpc NewSessions (ReqNewSessions) returns (RspSessions);
// 拉取已读消息
rpc AckSessions (ReqAckSessions) returns (RspSessions);
// 更新已读进度
rpc UpdateAck (ReqUpdateAck) returns (DummyRsp);
// 置顶聊天
rpc SetTop (ReqSetTop) returns (DummyRsp);
// 删除会话记录
rpc RemoveSession (ReqRemoveSession) returns (DummyRsp);
// 未读私信数
rpc SingleUnread (ReqSingleUnread) returns (RspSingleUnread);
// 我创建的应援团未读数
rpc MyGroupUnread (DummyReq) returns (RspMyGroupUnread);
// 未关注的人批量设置为已读
rpc UpdateUnflwRead (DummyReq) returns (DummyRsp);
// 应援团消息助手
rpc GroupAssisMsg (ReqGroupAssisMsg) returns (RspSessionMsg);
// 更新应援团小助手消息已拉取进度
rpc AckAssisMsg (ReqAckAssisMsg) returns (DummyRsp);
// 拉取会话详情
rpc SessionDetail (ReqSessionDetail) returns (bilibili.im.type.SessionInfo);
// 批量拉取会话详情
rpc BatchSessDetail (ReqSessionDetails) returns (RspSessionDetails);
// 批量删除会话
rpc BatchRmSessions (ReqBatRmSess) returns (DummyRsp);
// 拉取最近私信分享列表
rpc ShareList (ReqShareList) returns (RspShareList);
//
rpc SpecificSingleUnread (ReqSpecificSingleUnread) returns (RspSpecificSingleUnread);
//
rpc GetSpecificSessions (ReqGetSpecificSessions) returns (RspSessions);
}
// 发送消息-请求
message ReqSendMsg {
// 消息内容
bilibili.im.type.Msg msg = 1;
//
string cookie = 2;
//
string cookie2 = 3;
//
int32 error_code = 4;
//
string dev_id = 5;
}
// 表情资源信息
message EmotionInfo {
// 表情
string text = 1;
// 表情url
string url = 2;
// 表情大小
// 0:未知 1:min 2:max
int32 size = 3;
// gif url
string gif_url = 4;
}
// 发送消息-响应
message RspSendMsg {
//
uint64 msg_key = 1;
// 表情资源信息
repeated EmotionInfo e_infos = 2;
//
string msg_content = 3;
//
bilibili.im.type.KeyHitInfos key_hit_infos = 4;
}
// 同步关系-请求
message ReqRelationSync {
// 客户端当前seqno
uint64 client_relation_oplog_seqno = 1;
}
// 同步关系-响应
message RspRelationSync {
//
int32 full = 1;
// 增量日志
repeated bilibili.im.type.RelationLog relation_logs = 2;
// 全量列表
repeated bilibili.im.type.FriendRelation friend_list = 3;
// 服务器端最大的relation seqno
uint64 server_relation_oplog_seqno = 4;
// 全量列表
repeated bilibili.im.type.GroupRelation group_list = 5;
}
// 确认同步进度-请求
message ReqSyncAck {
//
uint64 client_seqno = 1;
}
// 确认同步进度-响应
message RspSyncAck {}
// 同步版本拉取消息-请求
message ReqSessionMsg {
//
uint64 talker_id = 1;
//
int32 session_type = 2;
//
uint64 end_seqno = 3;
//
uint64 begin_seqno = 4;
//
int32 size = 5;
//
int32 order = 6;
//
string dev_id = 7;
}
// 同步版本拉取消息-响应
message RspSessionMsg {
//
repeated bilibili.im.type.Msg messages = 1;
//
int32 has_more = 2;
//
uint64 min_seqno = 3;
//
uint64 max_seqno = 4;
// 表情资源信息
repeated EmotionInfo e_infos = 5;
}
// 拉取会话记录列表-请求
message ReqGetSessions {
//
uint64 begin_ts = 1;
//
uint64 end_ts = 2;
//
uint32 size = 3;
//
uint32 session_type = 4;
//
uint32 unfollow_fold = 5;
//
uint32 group_fold = 6;
//
uint32 sort_rule = 7;
// 青少年模式
uint32 teenager_mode = 8;
// 课堂模式
uint32 lessons_mode = 9;
}
// 拉取新消息-请求
message ReqNewSessions {
//
uint64 begin_ts = 1;
//
uint32 size = 2;
//
uint32 teenager_mode = 3;
// 课堂模式
uint32 lessons_mode = 4;
}
// 拉取已读消息-请求
message ReqAckSessions {
//
uint64 begin_ts = 1;
//
uint32 end_ts = 2;
//
uint32 size = 3;
}
// 拉取消息-响应
message RspSessions {
//
repeated bilibili.im.type.SessionInfo session_list = 1;
//
uint32 has_more = 2;
// 标记反垃圾会话是否在清理中
bool anti_disturb_cleaning = 3;
// 当session_list为空时,会返回该字段用于判断通讯录是否为空,1表示空,0表示非空
int32 is_address_list_empty = 4;
}
// 更新已读进度-请求
message ReqUpdateAck {
// 聊天对象uid,可以为用户id或者为群id
uint64 talker_id = 1;
// 会话类型
uint32 session_type = 2;
// 已读的最大seqno
uint64 ack_seqno = 3;
}
// 置顶聊天-请求
message ReqSetTop {
//
uint64 talker_id = 1;
//
uint32 session_type = 2;
//
// 0:置顶 1:取消置顶
uint32 op_type = 3;
}
// 删除会话记录-请求
message ReqRemoveSession {
//
uint64 talker_id = 1;
//
uint32 session_type = 2;
}
// 空响应
message DummyRsp {
reserved 1;
}
//
enum SESSION_TYPE { //
UNKNOWN = 0; //
UN_FOLD_SESSION = 1; //
UN_FOLLOW_SINGLE_SESSION = 2; //
MY_GROUP_SESSION = 3; //
ALL_SESSION = 4; //
}
//
enum ENUM_FOLD {
FOLD_NO = 0; //
FOLD_YES = 1; //
FOLD_UNKNOWN = 2; //
}
//
enum ENUM_UNREAD_TYPE{
UNREAD_TYPE_ALL = 0; //
UNREAD_TYPE_FOLLOW = 1; //
UNREAD_TYPE_UNFOLLOW = 2; //
}
// 未读私信数-请求
message ReqSingleUnread {
//
uint32 unread_type = 1;
//
uint32 show_unfollow_list = 2;
}
// 未读私信数-响应
message RspSingleUnread {
// 未关注用户私信数
uint64 unfollow_unread = 1;
// 已关注用户私信数
uint64 follow_unread = 2;
// 未关注人列表是否有新业务通知
uint32 unfollow_push_msg = 3;
}
//
message SimpleSession {
// 聊天对象uid,可以为用户id或者为群id
uint64 talker_id = 1;
// 会话类型
uint32 session_type = 2;
}
// -请求
message ReqSpecificSingleUnread {
// 具体会话详情
repeated SimpleSession talker_sessions = 1;
}
// -响应
message RspSpecificSingleUnread {
// key -> 用户uid, value ->未读数
map <uint64,uint64> talkerUnreadCnt = 1;
// 总未读数
uint64 allUnreadCnt = 2;
}
// -请求
message ReqGetSpecificSessions {
// 具体会话详情
repeated SimpleSession talker_sessions = 1;
}
// 空请求
message DummyReq {
//
uint32 idl = 1;
}
// 我创建的应援团未读数-响应
message RspMyGroupUnread {
// 未读消息数
uint32 unread_count = 1;
}
// 应援团消息助手-请求
message ReqGroupAssisMsg {
//
uint64 client_seqno = 1;
//
uint32 size = 2;
}
// 更新应援团小助手消息已拉取进度-请求
message ReqAckAssisMsg {
//
uint64 ack_seqno = 1;
}
// 拉取会话详情-请求
message ReqSessionDetail {
//
uint64 talker_id = 1;
//
uint32 session_type = 2;
//
uint64 uid = 3;
}
// 批量拉取会话详情-请求
message ReqSessionDetails {
// 会话详情请求列表
repeated ReqSessionDetail sess_ids = 1;
}
// 批量拉取会话详情-响应
message RspSessionDetails {
// 会话详情列表
repeated bilibili.im.type.SessionInfo sess_infos = 1;
}
// 批量删除会话-请求
message ReqBatRmSess {}
// 拉取最近私信分享列表-请求
message ReqShareList {
// 分页大小 最大20
int32 size = 1;
}
// 会话信息,用于私信分享
message ShareSessionInfo {
//
uint64 talker_id = 1;
//
string talker_uname = 2;
//
string talker_icon = 3;
// 认证信息
// -1: 无认证 0:个人认证 1:机构认证
int32 official_type = 4;
}
// 拉取最近私信分享列表-响应
message RspShareList {
// 最近会话列表
repeated ShareSessionInfo session_list = 1;
//
int32 IsAddressListEmpty = 2;
}