Этот компонент темы позволяет отправлять данные об использовании вашего сайта в Segment.
Компонент поддерживает вызов segment.identify при первом входе пользователя на сайт. Для сайтов, использующих SSO, вы можете отправить в Segment либо идентификатор пользователя Discourse, либо его external_id. Компонент позволяет отслеживать просмотры страниц «Последнее», категорий, отдельной категории, тега и темы. Также он поддерживает отслеживание создания тем и сообщений, лайков, флагов и закладок.
Установка
Следуйте руководству по адресу Installing a theme or theme component для установки компонента. Используйте https://github.com/scossar/discourse-segment-theme-component для прямой установки из его Git-репозитория. Вы также можете скачать его здесь.
Конфигурация
Добавьте ваш ключ записи Segment в настройку segment write key. Затем выберите события, которые вы хотите отслеживать:
Я знаю, что опоздал к этому разговору, но у меня есть просьба, на которую я надеюсь, вы сможете ответить.
Не могли бы вы добавить к номеру идентификатора пользователя его адрес электронной почты, когда пользователи входят в систему на Discourse?
В Segment я пытаюсь объединить данные Discourse с данными пользователей для тех, кто, возможно, является одним и тем же пользователем на сайте моей компании, чтобы понять, какие пользователи заходят на Discourse и посещают сайт. Однако сейчас я не могу сопоставить пользователей, так как идентификатор пользователя Discourse не совпадает с идентификатором пользователя на сайте.
Если бы я мог сопоставить их по совпадению адресов электронной почты на Discourse и на сайте, это было бы очень полезно.
Потрясающий плагин, спасибо @simon! Я использую его уже несколько месяцев и заметил, что события topic_created иногда пропускаются. Мне не удаётся выявить каких-либо закономерностей в этих сбоях, поэтому решил написать сюда. Есть какие-нибудь идеи? Есть ли логи, которые можно проверить на наличие ошибок?
Технически это возможно. Однако у меня есть некоторые опасения относительно безопасности и конфиденциальности, связанные с добавлением адреса электронной почты в полезную нагрузку. Я обдумаю это и спрошу команду Discourse, что они думают. Если адрес электронной почты будет добавлен в полезную нагрузку, появится настройка темы, которая по умолчанию не включает адрес электронной почты.
Я разберусь с этим. Если вы обнаружите какую-либо закономерность, пожалуйста, сообщите мне.
Я постараюсь найти время на следующей неделе, чтобы протестировать компонент и внести в него некоторые обновления. Как только это будет сделано, я перемещу его из моего личного репозитория GitHub в репозиторий GitHub проекта Discourse.
@simon Я вас понимаю и согласен с опасениями по поводу безопасности. Однако я являюсь администратором Discourse, из которого извлекаются эти данные, поэтому я мог бы найти те же самые адреса электронной почты пользователей, просто взяв предоставленный ID и зайдя в записи пользователей, чтобы связать ID с адресом электронной почты таким образом. Эта информация уже доступна, хотя и вручную.
Кроме того, после обсуждения с коллегами из моей организации мы, возможно, просто дождёмся настройки OAuth, чтобы наши пользователи использовали один и тот же ID для входа в нашу систему и в систему Discourse.
В любом случае, я считаю, что эта функция всё равно была бы полезной — на случай, если подобное решение недоступно кому-то другому в сообществе.
Это кажется идеальным подходом. Компонент темы Segment можно обновить, добавив опцию для включения provider_uid, который предоставляется вашим провайдером аутентификации.
Рад, что вы подняли этот вопрос. Компонент отслеживания Segment в настоящее время имеет опцию для добавления external_id пользователя для сайтов, использующих DiscourseConnect. Осматривая его сейчас, я вижу, что он использует старое имя настройки для DiscourseConnect — он проверяет, включена ли настройка enable_sso. Это нужно изменить на enable_discourse_connect. Я исправлю это завтра.
Огромное спасибо, поле provider_uid было бы просто замечательно — это должно позволить нам связывать действия пользователя на нашем сайте и в Discourse после их отправки в Segment.
Я исправил проблему с отслеживанием пользователей по их external_id в случае, когда DiscourseConnect включен в качестве провайдера аутентификации для сайта Discourse.
Пока мне не удалось выяснить, что может вызывать отсутствие отслеживания создания тем в некоторых случаях. У меня всё работает без проблем.
Я обновил название события «Topic Bookmarked». Ранее в Segment отправлялось событие с названием «Thread Bookmarked». Я не помню причины такого выбора. Надеюсь, что изменение имени события на «Topic Bookmarked» не вызовет проблем с аналитикой у кого-либо.
Когда я проверил экран отладчика в Segment, в вызове identify было передано только идентификатор пользователя и IP-адрес. Можно ли также передавать адрес электронной почты в вызове identify?
При включении этой настройки адрес электронной почты пользователя будет передаваться вместе с вызовом identify. Если вы обновите компонент темы на вашем сайте Discourse до последней версии, эта настройка станет для вас доступной.
При тестировании я обнаружил небольшую проблему: если настройка отключена, адрес электронной почты текущего пользователя будет отображаться в Segment в течение всей его сессии. Это связано с тем, как Segment обрабатывает такие данные на своей стороне. Когда настройка отключена, Discourse немедленно прекращает передачу адресов электронной почты пользователей в Segment.
Я не забыл о запросе на передачу provider_uid в Segment, но пока изучал эту тему, задумался, будет ли полезно передавать в Segment и другие идентификаторы. В частности, я подумывал о передаче имени пользователя (name) и его имени пользователя (username) в вызов identify.
Что касается имени и имени пользователя, да, они тоже были бы полезны. Долгосрочным решением было бы реализовать возможность отправки всех данных, включённых в базовый набор, а также любых дополнительных полей пользователя, созданных в Discourse.
Обоснование: некоторые назначения требуют наличия определённых данных для работы. Было бы очень удобно иметь интерфейс для формирования полезной нагрузки внутри Discourse. Даже если он будет ограничен стандартными полями, описанными в документации Segment https://segment.com/docs/connections/spec/identify/
Извините за задержку с ответом. Я ещё раз изучил этот вопрос. На данный момент установить provider_uid через компонент темы невозможно, так как Discourse не передаёт provider_uid на клиентскую сторону. Возможно, в будущем это можно будет включить через настройку сайта, но для реализации потребуется внести изменения в основной код Discourse.
Без проблем. Спасибо за уточнение и за то, что разобрались в этом вопросе. Надеюсь, мы сможем найти другой способ связать пользователей Discourse на самой платформе и на нашем сайте.