Всем привет! Сейчас я работаю над интеграцией между Front App и Discourse. На данный момент я использую Pipedream для их соединения.
Мне удалось настроить два рабочих процесса:
Discourse → Front App. Когда в Discourse поступает новое сообщение, оно публикуется в Front.
Front → Discourse. Когда я отвечаю на импортированное сообщение из Discourse в Front, вебхук Pipedream, отслеживающий новые ответы в Front, использует API Discourse для публикации ответа в Discourse. Это работает отлично, однако, когда я захожу в Front, там отображается мой ответ (так как срабатывает рабочий процесс 1, то есть при поступлении нового сообщения в Discourse), и теперь в потоке переписки у меня два сообщения: одно, отправленное через Front, и такое же, но импортированное через рабочий процесс 1.
У кого-нибудь есть идея, как «исключить» эти сообщения, отправленные из Front и полученные через первый рабочий процесс? Возможно ли это сделать с помощью API Discourse?
Когда я отвечаю из Front, сообщение отправляется по URL (сгенерированному в Pipedream), который запускает POST-запрос Discourse API к исходной теме (он находит её по ID темы).
По сути, процесс такой:
Я отправляю ответ пользователю в Front.
Затем API Discourse (из рабочего процесса 1) видит новое сообщение в форуме и отправляет его как новое сообщение в Front.
Мне не нужно дублирование.
Понимаю, что это может запутать, поэтому дай знать, если я объяснил недостаточно ясно. Любые советы будут очень кстати!
Правильно ли я понимаю, что вы хотите, чтобы тема Discourse превращалась в сообщение Front только при её создании, а после этого — никогда больше?
Я верно уловил суть?
Тема создана в Discourse
1a) Тема конвертируется в Front как сообщение
Пользователь отвечает на сообщение в Front
2a) Сообщение из Front отправляется в Discourse как ответ на созданную тему.
Будет ли пользователь Discourse отвечать на пункт 2a? Или разговор заканчивается на этом этапе?
Я спрашиваю это, потому что вы можете рассмотреть возможность проверки ID поста при создании, если инициатор — Front. Если Front инициировал создание поста с ID #345 в Discourse
…то в вашем коде Pipedream, который отслеживает и конвертирует посты Discourse в сообщения Front, можно убедиться, что Post Id не равен тому, который вы только что создали. Если он равен — не конвертировать в сообщение Front…
Возможно ли это в Pipedream? Я не знаком с этим продуктом.
Да, пользователи Discourse по-прежнему могут отвечать на 2a. Мы это уже настроили! Таким образом, когда от участников сообщества отправляются новые сообщения в Discourse, они автоматически добавляются в тему Front.
Этот скриншот может помочь нагляднее проиллюстрировать процесс:
Как вы видите, я ответил через Front: «Just a test message from Front», и поскольку это сообщение опубликовано в Discourse, API Discourse фиксирует, что это новое сообщение, и отправляет свежее сообщение в тему.
Ваш ответ заставил меня задуматься Возможно, стоит создать какую-то функцию, которая будет искать идентификатор из Front, чтобы затем исключать его при отправке сообщений через API SEND MESSAGE в Discourse… Я попробую это реализовать. Спасибо за помощь! Благодарю
Привет, @jordan.vidrine! Хочу сказать спасибо за помощь! Обсуждение этой темы с тобой дало мне идею, и теперь всё работает. В частности, вот этот момент:
Я спрашиваю, потому что вы можете проверить ID поста при его создании, если он приходит из Front. Если Front инициировал создание поста #345 в Discourse