如果评论触发的自动化报告某条活动 status: "sent",但发表评论的人却表示从未收到该私信,这几乎总是收件人的 Instagram 隐私设置所致——不是你的自动化或 Ayrshare 的缺陷。
sent 表示 Instagram 已接受该消息,并不代表已投递。 Instagram 在任何 API 层面都不公开消息投递情况。Ayrshare 会在 Instagram 接受该消息的那一刻将 send_dm 动作标记为 sent;它是否真的送达收件人,由 Ayrshare 无法读取或更改的设置决定。
由收件人的 “Message requests” 设置决定投递
每个 Instagram 用户都可以在 Settings and activity → Messages and story replies → Message requests 中控制谁可以向他们发送消息请求。选项大致为”所有人”、“你的粉丝”和”没有人”。
当你的自动化向一位限制了消息请求的用户发送私信时,Meta 会接受该请求,返回携带消息 ID 的成功响应,然后静默丢弃该消息。没有错误、没有失败 Webhook、也没有投递/已读信号——这种丢弃在每一个 API 层面都不可见。Meta 知道该消息无法送达(其自家 App 界面会显示 “This account can’t receive your message because they don’t allow new message requests from everyone”),但它不在 API 上公开这一情况。
已存在的会话会覆盖该设置
如果发送方与收件人已经存在消息会话(例如,收件人此前曾向该账户发送过私信),该已有会话会覆盖 Message requests 设置,自动化私信会被投递到已有会话中,而不是作为新的请求。这就是为什么同一条自动化能触达某些评论者却无法触达另一些人,也是为什么先向该账户发消息的收件人,之后就能可靠地收到自动化私信。
如何识别这种情况
- 活动条目显示
status: “sent”,且没有 errorDetails。 - 收件人报告没有收到私信(且不在其消息请求文件夹中)。
- 在不同收件人之间时有时无——一部分人收到了私信,另一部分人没有——且与你的配置没有规律可循。
这是一种投递结果,而不是失败状态,因此永远不会显示为 failed。failed 条目表示 Instagram 拒绝了该发送,且原因位于 actionResults[].errorDetails——那是不同的情况(见错误码)。
你能做什么
没有编程层面的绕过手段——任何 API、权限范围或发送形态都无法绕过收件人的 Message requests 设置。你可以做的是:
- 提前设定预期:评论触发的私信只能触达那些 Instagram 设置允许消息请求的用户,或者已经与你的账户建立会话的用户。
- 鼓励评论者向你的账户发送私信(或开启消息请求),如果他们希望收到后续跟进——一条入站消息会永久打开该会话。
- 考虑对评论进行公开回复,作为触达每一个人的备用途径。
评论触发的私信如何发送(私信回复)
评论触发的自动化通过 Instagram 私信回复(private replies) 投递该私信,锚定于评论自身。正是这一点让自动化可以向你从未私信过的评论者发送消息。理解其机制——以及其限制——是有价值的:
- 锚定评论的 7 天窗口。 该回复必须在评论发出后的 7 天内发送。之后窗口关闭,发送会失败并返回
code: 484。 - 每条评论仅一次回复,永久有效。 Instagram 每条评论只允许一次私信回复。再次尝试会失败并返回
code: 484——Instagram 通过用于窗口关闭的同一个共用错误来报告”已回复”,因此请查看 errorDetails 以判断实际情形。 - 作为消息请求送达。 即便是投递成功的私信回复,也会落入收件人的消息请求文件夹并需要被接受——除非已存在会话。
- 投递仍取决于收件人的设置。 私信回复消除了”必须先发过消息”的要求,但并不覆盖收件人的 Message requests 设置,那正是上文所述的限制。