Мы используем как внутреннюю веб-библиотеку, так и intercom-java
sdk для отправки событий, поскольку некоторые события можно отправлять со стороны клиента, но некоторые нужно отправлять со стороны сервера. Вот как мы отправляем события на стороне сервера:
- Когда посетитель запускает какое-либо действие, например, неудачную попытку входа, мы берем
visitorId
из веб-библиотеки window.Intercom("getVisitorId")
и отправляем его на сервер - На стороне сервера мы сначала пытаемся найти посетителя
Visitor.findByUserID(visitorId)
, если он возвращает NotFoundException
, затем мы пытаемся найти отведение Contact.findByUserID(visitorId)
, если он возвращает NotFoundException
, затем мы пытаемся найти в настоящее время вошли в систему пользователя из сеанса сервера (я знаю, старая технология), если не вошел в систему пользователь не найден, мы не можем создать событие, потому что мы не знаем, кто пользователь. Если какой-либо из вышеперечисленных шагов завершился успешно, мы можем создать событие с возвращенным пользователем userId
Поток выше обычно работает, однако он не работает, когда посетитель уже вошел в систему, и остается в тот же сеанс внутренней связи, пока сеанс сервера очищен - скажем, мы перезапустили сервер после входа посетителя. В этом случае visitorId
больше не представляет посетителя / лидера, и пользователь больше не вошел в систему, чтобы быть найденным в сеансе сервера. Поэтому мы не знаем, как идентифицировать пользователя на стороне сервера для отправки события.
Это не проблема для событий на стороне клиента. Итак, мой вопрос, есть ли способ обойти это на стороне intercom-java
sdk?