include "../base.thrift" include "common.thrift" namespace go conversation.message enum LoadDirection { Unknown = 0 Prev = 1 Next = 2 } const string OrderByDesc = "DESC" const string OrderByAsc = "ASC" enum MsgParticipantType { Bot = 1 User = 2 } // Enumeration following copilot definition enum ChatMessageMetaType { Default_0 = 0; // Compatible value Replaceable = 1; // End-to-side direct replacement Insertable = 2; // insert reference DocumentRef = 3; // document citation KnowledgeCard = 4; // Knowledge Base Reference Card EmbeddedMultimedia = 100; // The embedded multimedia information is only used by Alice for the end. Because full link multiplexing uses this field, it has been changed here. } struct ExtraInfo { 1 : string local_message_id, 2 : string input_tokens , 3 : string output_tokens , 4 : string token , 5 : string plugin_status , // "success" or "fail" 6 : string time_cost , 7 : string workflow_tokens , 8 : string bot_state , 9 : string plugin_request , 10: string tool_name , 11: string plugin , 12: string mock_hit_info , 13: string log_id , 14: string stream_id , 15: string message_title , 16: string stream_plugin_running , 17: string new_section_id, 18: string remove_query_id, 19: string execute_display_name, 20: string task_type, // Corresponding to timed task task_type, 1-preset task, 2-user task, 3-Plugin background task 21: string refer_format //Agent app uses reference format 22: string call_id, } struct MsgParticipantInfo{ 1: string id 2: MsgParticipantType type 3: string name 4: string desc 5: string avatar_url 6: string space_id 7: string user_id 8: string user_name 9: bool allow_mention 10: string access_path 11: bool is_fav // Is collected // 12: shortcut_command ShortcutStruct shortcuts//Shortcuts 13: bool allow_share // Is it allowed to be shared? } //struct InterruptFunction { // 1: string name // 2: string arguments //} //struct InterruptRequireInfo { // 1: string require_fields // 2: string name //} struct InterruptPlugin { 1: string id 2: string type // 1 function, 2 require_info // 3: InterruptFunction function = 3; // 4: InterruptRequireInfo require_info = 4; } struct SubmitToolOutputs { 1: list tool_calls } // Keep up with bot_connector_platform struct RequiredAction { 1 : string type 2 :SubmitToolOutputs submit_tool_outputs } struct ChatMessageMetaInfo{ 1: ChatMessageMetaType type, 2: string info, } struct ChatMessage { 1 : string role , 2 : string type , 3 : string content , 4 : string content_type, 5 : string message_id , 6 : string reply_id , 7 : string section_id , 8 : ExtraInfo extra_info , 9 : string status , // Normal, interrupted state, used when pulling the message list, this field is not available when chat is running. 10: optional i32 broken_pos , // interrupt position 11: optional string sender_id, 12: optional list mention_list, 13: i64 content_time, 14: i64 message_index (api.js_conv='true' go.tag="json:\"message_index,string\""), 15: i32 source , // Sources, 0 normal chat messages, 1 scheduled task, 2 notifications, 3 asynchronous results 16: optional ChatMessage reply_message, // Corresponding to the replied query, the backend cannot be found, and a backend is added. 17: optional RequiredAction required_action // interrupt message 18: optional list meta_infos, // Text markup such as quoting, highlighting, etc 19: optional map card_status // Card Status 20: optional string reasoning_content //Model Thinking Chain } struct GetMessageListRequest { 1: string conversation_id 2: required string cursor // First pass 0/-1, 0 - last page, -1 - unread first page 3: required i32 count 4: string bot_id 5: optional bool draft_mode 6: optional string preset_bot // The bot template used 7: optional common.Scene scene 8: optional string biz_kind // Different business situations under the same bot and uid 9: optional list insert_history_message_list // There are situations where you need to insert a chat before creating a chat history 10: optional LoadDirection load_direction 11: optional bool must_append // Whether to force an appended message in an existing conversation 12: optional i64 share_id (api.js_conv='true' go.tag="json:\"share_id,string\"") // Share ID } struct GetMessageListResponse { 1: required list message_list 2: required string cursor // The position when the next brush exists (page up), opposite to the next_cursor page turning direction. Compatible with old logic, no prev prefix 3: required bool hasmore // Whether the next swipe exists (page up), the opposite direction to the next_has_more page turning. Compatible with old logic, without prev prefix 4: required string conversation_id 5: optional string last_section_id // Session Latest section_id Only First Brush Back 6: i64 code 7: string msg 8: optional map participant_info_map 9: string next_cursor // The position when the next swipe exists (page down), 10: bool next_has_more // Does the next swipe exist (page down) 11: i64 read_message_index (api.js_conv='true' go.tag="json:\"read_message_index,string\"") 12: string connector_conversation_id //ID for botconnector } struct DeleteMessageRequest { 1: required i64 conversation_id (api.js_conv='true') 2: required i64 message_id (api.js_conv='true') 3: optional common.Scene scene 4: optional i64 bot_id (api.js_conv='true') } struct DeleteMessageResponse { 1: i64 code 2: string msg } struct BreakMessageRequest { 1: required i64 conversation_id (api.js_conv='true') //session id 2: required i64 query_message_id (api.js_conv='true')// Current issue id 3: optional i64 answer_message_id (api.js_conv='true') // Which reply was interrupted under the current question? 4: optional i32 broken_pos // interrupt position 5: optional common.Scene scene } struct BreakMessageResponse { 1: i64 code 2: string msg } //batch query struct ListMessageApiRequest { 1: required i64 conversation_id (api.query = "conversation_id",api.js_conv='true') //session id 2: optional i64 limit (api.body = "limit") // limit number of entries 3: optional string order (api.body = "order") // Sort by desc/asc 4: optional i64 chat_id (api.body = "chat_id",api.js_conv='true') //ID of a conversation 5: optional i64 before_id (api.body = "before_id",api.js_conv='true') // The ID you need to pass to turn the page forward. 6: optional i64 after_id (api.body = "after_id",api.js_conv='true') // Return the ID to be passed backwards. 255: base.Base Base } struct OpenMessageApi { 1: i64 id (api.js_conv='true')// primary key ID 2: i64 bot_id (api.js_conv='true') // agent id 3: string role // user / assistant/tool 4: string content //message content 5: i64 conversation_id //session id 6: map meta_data // custom field 7: i64 created_at //creation time 8: i64 updated_at //update time 9: i64 chat_id // ID of a conversation 10: string content_type // Content type, text/mix 11: string type //Message Type answer/question/function_call/tool_response 12: string section_id // The section_id of conversation 13: optional string reasoning_content //Model Thinking Chain } struct ListMessageApiResponse { 1: optional list messages (api.body = "data") 2: optional bool has_more (api.body = "has_more") // Is there still data, true yes, false no 3: optional i64 first_id (api.body = "first_id",api.js_conv='true') // The ID of the first piece of data 4: optional i64 last_id (api.body = "last_id",api.js_conv='true') // The id of the last piece of data. }