Вот фраза, которая вызывает самые дорогие ошибки в автоматизации LinkedIn: API вернул 200, значит, пост ушёл.
Не обязательно. 2xx от любого API LinkedIn означает, что запрос приняли и передали дальше. Что LinkedIn сделает с ним потом — не покажет никому, задержит на проверку, тихо уронит, покажет и снимет через двадцать минут — в этом ответе нет, а в нескольких случаях нет ни в каком ответе.
Почему этот разрыв существует
Между вашим кодом и видимым постом как минимум два перехода, и второй — это платформа с собственным мнением об автоматическом содержимом. Синхронный код состояния не может доложить о решении, которое ещё не принято. Никто ничего не скрывает; информации не существует в тот момент, когда пишется ответ.
Что делать вместо предположений
- Сохраняйте то, что отправили, вместе с ответом и отметкой времени. Не булево значение: тело.
- Читайте обратно. Если пост важен, заберите его потом и запишите, что вернулось.
- Считайте число вызовов и число видимых результатов двумя разными метриками, потому что это они и есть.
- Никогда не показывайте клиенту «опубликовано» на одном лишь коде состояния.
Версия, которая бьёт больнее всего
Истекшее ожидание. Ваш запрос не провалился — вы просто перестали ждать ответа. Запись вполне могла дойти. Повтор — это то, как одно сообщение становится двумя, и второе замечает ваш клиент. Держите идентификатор для каждой записи, которую собираетесь сделать, проверяйте до повтора и предпочитайте прочитать мир, а не переиграть запрос.
Частые вопросы
Знает ли ИИ-агент разницу?
Только если ему сказать. ИИ-агент, получивший 200, обычно сообщит, что пост опубликован. Закрепите правило в его инструкциях: сообщать о записи как о принятой и перечитывать её, прежде чем говорить, что она вышла.
Как проектная комната сообщает о записи?
Ответом ИИ-агента в комнате, где его видят все. Это хорошая причина попросить агента процитировать то, что он отправил, и id, который получил в ответ.