资讯详情

资讯详情

instagram-private-api 私信排名收件人响应:DirectRepositoryRankedRecipientsResponseThread 接口全解析

后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载DirectRepositoryRankedRecipientsResponseThread是 NodeJS 版 Instagram 私有 API SDKinstagram-private-apiTypeScript 编写中ranked_recipients接口响应里会话thread类型收件人的数据结构定义。本文将结合源码 direct.repository.ranked-recipients.response.ts 与仓储实现 direct.repository.ts逐一拆解该接口的 8 个字段语义、它在整体响应层级中的位置以及rankedRecipients()的完整调用链与实战解析方法帮助你在构建 DM 收发、消息推荐等能力时准确消费这一数据结构。一、接口在响应结构中的位置在rankedRecipients()返回的响应里DirectRepositoryRankedRecipientsResponseThread并非顶层结构而是嵌套在排名收件人列表中的一环。从 direct.repository.ranked-recipients.response.ts 的接口族定义可以看到完整层级export interface DirectRepositoryRankedRecipientsResponseRootObject { ranked_recipients: DirectRepositoryRankedRecipientsResponseRankedRecipientsItem[]; expires: number; filtered: boolean; request_id: string; rank_token: string; status: string; } export interface DirectRepositoryRankedRecipientsResponseRankedRecipientsItem { user?: DirectRepositoryRankedRecipientsResponseUser; // 用户型收件人 thread?: DirectRepositoryRankedRecipientsResponseThread; // 会话型收件人 }响应路径为RootObject └── ranked_recipients[] (RankedRecipientsItem) ├── user? → 单用户收件人 └── thread? → DirectRepositoryRankedRecipientsResponseThread本文主题RankedRecipientsItem中的user与thread均为可选字段当 Instagram 端判定某个排名收件人是一条已有会话时会填充thread否则填充user。因此DirectRepositoryRankedRecipientsResponseThread描述的是一个已存在的会话作为建议收件人时的完整快照包含会话 ID、参与者、会话性质标志与查看者视角等信息。二、接口字段逐项解析接口定义位于 direct.repository.ranked-recipients.response.ts共 8 个属性。类型与语义如下字段类型说明thread_idstring会话唯一标识 IDusersDirectRepositoryRankedRecipientsResponseUsersItem[]会话参与用户列表canonicalboolean是否为标准会话namedboolean是否为有名称的命名会话thread_titlestring会话标题pendingboolean是否为待处理pending会话thread_typestring会话类型viewer_idnumber当前查看者即登录用户的 PKthread_id会话唯一标识类型string语义Instagram Direct 中每一条会话都有全局唯一的thread_id例如340282366841710300949128155570712853946。用途后续针对该会话的操作如进入会话、发送消息、修改标题通常都需要它作为入参。在 direct.repository.ts 中createGroupThread()返回的DirectRepositoryCreateGroupThreadResponseRootObject同样携带会话标识二者体系一致。users会话参与者列表类型DirectRepositoryRankedRecipientsResponseUsersItem[]语义该会话包含的用户数组。其元素结构与响应中的DirectRepositoryRankedRecipientsResponseUser完全一致见第四节包括pk、username、full_name、is_private、profile_pic_url、is_verified等。用途判断这条推荐会话里都有谁常用于私聊单对单场景下定位唯一会话对象或在群聊中获取全部参与者画像。canonical标准会话标志类型boolean语义标记该会话是否为标准会话。从字段命名与组合语义可以推断canonical: true表示这是一条被 Instagram 认定为常规/正式形态的会话例如正常的单聊或群聊而非临时性的特殊会话。值得注意canonical是线程型收件人的重要判定条件之一配合named、pending等标志可以刻画会话的正规程度。named命名会话标志类型boolean语义标记该会话是否为有名称的会话。named: true通常对应群聊场景——群聊可以由成员自定义标题单聊一般不会被视为命名会话。用途在渲染收件人列表时可根据该字段决定展示逻辑命名会话展示thread_title未命名会话可能展示参与者姓名。thread_title会话标题类型string语义会话的显示标题。对于群聊该值通常为自定义的群名称对于单聊可能为空字符串或系统生成的占位标题。注意该字段值可能为空消费时应做空值兜底不能假设它一定非空。pending待处理会话标志类型boolean语义标记该会话是否处于待处理pending状态。pending: true表示会话尚在等待接受/审批例如收到来自陌生人的新消息请求、群邀请待确认此时会话内的互动能力可能受限。用途在收件人选择器中通常应过滤掉pending: true的会话避免向尚未建立的会话发起消息。thread_type会话类型类型string语义会话的类别标识。从类型定义看是自由字符串用于区分不同会话形态如私聊与群聊。具体取值应在运行时结合实际响应判断不建议在代码中硬编码未经验证的枚举值。从源码结构可以推断该字段与canonical、named共同构成会话形态的判定组合是判断推荐这条会话时用单聊 UI 还是群聊 UI的关键依据。viewer_id查看者 ID类型number语义当前查看者即发起rankedRecipients()请求的登录用户的数字 PKprimary key。用途作为响应中的自我身份参考可用于区分会话中哪些users项是自己、排除自己、或计算对方对象是单聊场景中定位对端用户的常用辅助字段。三、接口在响应中的示例形态综合各字段一条thread型排名收件人响应大致如下字段结构以源码定义为准值为示意{ ranked_recipients: [ { thread: { thread_id: 340282366841710300949128155570712853946, users: [ { pk: 1111111111, username: alice, full_name: Alice, is_private: true, profile_pic_url: https://..., profile_pic_id: 1234, is_verified: false, has_anonymous_profile_picture: false, is_directapp_installed: true, is_using_unified_inbox_for_direct: true }, { pk: 2222222222, username: bob, full_name: Bob, is_private: false, profile_pic_url: https://..., profile_pic_id: 5678, is_verified: true, has_anonymous_profile_picture: false, is_directapp_installed: true, is_using_unified_inbox_for_direct: false } ], canonical: true, named: true, thread_title: Project Group, pending: false, thread_type: group, viewer_id: 123456789 } } ] }四、users 字段详解users数组中的每一项为DirectRepositoryRankedRecipientsResponseUsersItem完整定义同样位于 direct.repository.ranked-recipients.response.ts。它与响应中的DirectRepositoryRankedRecipientsResponseUser定义见第 14-25 行字段完全一致字段类型说明pknumber用户数字 PK全库唯一usernamestring用户名full_namestring显示全名is_privateboolean是否私密账号profile_pic_urlstring头像 URLprofile_pic_idstring头像媒体 IDis_verifiedboolean是否认证蓝 V账号has_anonymous_profile_pictureboolean是否使用系统默认匿名头像is_directapp_installedboolean是否安装了 Direct 应用is_using_unified_inbox_for_directboolean是否使用统一收件箱处理 Direct 消息对应的接口文档可参阅 DirectRepositoryRankedRecipientsResponseUsersItem 文档 与 DirectRepositoryRankedRecipientsResponseUser 文档。其中is_directapp_installed、is_using_unified_inbox_for_direct这两个字段对于判断对方能否及时收到私信通知有一定参考价值可辅助消息投递策略例如对未安装 Direct 的用户提示对方可能看不到消息。五、如何拿到该接口rankedRecipients() 调用链该接口是DirectRepository.rankedRecipients()的返回体的一部分。方法实现位于 src/repositories/direct.repository.tspublic async rankedRecipients( mode: raven | reshare raven, query , ): PromiseDirectRepositoryRankedRecipientsResponseRootObject { const { body } await this.client.request.sendDirectRepositoryRankedRecipientsResponseRootObject({ url: /api/v1/direct_v2/ranked_recipients/, method: GET, qs: { mode, query, show_threads: true, }, }); return body; }关键请求细节接口地址GET /api/v1/direct_v2/ranked_recipients/mode参数取值raven默认或reshare用于控制排名收件人的推荐场景文档化的方法签名见 DirectRepository 类文档。query参数搜索关键词默认空字符串。传入用户名等关键字时服务端会返回过滤后的匹配收件人。show_threads参数固定为true即要求服务端在响应中返回会话型收件人——这正是DirectRepositoryRankedRecipientsResponseThread能出现在结果中的前提。返回体PromiseDirectRepositoryRankedRecipientsResponseRootObject其根级字段ranked_recipients、expires、filtered、request_id、rank_token、status文档见 RootObject 接口文档。客户端访问方式在IgApiClient上通过ig.direct.rankedRecipients()调用ig.direct即DirectRepository实例import { IgApiClient } from instagram-private-api; const ig new IgApiClient(); ig.state.generateDevice(process.env.IG_USERNAME); await ig.account.login(process.env.IG_USERNAME, process.env.IG_PASSWORD); // 拉取 raven 模式排名收件人 const res await ig.direct.rankedRecipients(); for (const item of res.ranked_recipients) { if (item.thread) { // 会话型收件人直接消费 DirectRepositoryRankedRecipientsResponseThread const { thread } item; if (thread.pending) { console.log([skip] pending thread ${thread.thread_id}); continue; } const me res.ranked_recipients // viewer_id 定位 .map(r r.thread) .filter(Boolean) .find(t t.viewer_id ig.state.cookieUserId); console.log(thread: ${thread.thread_title || thread.thread_id}); console.log(participants: ${thread.users.map(u u.username).join(, )}); } else if (item.user) { // 用户型收件人DirectRepositoryRankedRecipientsResponseUser console.log(user: ${item.user.username}); } }六、实战场景登录后模拟流程中的应用该接口不仅在业务层被消费还深度参与了 SDK 自身的登录模拟流程。在 src/services/simulate.service.ts 的postLoginFlow()中登录成功后会自动并发调用两个模式的排名收件人接口() this.client.direct.rankedRecipients(reshare), () this.client.direct.rankedRecipients(raven),这说明在真实 Android 客户端中登录后立即获取reshare转发与raven私信两种场景的排名收件人是标准行为。对于用该 SDK 构建自动化账号的开发者而言还原真实设备行为登录后执行ig.simulate.postLoginFlow()可置于process.nextTick异步执行见 README.md 中的基础用法即可自动完成包括rankedRecipients在内的设备行为预热降低账号被风控判定为异常客户端的概率业务复用直接调用ig.direct.rankedRecipients(raven, query)即可在自定义私信功能如向最近联系人发送消息中获取推荐会话列表。七、相关接口与源码索引本主题涉及的所有接口与源码可按以下仓库路径继续深入接口族源码RootObject / RankedRecipientsItem / User / Thread / UsersItem 全部定义src/responses/direct.repository.ranked-recipients.response.ts仓储方法实现src/repositories/direct.repository.ts登录模拟流程调用处src/services/simulate.service.ts接口文档本接口 DirectRepositoryRankedRecipientsResponseThread、RankedRecipientsItem、RootObject、User、UsersItem仓储类方法签名DirectRepository 类文档八、使用建议与注意点判空优先RankedRecipientsItem的thread与user均为可选字段解析前必须先做存在性判断避免访问空属性过滤 pending 会话在收件人选择 UI 中建议跳过pending: true的会话避免向未建立的会话发送消息标题兜底thread_title可能为空展示时应回退到thread_id或参与者姓名拼接区分会话形态通过named/canonical/thread_type组合判断单聊与群聊决定展示与消息行为如群聊是否允许 全体viewer_id 辅助定位对方在单聊中用viewer_id从users中排除自己即可得到消息对端。赞分享后端【免费下载链接】instagram-private-apiNodeJS Instagram private API SDK. Written in TypeScript.项目地址https://gitcode.com/gh_mirrors/in/instagram-private-api点击查看免费下载相关推荐instagram-private-api 响应接口详解DirectRepositoryRankedRecipientsResponseRootObject 与 DM 排名收件人数据解析instagram private api 响应接口详解DirectRepositoryRankedRecipientsResponseRootObject后端instagram-private-api 私信收件箱用户接口 DirectInboxFeedResponseUser 全面解析instagram private api 私信收件箱用户接口 DirectInboxFeedResponseUser 全面解析 导读 DirectInboxF后端instagram-private-api 源码解析DirectInboxFeedResponsePlaceholder 占位符接口与私信收件箱响应模型instagram private api 源码解析DirectInboxFeedResponsePlaceholder 占位符接口与私信收件箱响应模型 Di后端上一篇11.7GB 只用 38 秒m4s-converter 免费合并 B 站缓存m4s 无损转 MP4下一篇Reloaded-II 完整使用指南从游戏进程注入到自定义模组配置创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →