IOSOR База знаний

Политика retry при failed DLR в prepaid: когда повторять и когда перестать тратить

Failed, rejected и expired — не одно слово. Каждый prepaid-retry — дебет. Согласуйте словарь статусов до потолка попыток, иначе кошелёк сгорит в мёртвом коридоре.

«Не дошло» — это не статус, а кнопка retry — не стратегия. В prepaid каждая автоматическая попытка — строка ledger, не бесплатная вежливость. undelivered, rejected и expired требуют разных действий. Продукт, который долбит retry до пустого кошелька, гонится за конверсией, пока финансы платят вторую и третью попытку на мёртвый номер. Договоритесь о словаре до цикла — иначе инцидент станет спором о словах в 02:00.

IOSOR — white-label prepaid messaging с одним словарём DLR в дашборде, webhook и экспорте. Коридор live допускает ограниченный retry; in setup не открывается «со следующей попытки». См.

Словарь статусов до логики retry

Распечатайте terminal-статусы в таблицу, на которую могут указать продукт, ops и финансы. Retry без словаря — цикл, который жжёт деньги. Когда delivered падает, идите в плейбук низкой доставляемости SMS, прежде чем кто-то напишет «пока не дойдёт».

Failed vs rejected vs expired

Failed / undelivered значит: платформа сдала работу, терминал не подтвердил. Если коридор здоров, ограниченный retry может спасти конверсию. Rejected — отказ сети или политики: тот же номер и то же тело почти всегда снова откажут и снова спишут. Expired — время: TTL короче latency коридора или очередь до send. Считать expired как failed и долбить retry только множит строки expired.

Потолки retry и удар по кошельку

Поставьте потолок автоматических попыток на сообщение. Каждая попытка должна сходиться с correlation ID в ledger. «Пока не дойдёт» без потолка опустошает prepaid на мёртвом коридоре. Финансы должны выгружать destination, статус, номер попытки и дебет. Около USD 1 000+ бесхозный цикл перестаёт быть тикетом и становится коммерческой темой.

Владение продукта vs финансов

Продукт владеет политикой: какие статусы допускают retry, TTL, cooldown resend. Финансы владеют видимостью: дебетует ли каждая попытка, сходится ли экспорт с webhook. Ops владеет срезом коридора. Без одной таблицы prepaid не решит «повторить» против «перестать тратить». Не дайте support обещать устный возврат, пока ledger списывает каждую попытку. Выгрузите неделю terminal-событий в словарь, прежде чем спорить о возвратах.

Красные флаги

  • Есть только sent и failed, но включён авто-retry
  • Три одинаковых удара по rejected payload
  • Expired как авария сети
  • Системный failover и пользовательский resend в одной строке дебета
  • «Пока не дойдёт» без потолка попыток
  • Retry обещан при каталоге in setup
  • В экспорте финансов нет номера попытки
  • Скриншоты как единственное доказательство статуса

Старт с IOSOR

Заполните словарь: failed против rejected против expired. Потолок на авто-retry, чтобы каждый неуспешный DLR не открывал новое prepaid-списание. Кнопка повторной отправки пользователя отдельна от системной попытки. Докажите потолок на двух live-коридорах малым объёмом.

Итог IOSOR

Retry неуспешного DLR — потолок траты, не бесконечный цикл.

Делайте: классифицируйте terminal-статус, режьте попытки, выгружайте пользовательский resend отдельно от системной попытки. Не делайте: крутить rejected или expired как будто это мимолётный failed.

Был ли материал полезен?

Связанные гайды