Согласие, реестр и зона ответственности
Подтверждение согласия и цель обзвона
Перед запуском платформа требует подтвердить, что у вас есть согласие абонентов на звонки. В кабинете это галочка с юридическим текстом; через API — полеattestation в запросе. Без него кампания создаётся, но остаётся черновиком с причиной «нужна подпись».
Подпись ставится ключом, а человеческое звено — сотрудник, выпустивший ключ (Ключ доступа). Подпись привязана к конкретной версии данных: подтверждение, данное под одним списком номеров, не переносится на следующий. Загрузили новый список или добавили партию номеров — подтверждаете заново.
Цель обзвона (classification) — чем именно вы звоните:
От цели зависит тип согласия (
consent_tier) — какой именно юридический текст вы подписываете. Поэтому платформа её не угадывает: не указали — берётся marketing, самый строгий вариант. В ответе приходит и цель, и получившийся тип, чтобы вы видели, под каким текстом подписались.
Реестр «не звонить»
Номера из реестра вашей организации платформа находит до первого звонка и перечисляет поимённо. Проверяется каждая читаемая строка списка до удаления дублей: поэтому три строки одного номера — это три совпавшие строки, но один исключённый номер. Строки с нечитаемым телефоном считаются «непроверенными», а ноль совпадений всегда возвращается явным статусомclean, а не выводится из пустого списка. Запуск при этом останавливается.
Дальше решаете вы:
- оставить блокировку (
dnc: "block", значение по умолчанию) — совпавшие номера не набираются; - подтвердить обзвон (
dnc: "skip") — платформа записывает это решение в аудит ровно так же, как кнопку в кабинете, с указанием, к какой загрузке и к какому точному составу совпадений оно относится. Появилась новая запись реестра по тому же списку — согласие сбрасывается, и проверка запуска снова показывает обновлённый список совпадений.
Что платформа делает сама, а что остаётся вам
Делает платформа: разбор номеров и переменных, дубли, реестр «не звонить», география и законное окно звонков (США), окно обзвона организации, темп обзвона, повторы недозвонов, ограничение частоты звонков на номер, часовые пояса контактов, записи разговоров, разбор результатов. Остаётся вам: решить, когда запускать кампанию и с каким списком; хранить у себя связь между вашими сущностями и кампанией; читать прогресс, если нужен статус в вашем интерфейсе; получать результаты звонков (вебхуки по каждому звонку работают так же, как для отдельных звонков). Про повторы недозвонов. По умолчанию кампания делает одну попытку на номер и никого не перезванивает. Если хотите, чтобы платформа перезванивала сама, задайте число попыток и паузу между ними (retry_config). Если перезвонами управляет ваша система (повторно присылает номер как собственный перезвон), оставьте одну попытку — иначе перезвон получится двухуровневым: ваш плюс платформенный. Повторно присланный номер, по которому кампания уже звонила, принимается как новый звонок и набирается снова.
Про рабочие часы. Если вы не задали кампании рабочие часы, это не значит «звонить круглосуточно»: платформа звонит в пределах окна обзвона вашей организации (а в США — в пределах законного окна юрисдикции абонента). Часы кампании могут только сужать это окно; попытка задать более широкие часы отклоняется сразу.
Добавить номера в уже созданную кампанию — можно, отдельным запросом POST /v1/campaigns/{id}/calls: партия несёт номера и подпись, а агент, линия, рабочие часы и повторы берутся из кампании. Работает для любой незакрытой кампании — черновика, запланированной, идущей или приостановленной. Правила, о которых надо знать заранее:
- партия принимается целиком или отклоняется целиком. Одна нечитаемая строка — и не уйдёт ни один номер из партии (
calls_rejected); один номер из реестра «не звонить» — тоже вся партия, но своим кодом (calls_dnc_matched), чтобы ваша система отличала «исправить данные» от «убрать этих людей из базы». Ответ несёт разбор отклонённой партии с номером загрузки и первыми строками; полный отчёт — как у любой загрузки; - партия принимается и тогда, когда кампания сейчас не звонит — например, стоит на паузе. Ответ скажет, что номера приняты, и назовёт причину простоя (
campaign_paused); набор продолжится после возобновления; - обычная кампания закрывается сама, когда очередь опустела — и после этого номера в неё не принимаются вовсе. Чтобы кампания ждала номера, создайте её открытой к добавлению звонков:
accepts_call_additions: trueс обязательной датой окончания (не дальше 30 суток). Такую кампанию можно создать пустой, наполнять партиями и закрыть отменой либо дождаться даты. Признак задаётся при создании и потом не меняется; - в одной партии — не больше 1000 номеров; больше — разбивайте.
- отдельное событие «кампания завершилась». Состояние читается запросом прогресса или карточки кампании;
- отдельная выдача результатов кампании с расшифровками. Результаты читаются как обычные звонки;
- разные права у разных ключей. Ключ либо есть, либо нет; ограничение доступа по разделам не предусмотрено.