# -*- coding: utf-8 -*- # python let's go # 编辑人:kris思成 # coding=utf-8 import time import uuid import json # 发送文本消息 def send_message(pigeon_sign: str, token: str, receiver_id: str, shop_id: str, talk_id: int, session_did: str, p_id: int, user_code: str, text: str): """ 构造发送消息消息体 :param pigeon_sign: 接口返回 :param token: 接口返回 :param receiver_id: wss消息返回 对方用户id :param shop_id: cookie自带 :param talk_id: wss消息返回 激活窗口id :param session_did: cookie自带 :param p_id: wss消息返回 :param user_code: 用户token :param text: 文本内容 :return: """ value = { '1': 11778, '2': int(time.time() * 1000), '3': 10001, '4': 1, '5': [ {'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': pigeon_sign.encode()}, ], '7': {'14': 98}, '8': { '1': 100, '2': 11778, '3': b'1.0.4-beta.2', '4': token.encode(), '5': 3, '6': 3, '7': b'2d97ea6:feat/add_init_callback', '8': { '100': { '1': f"{receiver_id}:{shop_id}::2:1:pigeon".encode(), '2': 11, '3': p_id, '4': text.encode(), '5': [ {'1': b'type', '2': b'text'}, {'1': b'shop_id', '2': shop_id.encode()}, {'1': b'sender_role', '2': b'2'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'src', '2': b'pc'}, {'1': b'srcType', '2': b'1'}, {'1': b'source', '2': b'pc-web'}, {'1': b'receiver_id', '2': str(receiver_id).encode()}, {'1': b'hierarchical_dimension', '2': b'{"dynamic_dimension":"4541_1131_9042_6599_9420_6832_4050_3823_3994_8564_1528_0388_8667_2179_7948_1870_1949_0989_8012_6240_7898_7548_8852_6245_9393_3650_8570_4026_4034_4057_6537_8632_2068_8958_0363_2387_9033_3425_2238_0982_1935_8188_3817_8557_7931_3278_4065_1893_6049_6961_3814_4883_4401_6637_7282_3652_9354_0437_4769_4815_9572_7230_5054_3951_4852_2188_3505_6813_2570_5394_0729","goofy_id":"1.0.1.1508","desk_version":"0.0.0","open_stores":"0","memL":"","cpuL":"","session_throughput":0,"message_throughput_send":0,"message_throughput_revice":0}'}, {'1': b'p:check_Send', '2': str(uuid.uuid4()).encode()}, {'1': b'track_info','2': json.dumps({"send_time": int(time.time() * 1000), "_send_delta": "77","_send_delta_2": "216"}).encode()}, {'1': b'user_agent', '2': b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'sender_id', '2': b''}, {'1': b'biz_ext', '2': b'{}'}, {'1': b'p:from_source', '2': b'web'}, {'1': b's:mentioned_users', '2': b''}, {'1': b's:client_message_id', '2': str(uuid.uuid4()).encode()} ], '6': 1000, '7': user_code.encode(), '8': str(uuid.uuid4()).encode(), '14': talk_id # 激活聊天窗口id } }, '9': session_did.encode(), '11': b'web', '15': [ {'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': pigeon_sign.encode()}, # 🔥 修复:使用动态参数,不是硬编码 {'1': b'session_aid', '2': b'1383'}, {'1': b'session_did', '2': session_did.encode()}, {'1': b'app_name', '2': b'im'}, {'1': b'priority_region', '2': b'cn'}, {'1': b'user_agent','2': b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'cookie_enabled', '2': b'true'}, {'1': b'browser_language', '2': b'zh-CN'}, {'1': b'browser_platform', '2': b'Win32'}, {'1': b'browser_name', '2': b'Mozilla'}, {'1': b'browser_version', '2': b'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'browser_online', '2': b'true'}, {'1': b'screen_width', '2': b'1707'}, {'1': b'screen_height', '2': b'1067'}, {'1': b'referer', '2': b''}, {'1': b'timezone_name', '2': b'Asia/Shanghai'} ], '18': 2} } message_type = { "1": { "type": "int", "name": "" }, "2": { "type": "int", "name": "" }, "3": { "type": "int", "name": "" }, "4": { "type": "int", "name": "" }, "5": { "type": "message", "message_typedef": { "1": { "type": "bytes", "name": "" }, "2": { "type": "bytes", "name": "" } }, "name": "" }, "7": { "type": "message", "message_typedef": { "14": { "type": "int", "name": "" } }, "name": "" }, "8": { "type": "message", "message_typedef": { "1": { "type": "int", "name": "" }, "2": { "type": "int", "name": "" }, "3": { "type": "bytes", "name": "" }, "4": { "type": "bytes", "name": "" }, "5": { "type": "int", "name": "" }, "6": { "type": "int", "name": "" }, "7": { "type": "bytes", "name": "" }, "8": { "type": "message", "message_typedef": { "100": { "type": "message", "message_typedef": { "1": { "type": "bytes", "name": "" }, "2": { "type": "int", "name": "" }, "3": { "type": "int", "name": "" }, "4": { "type": "bytes", "name": "" }, "5": { "type": "message", "message_typedef": { "1": { "type": "bytes", "name": "" }, "2": { "type": "bytes", "name": "" } }, "name": "" }, "6": { "type": "int", "name": "" }, "7": { "type": "bytes", "name": "" }, "8": { "type": "bytes", "name": "" }, "14": { "type": "int", "name": "" } }, "name": "" } }, "name": "" }, "9": { "type": "bytes", "name": "" }, "11": { "type": "bytes", "name": "" }, "15": { "type": "message", "message_typedef": { "1": { "type": "bytes", "name": "" }, "2": { "type": "bytes", "name": "" } }, "name": "" }, "18": { "type": "int", "name": "" } }, "name": "" } } return value, message_type # 获取token def get_user_code(pigeon_sign: str, token: str, receiver_id: str, shop_id: str, session_did: str, p_id: int): value = {'1': 10109, '2': int(time.time() * 1000), '3': 10001, '4': 1, '5': [{'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': pigeon_sign.encode()}], '7': {'14': 98}, '8': {'1': 610, '2': 10109, '3': b'1.0.4-beta.2', '4': token.encode(), '5': 3, '6': 3, '7': b'2d97ea6:feat/add_init_callback', '8': { '610': {'1': {'1': f"{receiver_id}:{shop_id}::2:1:pigeon".encode(), '2': p_id, '3': 10}}}, '9': session_did.encode(), '11': b'web', '15': [{'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': pigeon_sign.encode()}, {'1': b'session_aid', '2': b'1383'}, {'1': b'session_did', '2': session_did.encode()}, {'1': b'app_name', '2': b'im'}, {'1': b'priority_region', '2': b'cn'}, {'1': b'user_agent', '2': b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'cookie_enabled', '2': b'true'}, {'1': b'browser_language', '2': b'zh-CN'}, {'1': b'browser_platform', '2': b'Win32'}, {'1': b'browser_name', '2': b'Mozilla'}, {'1': b'browser_version', '2': b'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'browser_online', '2': b'true'}, {'1': b'screen_width', '2': b'1707'}, {'1': b'screen_height', '2': b'1067'}, {'1': b'referer', '2': b''}, {'1': b'timezone_name', '2': b'Asia/Shanghai'}], '18': 2}} message_type = {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'int', 'name': ''}, '4': {'type': 'int', 'name': ''}, '5': {'type': 'message', 'message_typedef': { '1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '7': {'type': 'message', 'message_typedef': {'14': {'type': 'int', 'name': ''}}, 'name': ''}, '8': {'type': 'message', 'message_typedef': {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'bytes', 'name': ''}, '4': {'type': 'bytes', 'name': ''}, '5': {'type': 'int', 'name': ''}, '6': {'type': 'int', 'name': ''}, '7': {'type': 'bytes', 'name': ''}, '8': {'type': 'message', 'message_typedef': { '610': {'type': 'message', 'message_typedef': { '1': { 'type': 'message', 'message_typedef': { '1': { 'type': 'bytes', 'name': ''}, '2': { 'type': 'int', 'name': ''}, '3': { 'type': 'int', 'name': ''}}, 'name': ''}}, 'name': ''}}, 'name': ''}, '9': {'type': 'bytes', 'name': ''}, '11': {'type': 'bytes', 'name': ''}, '15': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '18': {'type': 'int', 'name': ''}}, 'name': ''}} return value, message_type # 心跳包 def heartbeat_message(pigeon_sign: str, token: str, session_did: str): value = { '1': 11028, '2': int(time.time() * 1000), '3': 10001, '4': 1, '5': [ {'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign','2': pigeon_sign.encode()} ], '7': {'14': 98}, '8': { '1': 200, '2': 11028, '3': b'1.0.4-beta.2', '4': token.encode(), '5': 3, '6': 3, '7': b'2d97ea6:feat/add_init_callback', '8': {'200': {'1': int(time.time() * 1000), '2': 50}}, '9': session_did.encode(), '11': b'web', '15': [ {'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': pigeon_sign.encode()}, {'1': b'session_aid', '2': b'1383'}, {'1': b'session_did', '2': session_did.encode()}, {'1': b'app_name', '2': b'im'}, {'1': b'priority_region', '2': b'cn'}, {'1': b'user_agent', '2': b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'cookie_enabled', '2': b'true'}, {'1': b'browser_language', '2': b'zh-CN'}, {'1': b'browser_platform', '2': b'Win32'}, {'1': b'browser_name', '2': b'Mozilla'}, {'1': b'browser_version', '2': b'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'browser_online', '2': b'true'}, {'1': b'screen_width', '2': b'1707'}, {'1': b'screen_height', '2': b'1067'}, {'1': b'referer', '2': b''}, {'1': b'timezone_name', '2': b'Asia/Shanghai'} ], '18': 2 } } message_type = {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'int', 'name': ''}, '4': {'type': 'int', 'name': ''}, '5': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '7': {'type': 'message', 'message_typedef': {'14': {'type': 'int', 'name': ''}}, 'name': ''}, '8': {'type': 'message', 'message_typedef': {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'bytes', 'name': ''}, '4': {'type': 'bytes', 'name': ''}, '5': {'type': 'int', 'name': ''}, '6': {'type': 'int', 'name': ''}, '7': {'type': 'bytes', 'name': ''}, '8': {'type': 'message', 'message_typedef': {'200': {'type': 'message', 'message_typedef': {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}}, 'name': ''}}, 'name': ''}, '9': {'type': 'bytes', 'name': ''}, '11': {'type': 'bytes', 'name': ''}, '15': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '18': {'type': 'int', 'name': ''}}, 'name': ''}} return value, message_type # 🔥 新增:发送图片消息 def send_img(pigeon_sign: str, token: str, receiver_id: str, shop_id: str, talk_id: int, session_did: str, p_id: int, user_code: str, img: str, image_width: str = "2000", image_height: str = "1125", image_format: str = "png", image_size: str = "3157512"): """ 构造发送图片消息体 :param image_width: 图片宽度 :param image_size: 图片大小 :param image_height: 图片高度 :param image_format: 图片格式 :param pigeon_sign: 接口返回 :param token: 接口返回 :param receiver_id: wss消息返回 对方用户id :param shop_id: cookie自带 :param talk_id: wss消息返回 激活窗口id :param session_did: cookie自带 :param p_id: wss消息返回 :param user_code: 用户token :param img: 图片URI或URL :return: (value, message_type) """ value = { '1': 11778, '2': int(time.time() * 1000), '3': 10001, '4': 1, '5': [ {'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': pigeon_sign.encode()}, ], '7': {'14': 98}, '8': { '1': 100, '2': 11778, '3': b'1.0.4-beta.2', '4': token.encode(), '5': 3, '6': 3, '7': b'2d97ea6:feat/add_init_callback', '8': { '100': { '1': f"{receiver_id}:{shop_id}::2:1:pigeon".encode(), '2': 11, '3': p_id, '4': "[图片]".encode(), '5': [ {'1': b'type', '2': b'file_image'}, {'1': b'shop_id', '2': shop_id.encode()}, {'1': b'sender_role', '2': b'2'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'src', '2': b'pc'}, {'1': b'srcType', '2': b'1'}, {'1': b'source', '2': b'pc-web'}, {'1': b'receiver_id', '2': str(receiver_id).encode()}, {'1': b'hierarchical_dimension', '2': b'{"dynamic_dimension":"4541_1131_9042_6599_9420_6832_4050_3823_3994_8564_1528_0388_8667_2179_7948_1870_1949_0989_8012_6240_7898_7548_8852_6245_9393_3650_8570_4026_4034_4057_6537_8632_2068_8958_0363_2387_9033_3425_2238_0982_1935_8188_3817_8557_7931_3278_4065_1893_6049_6961_3814_4883_4401_6637_7282_3652_9354_0437_4769_4815_9572_7230_5054_3951_4852_2188_3505_6813_2570_5394_0729","goofy_id":"1.0.1.1508","desk_version":"0.0.0","open_stores":"0","memL":"","cpuL":"","session_throughput":0,"message_throughput_send":0,"message_throughput_revice":0}'}, {'1': b'tag_valid', '2': b'1'}, {'1': b'imageUrl', '2': img.encode()}, {'1': b'imageWidth', '2': image_width.encode()}, {'1': b'imageHeight', '2': image_height.encode()}, {'1': b'imageFormat', '2': image_format.encode()}, {'1': b'imageSize', '2': image_size.encode()}, {'1': b'uuid', '2': str(uuid.uuid4()).encode()}, {'1': b'track_info','2': json.dumps({"send_time": int(time.time() * 1000), "_send_delta": "77","_send_delta_2": "216"}).encode()}, {'1': b'user_agent', '2': b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'sender_id', '2': b''}, {'1': b'biz_ext', '2': b'{}'}, {'1': b'p:from_source', '2': b'web'}, {'1': b's:mentioned_users', '2': b''}, {'1': b's:client_message_id', '2': str(uuid.uuid4()).encode()} ], '6': 1000, '7': user_code.encode(), '8': str(uuid.uuid4()).encode(), '14': talk_id } }, '9': session_did.encode(), '11': b'web', '15': [ {'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': b'MIG6BAz2BNUON43WdlOBuGYEgZcsIho9ZjVP4yyExLShzXgAZtsvUMj2e3jZWeMZv+6+TNVQQMq3xSLrqiwcs2cCaOVBDuS6zGsWm5gBlGtlvOOLM5td2/9OS8P37t1sdkjN4BSH2mB7FlGItioZIsTh1sodn6pYCGj+45mtId3Itenufgai3Mnkpt573uoWJmagF8J3jVPHMFtdwd25Qf5vsWC2kB30glpQBBCbk2VO2ubMqctqQSzhI6uD'}, {'1': b'session_aid', '2': b'1383'}, {'1': b'session_did', '2': session_did.encode()}, {'1': b'app_name', '2': b'im'}, {'1': b'priority_region', '2': b'cn'}, {'1': b'user_agent','2': b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'cookie_enabled', '2': b'true'}, {'1': b'browser_language', '2': b'zh-CN'}, {'1': b'browser_platform', '2': b'Win32'}, {'1': b'browser_name', '2': b'Mozilla'}, {'1': b'browser_version', '2': b'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'browser_online', '2': b'true'}, {'1': b'screen_width', '2': b'1707'}, {'1': b'screen_height', '2': b'1067'}, {'1': b'referer', '2': b''}, {'1': b'timezone_name', '2': b'Asia/Shanghai'} ], '18': 2 } } message_type = {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'int', 'name': ''}, '4': {'type': 'int', 'name': ''}, '5': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '7': {'type': 'message', 'message_typedef': {'14': {'type': 'int', 'name': ''}}, 'name': ''}, '8': {'type': 'message', 'message_typedef': {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'bytes', 'name': ''}, '4': {'type': 'bytes', 'name': ''}, '5': {'type': 'int', 'name': ''}, '6': {'type': 'int', 'name': ''}, '7': {'type': 'bytes', 'name': ''}, '8': {'type': 'message', 'message_typedef': {'100': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'int', 'name': ''}, '4': {'type': 'bytes', 'name': ''}, '5': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '6': {'type': 'int', 'name': ''}, '7': {'type': 'bytes', 'name': ''}, '8': {'type': 'bytes', 'name': ''}, '14': {'type': 'int', 'name': ''}}, 'name': ''}}, 'name': ''}, '9': {'type': 'bytes', 'name': ''}, '11': {'type': 'bytes', 'name': ''}, '15': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '18': {'type': 'int', 'name': ''}}, 'name': ''}} return value, message_type # 🔥 新增:发送视频消息 def send_video(pigeon_sign: str, token: str, receiver_id: str, shop_id: str, talk_id: int, session_did: str, p_id: int, user_code: str, vid: str, cover_url: str, height: str, width: str, duration: str): """ 构造发送视频消息体 :param duration: 视频时长 :param width: 视频宽度 :param height: 视频高度 :param cover_url: 封面URL :param pigeon_sign: 接口返回 :param token: 接口返回 :param receiver_id: wss消息返回 对方用户id :param shop_id: cookie自带 :param talk_id: wss消息返回 激活窗口id :param session_did: cookie自带 :param p_id: wss消息返回 :param user_code: 用户token :param vid: 视频id :return: (value, message_type) """ # 🔥 修复:确保数值类型正确(height/width为int,duration为float) try: height_int = int(height) if isinstance(height, str) else height width_int = int(width) if isinstance(width, str) else width duration_float = float(duration) if isinstance(duration, str) else duration except (ValueError, TypeError): # 如果转换失败,使用默认值 height_int = 1080 width_int = 1920 duration_float = 0.0 msg_render_model = json.dumps({ "msg_render_type": "video", "render_body": { "vid": vid, "coverURL": cover_url, "height": height_int, "width": width_int, "duration": duration_float } }).encode() value = { '1': 10015, '2': int(time.time() * 1000), '3': 10001, '4': 1, '5': [ {'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': pigeon_sign.encode()}, ], '7': {'14': 98}, '8': { '1': 100, '2': 10015, '3': b'1.0.4-beta.2', '4': token.encode(), '5': 3, '6': 3, '7': b'2d97ea6:feat/add_init_callback', '8': { '100': { '1': f"{receiver_id}:{shop_id}::2:1:pigeon".encode(), '2': 11, '3': p_id, '4': "[视频]".encode(), '5': [ {'1': b'type', '2': b'video'}, {'1': b'shop_id', '2': shop_id.encode()}, {'1': b'sender_role', '2': b'2'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'src', '2': b'pc'}, {'1': b'srcType', '2': b'1'}, {'1': b'source', '2': b'pc-web'}, {'1': b'receiver_id', '2': str(receiver_id).encode()}, {'1': b'hierarchical_dimension', '2': b'{"dynamic_dimension":"4541_1131_9042_6599_9420_6832_4050_3823_3994_8564_1528_0388_8667_2179_7948_1870_1949_0989_8012_6240_7898_7548_8852_6245_9393_3650_8570_4026_4034_4057_6537_8632_2068_8958_0363_2387_9033_3425_2238_0982_1935_8188_3817_8557_7931_3278_4065_1893_6049_6961_3814_4883_4401_6637_7282_3652_9354_0437_4769_4815_9572_7230_5054_3951_4852_2188_3505_6813_2570_5394_0729","goofy_id":"1.0.1.1508","desk_version":"0.0.0","open_stores":"0","memL":"","cpuL":"","session_throughput":0,"message_throughput_send":0,"message_throughput_revice":0}'}, {'1': b'msg_render_model', '2': msg_render_model}, {'1': b'uuid', '2': str(uuid.uuid4()).encode()}, {'1': b'start_scene', '2': b'1'}, {'1': b'track_info','2': json.dumps({"send_time": int(time.time() * 1000), "_send_delta": "77","_send_delta_2": "216"}).encode()}, {'1': b'user_agent', '2': b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'sender_id', '2': b''}, {'1': b'biz_ext', '2': b'{}'}, {'1': b'p:from_source', '2': b'web'}, {'1': b's:mentioned_users', '2': b''}, {'1': b's:client_message_id', '2': str(uuid.uuid4()).encode()} ], '6': 1000, '7': user_code.encode(), '8': str(uuid.uuid4()).encode(), '14': talk_id } }, '9': session_did.encode(), '11': b'web', '15': [ {'1': b'pigeon_source', '2': b'web'}, {'1': b'PIGEON_BIZ_TYPE', '2': b'2'}, {'1': b'pigeon_sign', '2': b'MIG6BAz2BNUON43WdlOBuGYEgZcsIho9ZjVP4yyExLShzXgAZtsvUMj2e3jZWeMZv+6+TNVQQMq3xSLrqiwcs2cCaOVBDuS6zGsWm5gBlGtlvOOLM5td2/9OS8P37t1sdkjN4BSH2mB7FlGItioZIsTh1sodn6pYCGj+45mtId3Itenufgai3Mnkpt573uoWJmagF8J3jVPHMFtdwd25Qf5vsWC2kB30glpQBBCbk2VO2ubMqctqQSzhI6uD'}, {'1': b'session_aid', '2': b'1383'}, {'1': b'session_did', '2': session_did.encode()}, {'1': b'app_name', '2': b'im'}, {'1': b'priority_region', '2': b'cn'}, {'1': b'user_agent','2': b'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'cookie_enabled', '2': b'true'}, {'1': b'browser_language', '2': b'zh-CN'}, {'1': b'browser_platform', '2': b'Win32'}, {'1': b'browser_name', '2': b'Mozilla'}, {'1': b'browser_version', '2': b'5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36'}, {'1': b'browser_online', '2': b'true'}, {'1': b'screen_width', '2': b'1707'}, {'1': b'screen_height', '2': b'1067'}, {'1': b'referer', '2': b''}, {'1': b'timezone_name', '2': b'Asia/Shanghai'} ], '18': 2 } } message_type = {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'int', 'name': ''}, '4': {'type': 'int', 'name': ''}, '5': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '7': {'type': 'message', 'message_typedef': {'14': {'type': 'int', 'name': ''}}, 'name': ''}, '8': {'type': 'message', 'message_typedef': {'1': {'type': 'int', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'bytes', 'name': ''}, '4': {'type': 'bytes', 'name': ''}, '5': {'type': 'int', 'name': ''}, '6': {'type': 'int', 'name': ''}, '7': {'type': 'bytes', 'name': ''}, '8': {'type': 'message', 'message_typedef': {'100': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'int', 'name': ''}, '3': {'type': 'int', 'name': ''}, '4': {'type': 'bytes', 'name': ''}, '5': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '6': {'type': 'int', 'name': ''}, '7': {'type': 'bytes', 'name': ''}, '8': {'type': 'bytes', 'name': ''}, '14': {'type': 'int', 'name': ''}}, 'name': ''}}, 'name': ''}, '9': {'type': 'bytes', 'name': ''}, '11': {'type': 'bytes', 'name': ''}, '15': {'type': 'message', 'message_typedef': {'1': {'type': 'bytes', 'name': ''}, '2': {'type': 'bytes', 'name': ''}}, 'name': ''}, '18': {'type': 'int', 'name': ''}}, 'name': ''}} return value, message_type