Перейти к содержимому

Три цифры описывают, насколько хорошо работает кампания из комментария в ЛС: доля совпадений, доля доставки и время до первого ЛС. Все три определены ниже вместе с кампанией, которую нужно построить, комментариями, которые нужно опубликовать, и файлом, в котором публикуются результаты. Данные не собраны, поэтому ни одного результата на этой странице нет — методология публикуется первой, намеренно.

Статус: методология опубликована; сбор данных не начат. Каждое измеренное поле в этом документе пусто до завершения первого запуска, после чего результаты и сырой набор данных публикуются здесь.

Каждая метрика — это счётчик, делённый на счётчик, взятый на одном запуске против одной подключённой страницы, и каждая имеет знаменатель, который исключает пробы, которые платформа вовсе не доставила AFP.

МетрикаОпределениеЕдиница
Начатые пробыКомментарии, опубликованные во время запуска, которые породили выполнение тестовой кампанииколичество
Доля совпаденийПробы, чьё выполнение покинуло узел-условие через Match, делённые на начатые пробыпроцент
Доля доставкиПробы, чьё выполнение записало отправленное ЛС, делённые на пробы, чьё выполнение достигло узла send_dmпроцент
Время до первого ЛССекунды от публикации комментария наблюдателем до появления ЛС в переписке получателясекунды, медиана и 90-й перцентиль

Доля совпадений измеряет узел-условие, а не триггер. Узел-триггер не несёт конфигурации ключевых слов, поэтому каждый комментарий на посте в области запускает выполнение, и условие — единственное место, где текст сравнивается. Правила сопоставления ключевых слов определяет сравнение, которое выполняет каждый тип сопоставления.

Доля доставки измеряет то, что записал AFP, а не то, что увидел получатель. Узел send_dm, вызывающий ошибку, записывает эту ошибку, и запуск останавливается на нём, поэтому сбой виден; сообщение, принятое Facebook или Instagram и отфильтрованное после, считается доставленным по этому определению.

Время до первого ЛС измеряется по часам наблюдателя на обоих концах — когда комментарий отправляется и когда ЛС появляется в переписке получателя. Временные метки, записанные внутри AFP, приходят от платформы и служат только перекрёстной проверкой.

Observer posts a commentclock startsComment reaches the connected pageTrigger accepts itexecution startsConditionkeyword listSend DM nodeRun ends with no DMDM appears in the recipient's conversationclock stops Match No Match

Одна кампания, четыре узла, без ожидания. Что-либо ещё в графе добавляет переменную, не имеющую отношения к трём метрикам.

  1. Создайте кампанию, привязанную к тестируемой странице, и откройте её на холсте.
  2. Добавьте триггер комментария. Установите область поста на конкретный пост (specific post) и выберите пост, созданный для запуска, чтобы обычный трафик на других постах не мог попасть в выборку. Оставьте уникально для пользователя (unique per user) выключенным — с ним повторный комментатор блокируется, и проба никогда не начинается.
  3. Добавьте узел-условие с типом сопоставления Список ключевых слов (Keyword list), указывающим на список ключевых слов, созданный для запуска. Оставьте обратное сопоставление выключенным, оставьте фильтры изображений, GIF и ссылок выключенными и оставьте ожидание ответа (wait for reply) выключенным, чтобы запуск разрешился за один проход.
  4. Добавьте узел send_dm с фиксированным текстовым сообщением, подключённый к выходу Match условия. Не подключайте ничего к No Match, чтобы несовпадающий запуск заканчивался на условии и был однозначным в истории.
  5. Сохраните кампанию, затем включите её. Активация валидирует граф и является отдельным действием от сохранения.
  6. Отключите все остальные кампании на этой странице. Каждая активная кампания, чей триггер совпадает, запускает своё выполнение, и две кампании, отвечающие на один комментарий, делают долю доставки бессмысленной.

Сначала окружение: одна страница Facebook и один бизнес-аккаунт Instagram, оба подключены и подписаны, под аккаунтом, чья подписка активна. Комментарий, пришедший, пока подписка неактивна, записывается как ошибка подписки, а страница, чей сохранённый доступ перестал работать, записывает ошибку повторного входа. Оба считаются сбоями окружения и исключаются из всех долей.

  1. Зафиксируйте список ключевых слов на одно ключевое слово и зафиксируйте текст ЛС. Запишите оба дословно в заметках запуска.
  2. Назначьте один уникальный аккаунт комментатора на пробу. Один человек имеет один активный запуск одной кампании за раз, поэтому второй комментарий с того же аккаунта, пока первый запуск ещё активен, пропускается и молча сократил бы выборку.
  3. Комментируйте с аккаунтов, отличных от самой страницы. Комментарии, которые публикует страница, игнорируются, что исключает ведение запуска с аккаунта страницы.
  4. Для каждой пробы опубликуйте текст комментария для её корзины и запишите время отправки по часам наблюдателя.
  5. Наблюдайте за перепиской получателя и запишите время прибытия ЛС по тем же часам. Запишите отсутствие прибытия после фиксированной отсечки, выбранной до начала запуска и указанной с результатами.
  6. Прочитайте историю выполнений кампании и запишите для каждой пробы, покинул ли запуск условие через Match и где он остановился. История возвращает 20 самых свежих запусков и не обновляется сама, поэтому держите каждый пакет меньше этого и читайте его перед началом следующего.
  7. Отфильтруйте ленту активности по странице и временному окну запуска, затем экспортируйте её. Экспорт применяет фильтры ленты и загружается как JSON, и это журнал аудита за таблицей проба за пробой.
  8. Повторите на второй платформе, не меняя форму кампании, ключевое слово или текст ЛС.

Каждая проба принадлежит одной корзине, и корзина фиксирует как опубликованный текст, так и ветку, которую она ожидается принять.

КорзинаЧто публикуетсяОжидаемая ветка
Точное ключевое словоТолько ключевое словоMatch
Ключевое слово в предложенииПредложение, содержащее ключевое слово как подстрокуMatch
Ключевое слово в верхнем регистреКлючевое слово, набранное заглавными буквамиMatch
Почти совпадениеСлово, которое делит префикс с ключевым словом, не содержа егоNo Match
Несвязанный текстКомментарий на посте, не содержащий ключевого словаNo Match
Только медиаСтикер или изображение без текстаNo Match

Комментарий только с медиа достигает условия как текст-заполнитель, а не как пустая строка, поэтому он принадлежит выборке: это единственная корзина, где то, что сравнивает условие, — не то, что набрал комментатор.

Результатов нет. Сбор данных не начат, и ничего на этой странице не было измерено.

Определения, форма кампании, корзины и отсечка зафиксированы публично до появления любого числа, поэтому итоговые цифры можно проверить против протокола, который никто не мог настроить после просмотра данных.

Один файл JSON на запуск, публикуемый на этой странице рядом со сводной таблицей, с одним объектом на пробу. Экспорт активности, сделанный на шаге 7, публикуется с ним без изменений, поэтому каждую пробу можно проследить до строки, которую записал AFP.

ПолеЧто хранит
trial_idПорядковый номер в запуске
platformfacebook или instagram
bucketОдно из шести названий корзин выше
comment_textТочный опубликованный текст
comment_posted_atЧасы наблюдателя, когда комментарий был отправлен
execution_startedБыло ли создано выполнение для этого комментария
branch_takenmatch, no_match или none
dm_recordedЗаписало ли выполнение отправленное ЛС
dm_observed_atЧасы наблюдателя, когда ЛС появилось в переписке
time_to_first_dm_secondsРазница между двумя временными метками наблюдателя
outcomedelivered, no_match, no_execution, environment_failure или timeout
notesЧто-либо необычное в пробе, простым текстом

Измеренные поля равны null, пока запуск их не заполнит. Одна проба из опубликованного скелета выглядит так:

[
{
"trial_id": 1,
"platform": "facebook",
"bucket": "exact_keyword",
"comment_text": "price",
"comment_posted_at": null,
"execution_started": null,
"branch_taken": null,
"dm_recorded": null,
"dm_observed_at": null,
"time_to_first_dm_seconds": null,
"outcome": null,
"notes": ""
}
]
  • За доставку отвечает не только AFP. AFP передаёт сообщение в Facebook или Instagram; что происходит после, выходит за рамки всего измеренного здесь, а время до первого ЛС включает собственное время доставки платформы.
  • Один аккаунт, одна аудитория, одно окно. Запуск охватывает одну страницу Facebook и один бизнес-аккаунт Instagram в одно время суток. Он ничего не говорит о страницах с другим трафиком, другим числом подписчиков или в другом регионе.
  • Часы наблюдателя ручные. Оба конца измерения времени записываются человеком, наблюдающим за двумя поверхностями, поэтому разрешение грубое, а время человеческой реакции входит в число.
  • Выборка синтетическая. Комментарии, написанные для заполнения корзин, — не те комментарии, которые пишут реальные подписчики, а корзина «почти совпадение» выбрана так, чтобы сидеть близко к границе совпадения.
  • Обработка регистра не подтверждена. Корзина верхнего регистра измеряется, но ожидаемая ветка для неё не проверена, пока инженерия не подтвердит, как сравнение обрабатывает регистр букв.
  • Ни один конкурент не измерялся. Эти метрики описывают только AFP. Страницы сравнения прямо заявляют, что ни одно число производительности конкурента не было измерено.
  • Доли зафиксированы, а не гарантированы. Ничто здесь не является уровнем сервиса. Опубликованная цифра описывает один запуск за один день.