Вернуться к документации

Попытки и диагностика Outbound

Сводка исполнения, HTTP-попытки, подробности сети и чтение одной ревизии данных.

Открыть как Markdown
На этой странице

Начните с карточки

Откройте отправку в Outbound → Requests. Запись запроса, сводка и подробный отчёт могут появляться в разное время. Ошибка подробностей не доказывает сбой HTTP-вызова. Refresh обновляет отображаемые сведения, а не запускает задание заново.

Сводка и квота

Сводка показывает региональное состояние, времена, признак сохранения ответа, размер исходного тела и попытки. Поля quota_admitted, admitted_at и wait_reason помогают отличить допуск к исполнению от ожидания. Неизвестная квота ожидается до первой попытки; неположительная отклоняет отправку без HTTP. Уже принятое API задание не обязательно начало вызов получателя.

Попытки

Для каждой попытки проверяйте attempt_id, номер, начало/завершение, HTTP-код, ошибку, прочитанные и сохранённые байты, body_truncated и read_complete. Незавершённые значения могут отсутствовать или быть null; это не подтверждение успешного завершения. При сетевом отказе кабинет и JSON попытки могут показывать HTTP status 0: HTTP-ответ получателя не получен. Ноль не является HTTP-кодом ответа; смотрите ошибку и диагностические события попытки.

Если попыток нет, обновите снимок позднее и проверьте ожидание. Если вызов неудачен, изучайте его ошибку и окончательный статус задания, а не только отдельный промежуточный 5xx.

Неуспешные попытки Outbound: HTTP status 0, request_failed и Load delivery details

Сетевой отказ в демонстрационной истории: HTTP status 0 требует разбора ошибки и подробностей попытки. Демонстрационный кабинет, английский интерфейс. Открыть полный размер.

Подробности в кабинете

Нажмите Load delivery details, затем при наличии продолжения Load more details. Кабинет собирает метаданные запроса, диагностику попыток и транспортные события. Сетевые/TLS/HTTP-события представлены с временами; полный JSON сохраняет остальные поля.

Сведения о запросе могут появиться раньше диагностики попыток и событий соединения. Пока доступна Load more details, получены ещё не все страницы отчёта; продолжайте загрузку. Наличие одного готового документа не означает, что весь отчёт уже загружен. При сообщении о смене подробностей нажмите Refresh и начните загрузку заново. Если подробности не удаётся отобразить, не считайте отсутствие блока доказательством отсутствия попытки.

Сводка через API

GET /outbound/requests/{request_id}/http возвращает доступную сводку с available=true, status_version, details_revision и snapshot. Возьмите details_revision из этого ответа; это не идентификатор запроса и не номер попытки. Все чтения требуют API-токен и пустое тело запроса.

Постраничные подробности

Сохраните номер ревизии как ADAL_DETAILS_REVISION. Первый запрос:

curl --fail-with-body --silent --show-error --get \ --header "Authorization: Bearer $ADAL_API_TOKEN" \ --data-urlencode "details_revision=$ADAL_DETAILS_REVISION" \ "$ADAL_API_URL/outbound/requests/$ADAL_REQUEST_ID/http/details"

Ответ содержит available, details_revision, records и next_cursor. Для продолжения передайте ту же ревизию и полученный непустой cursor, кодируя его как значение query. Не придумывайте курсор и не начинайте страницы с новой сводкой между ними. Пустой next_cursor означает конец этой последовательности.

records содержат фрагменты формата json_documents_base64_fragments_v1: document, part, encoding, data, document_bytes. Документ 0 — запрос, 1–10 — попытки, 11 — транспортные события. Декодируйте base64 каждого фрагмента отдельно, соединяйте байты документа по порядку частей, проверяйте document_bytes, затем разбирайте полный UTF-8 JSON. Транспортный документ — массив, остальные — объекты. Это не массив уже готовых документов в каждом ответе.

Не смешивайте ревизии, не игнорируйте пропущенные/повторные части и зацикливание курсора. При 409 revision_changed отбросьте неполную сборку, получите новую сводку и начните заново.

Недоступность

  • 409 not_yet_available — данные ещё не готовы; повторите чтение позднее.

  • 409 с duplicate_of — это дубль; переходите к оригиналу.

  • available=false, reason=expired — HTTP-данные истекли, журнал может оставаться.

  • 404 — запись не найдена или не принадлежит аккаунту; проверьте ID и доступ.

  • 503 — временный отказ получения данных, а не достоверный исход HTTP-доставки.

Параметры диагностики отличаются от фильтров журнала: не отправляйте page или region в /http/details.

Безопасный разбор

Подробности могут содержать адреса, заголовки и чувствительные данные. Не вставляйте весь JSON в публичную задачу. Для поддержки используйте ID, время и безопасное описание этапа. Скачивание тела и признаки полноты — в отдельной статье; расписание — в повторах.

Связанная документация