Вещи, которые я хотел бы знать раньше

Недавно я имел удовольствие впервые в жизни поработать с Intercom — и в конце концов решил не использовать его. Тем не менее, интерком — отличная программа. У него превосходная команда поддержки, справедливые цены, хорошая документация и очень простая интеграция — он просто не соответствует нашим требованиям, но может подойти вашим. Я начал эту статью, потому что у меня была открыта вкладка среднего размера, когда я начал интеграцию, и я в основном бросал заметки здесь всякий раз, когда сталкивался с проблемой. Теперь их достаточно, чтобы написать о них статью.

Интеграция Intercom в приложение метеора/узла

Мне не удалось найти актуальные пакеты. Есть метеор-интерком, но он использует подчеркивание и сеансы. Многие люди интегрируют Intercom в свои приложения, так что это не может быть так уж сложно, не так ли?

Сторона сервера

На стороне сервера нам в основном нужно сделать две вещи для базовой настройки*. Вычислите уникальный хэш для текущего пользователя и опубликуйте его на клиенте.

Meteor.publish('currentUserIntercomData', function() {
  if (this.userId) {
    const intercomHash = crypto
  .createHmac('sha256', new Buffer(secret, 'utf8'))
  .update(this.userId)
  .digest('hex');

    if (intercomHash) this.added('users', this.userId, { intercomHash: intercomHash });
  }
  this.ready();
});

Вот и все! Мы решили добавить несколько хуков для синхронизации пользовательских данных, но от этого не стало намного сложнее.

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

Сторона клиента

Для интеграции на стороне клиента достаточно добавить скрипт загрузки, который они предоставляют, и загрузить интерком. В итоге я создал небольшой реагирующий компонент, который в значительной степени выполняет Intercom('boot') при монтировании и Intercom('update') при изменении маршрута (требуется, чтобы внутренняя связь знала об изменениях маршрута в SPA).

Мы закончили, что интерком интегрирован, и мы можем начать создавать потрясающие автоматические сообщения!

Плохие части

Интерком UI/UX очень продуман. Все очень отзывчиво, и все, что возможно, разработано в приятной манере. Мобильное приложение тоже довольно удобное. Лично я большой поклонник функции A/B-тестирования сообщений. В этой статье будут рассмотрены только плохие стороны, не потому, что нет хороших частей, а потому, что уже есть много положительных статей о внутренней связи, и я не чувствую необходимости снова их освещать. Это не критика интеркома, а предупреждение для пользователей, которые рассматривают интерком.

Ниже приведен список причин, из-за которых мы не использовали Intercom. У некоторых из них могут быть обходные пути, но в некоторых моментах у нас будет больше обходных путей, чем рабочих вещей :)

Электронная почта/Сообщения

Мы надеялись избавиться от наших нестандартных решений и переключиться на Intercom для всего, что связано с обменом сообщениями с клиентами.

С точки зрения разработчиков Intercom предоставляет в основном 3 типа сообщений.
сообщения на основе сегментов:сообщения, которые автоматически отправляются пользователю, который соответствует определенному набору правил и выходит из приложения до того, как покинет сегмент.
сообщения на основе событий:фактически очень похожи на сообщения на основе сегментов, но с селектором событий в наборе правил . События отправляются в Intercom через остальные или любую другую конечную точку, которую вы используете, поэтому вы можете отправить электронное письмо пользователям, которые являются женщинами и пригласили друга. пол синхронизируется в пользовательских данных, приглашение друга будет отображаться как событие.
сообщения, инициированные администратором: это в основном ручной подход, как и с почтовым пистолетом — без использования каких-либо интересных функций интеркома, кроме сохранения сообщения как разговора с пользователем.

Проблемы

Есть три основных проблемы, с которыми мы столкнулись, пытаясь реализовать наши сообщения.

наборы правил примитивны: вы можете связать все правила только с помощью "и" или "или", ничего между ними. Этого достаточно для одних случаев, но недостаточно для других. Конкретным случаем здесь было то, что мы хотели отправить сообщение на две разные страницы. Кажется, что единственный возможный способ — либо создать два сообщения и смириться с тем, что некоторые пользователи могут получить его дважды, либо создать бесконечную цепочку is not условий для всех остальных страниц.

система шаблонов сообщений ограничена:в основном все, что вы можете сделать, это написать статический текст и добавить переменные с запасными вариантами. Когда вы, например. хотите иметь разные приветствия в зависимости от пола, вам нужно создать два разных шаблона электронной почты. Простое if/else невозможно.

электронные письма отправляются только один раз: в большинстве случаев это имеет смысл, поскольку мы не хотим спамить наших пользователей. Приветствуя пользователя на своей платформе, вы хотите отправить сообщение только один раз. В некоторых случаях имеет смысл отправить сообщение несколько раз — например, каждый раз, когда пользователь приглашает друга, мы хотим написать ему письмо с благодарностью или что-то подобное. Это просто невозможно.

Админ инициировал сообщения на помощь. Служба поддержки часто предлагала использовать сообщения, инициированные администратором, поскольку это в основном ручной способ ведения дел и позволяет вам делать все, что вы хотите. Хотя это правда — вы не ограничены правилами/шаблонами, они снова ограничены:
Вы можете выбрать один из двух предустановленных шаблонов, в которые вы будете вводить свое тело. Использование собственного шаблона невозможно.
Вам всегда нужно указывать автора сообщения (одного из администраторов), так как Intercom будет обрабатывать сообщение как беседу, а для беседы нужны два партнера.

Мессенджер

По сути, мессенджер — это iframe, который встраивается на вашу страницу. К сожалению, возможности настройки очень ограничены. Регулировка ширины невозможна без обходных путей. Также большим обломом была отсутствующая возможность отключить кнопку GIF. Не то чтобы мне лично не нравились гифки :), но они кажутся неуместными для нашей целевой группы.

техническое обслуживание

Intercom предоставляет тестовое приложение для каждого приложения Intercom, поэтому вы можете протестировать свои автоматические сообщения, прежде чем выпускать их в открытый доступ. На самом деле я не ожидал такой функции и был приятно удивлен! Так в чем проблема? Функции синхронизации или импорта/экспорта не реализованы. Поэтому всякий раз, когда вы тестируете какое-то новое сообщение или пытаетесь оптимизировать его в тестовом приложении, вы должны скопировать его и вставить в рабочее приложение. Мы сделали это с очень небольшим набором сообщений ~20 и уже имели много ошибок, потому что копирование/вставка на самом деле означает «открыть другую вкладку и щелкнуть различные меню, чтобы установить соответствующие флаги в диалоге создания сообщения».

Интеграция с гитхабом

Интерком позволяет создавать заявки из разговоров и автоматически обновлять состояние внутри разговора. Эта функция на самом деле очень крутая, и я бы определенно использовал ее для проекта с общедоступным репозиторием задач. Проблема в том, что они не генерируют билеты через API, как это делают боты ci, а вместо этого используют самого вошедшего в систему пользователя — это означает, что нам нужно будет создать учетные записи github для всех сотрудников службы поддержки и предоставить им полный доступ к репо, чтобы они могли создавать Билеты.

i18n

i18n — основная проблема, вызванная упомянутыми выше проблемами (в шаблонах нет условных выражений). I18n в Intercom ограничен приложением. Автоматические сообщения вообще не зависят от языка. Если вы хотите написать разные письма для немецких и английских пользователей, вам в основном нужно настроить его дважды и постараться убедиться, что они не получат оба.

Отказ от ответственности

Для некоторых вещей я все еще использую Intercom. Я чувствую, что это особенно полезно/удобно для мягкого взаимодействия в реальном времени с анонимными пользователями — не обязательно для всего, что связано с обменом сообщениями с клиентами.