如果留言觸發的自動化回報活動 status: "sent",但留言者說他們從未收到 DM,這幾乎都是接收者的 Instagram 隱私設定所致 — 並非你的自動化或 Ayrshare 的錯誤。
sent 表示 Instagram 接受了該訊息,並不表示訊息已送達。 Instagram 不會在任何 API 介面上暴露訊息送達狀態。Ayrshare 會在 Instagram 接受該次發送的瞬間將 send_dm 動作標記為 sent;訊息是否真的送到接收者,是由 Ayrshare 無法讀取或變更的設定所決定。
接收者的「Message requests」設定決定是否送達
每位 Instagram 使用者都可以在 Settings and activity → Messages and story replies → Message requests 中控制誰能對其發送訊息請求。選項大致為「Everyone」、「Your followers」與「No one」。
當你的自動化對限制了訊息請求的使用者發送 DM 時,Meta 會接受該請求、回傳帶有 message ID 的成功回應,然後靜默丟棄該訊息。沒有錯誤、沒有失敗 webhook,也沒有送達/已讀訊號 — 這種丟棄在任何 API 層都是不可見的。Meta 自己知道該訊息無法送達(其自家 App 的 UI 會顯示 “This account can’t receive your message because they don’t allow new message requests from everyone”),但不會在 API 上暴露此資訊。
既有的對話會覆寫此設定
若發送者與接收者之間已有訊息對話(例如接收者先前曾對該帳號發送過 DM),該既有對話會覆寫 Message requests 設定,自動化 DM 就會送入既有對話中,而不是以新的訊息請求形式抵達。這就是為什麼同一個自動化能觸及某些留言者卻無法觸及另一些,也是為什麼先對該帳號發送訊息的接收者之後就能穩定地收到自動化 DM。
如何辨認這個情況
- 活動列顯示
status: “sent”,且沒有 errorDetails。 - 接收者回報沒有收到 DM(且該訊息也不在其 message-requests 資料夾中)。
- 在不同接收者之間呈現斷續狀況 — 有些人收到 DM、有些人沒有 — 且與你的設定沒有明顯關聯。
這是送達的結果,而非失敗狀態,因此絕不會顯示為 failed。failed 列代表 Instagram 拒絕了該次發送,其原因會記錄於 actionResults[].errorDetails — 那是不同的情況(請見錯誤代碼)。
你可以做什麼
沒有程式化的變通方法 — 沒有任何 API、scope 或發送形態能繞過接收者的 Message requests 設定。你可以做的是:
- 事先設好預期:留言觸發的 DM 只會觸及那些 Instagram 設定允許訊息請求的人,或已與你的帳號存在對話的人。
- 鼓勵留言者對你的帳號發送 DM(或開啟訊息請求),若他們想要收到後續資訊 — 一則來訊會永久打開該對話。
- 考慮將對留言的公開回覆作為觸及所有人的備援管道。
留言觸發 DM 的發送方式(private replies)
留言觸發的自動化會透過 Instagram private replies 送出 DM,並錨定於留言本身。這正是讓自動化能對你先前從未傳訊過的留言者發送訊息的機制。該機制的細節 — 以及其限制 — 值得了解:
- 錨定於留言的 7 天視窗。回覆必須在留言的 7 天內送出。超過後視窗會關閉,發送會以
code: 484 失敗。 - 每則留言僅一次回覆,永久有效。Instagram 每則留言只允許一次 private reply。第二次嘗試會以
code: 484 失敗 — Instagram 對「已回覆」與「視窗已關閉」使用相同的共用錯誤回報,因此請檢查 errorDetails 以判斷實際情況。 - 以訊息請求形式抵達。即使是成功送達的 private reply,也會落在接收者的 message-requests 資料夾中,且必須被接受 — 除非已存在對話。
- 是否送達仍取決於接收者的設定。Private replies 移除了「必須先發送過訊息」的要求,但不會覆寫接收者的 Message requests 設定,這正是上文所述的限制。
相關資源