Comentarii
Комментарии: почему они не являются сообщениями и почему с ними не обращаются как с сообщениями
Личное сообщение имеет одного читателя. У комментария есть все читатели страницы, включая конкурентов, включая кого-то, кто ищет повод для скандала. Хороший ответ в личке может стать катастрофой публично — например, цена, доступность или подтверждение того, что кто-то действительно ваш клиент. Поэтому у комментариев отдельный маршрут, отдельные правила и значение по умолчанию, которое склоняется к дискретности.
Как комментарий попадает в систему
Страница подписывается на разные поля в двух сетях: в Facebook — на ленту страницы, в Instagram — явно на комментарии и на комментарии в прямых трансляциях. Они попадают в ту же точку входа, что и сообщения, но по отдельной ветке, распознаваемой по наличию списка изменений вместо списка сообщений. Формат отличается между сетями и определяется отдельно для каждой. Также читается родительский комментарий, чтобы знать, является ли это ответом на другой комментарий, и пост или материал, на котором он появился.
Только новые комментарии что-то запускают
Meta отправляет одно и то же событие для нескольких действий. Только добавление комментария запускает агент. Редактирование, удаление, скрытие и показ снова журналируются и останавливаются там. Изменение числа лайков игнорируется без следа, потому что иначе журнал был бы сплошным шумом.
Четыре фильтра, прежде чем агент увидит текст
Комментарии самой страницы отбрасываются — иначе агент отвечал бы сам себе бесконечно. Уже обработанные комментарии отбрасываются по уникальному идентификатору комментария, который имеет ограничение уникальности в базе. Пустые комментарии, комментарии длиной не более двух символов и комментарии, состоящие только из emoji, отбрасываются. А тексты, содержащие длинные номера телефонов или веб-адреса, проходят через спам-фильтр с четырьмя шаблонами и останавливаются, помеченные как таковые.
Публично или приватно: значение по умолчанию — приватно
У каждого агента есть четыре отдельных переключателя, два для Facebook и два для Instagram: публичный ответ включён или выключен, приватный ответ включён или выключен. Над ними находится общий режим с тремя позициями — выключен, автоматически, или с одобрением. Когда конфигурация отсутствует или её нельзя прочитать, запасное значение в коде — не «отвечать публично», а «не отвечать публично, отвечать в приватно». Это сознательный выбор: ошибка конфигурации не должна выводить текст на чью-то публичную стену.
Отключённый агент означает отключённые комментарии
Если ассистент архивирован, неактивен, деактивирован или поставлен на паузу, или если бот отключён из аккаунта клиента, режим комментариев автоматически становится «выключен», независимо от того, что написано в переключателях комментариев. Одно место для отключения, а не четыре, которые нужно помнить.
На что не отвечают публично, и насколько жёсткое правило
Инструкция, данная модели для публичного ответа, задана явно: максимум два предложения, короткий и дружелюбный тон, приглашение в личные сообщения для деталей и запрет давать подробную информацию или цены публично. Сверху — жёсткий лимит: публичный ответ обрезается до 300 символов. Над обоими — свободный текст, который вы пишете как собственные инструкции, отдельно для публичного и для приватного. Мы честно говорим, насколько жёсткое правило: это инструкция для промпта плюс ограничение длины, а не детерминированный фильтр, который мог бы гарантировать, что цена никогда не появится. Когда нужна жёсткая гарантия, публичный ответ отключается и остаётся только приватный, либо включается режим с одобрением.
Один раз каждые 30 секунд, в одной и той же публикации
Публичный ответ имеет счётчик на публикацию: максимум один раз в 30 секунд. Причина в том, что происходит, когда публикация «заходит» — тридцать комментариев за две минуты, а страница заполняется одинаковыми ответами робота под каждым. Счётчик очищается сам, сохраняя последние тысячу отслеживаемых публикаций.
Instagram не позволяет отправить личное сообщение на подкомментарий
Это правило платформы, а не наше, и оно проверяется в трёх разных местах в коде, по всем трём путям, по которым можно дойти до личного сообщения. Когда у комментария есть родитель и сеть — Instagram, отправка в личные сообщения пропускается, а в журнал записывается точная причина. Не происходит попытки с тихим сбоем — пропуск выполняется явно.
От комментария к разговору
Переход выполняется через официальный механизм: личное сообщение отправляется с использованием идентификатора комментария в качестве получателя, а не идентификатора человека. С этого момента существует обычная нить сообщений, со всеми правилами выше — буфер, источники, инструменты, передача человеку. Нить помечается как происходящая из комментариев, а полученный комментарий сохраняется в истории разговора с собственным типом, чтобы было видно, откуда всё началось.
Режим с одобрением: агент пишет, человек публикует
Когда режим — «с одобрением», сгенерированный ответ не отправляется дальше. Он сохраняется как черновик, в ожидании, и появляется в очереди в панели, со счётчиком. Оттуда его одобряют или отклоняют, по одному элементу за раз. Одобренная публикация проходит через внутренний мост, защищённый сравнением подписи в постоянное время — одобренный ответ нельзя внедрить извне.
Что может сделать человек вручную
Скрытие комментария, с механизмом, подходящим для каждой сети, и пометкой состояния в базе. Удаление, с пометкой удалённого. Массовое скрытие, максимум 25 комментариев в одной партии. Закрытие комментариев на материале Instagram. И скрытие комментариев из прямой трансляции, по отдельному маршруту. Это ручные действия, не автоматические. Не существует списка запрещённых слов, который бы сам скрывал комментарии, и мы не утверждаем, что он существует.