Используйте шаблоны интеграций Zapier для Discourse

Zapier предлагает ряд официальных шаблонов интеграций (Zaps) для Discourse. Эти шаблоны позволяют подключить Discourse к внешнему приложению с минимальными настройками. Вы можете найти их здесь:

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

Эти шаблоны делятся на два типа. В первом типе Discourse выступает в роли приложения-триггера. Такие шаблоны позволяют публиковать сообщения из Discourse в Slack, Mattermost, Discord, группы Facebook, страницы Facebook, Google Sheets и другие сервисы. Во втором типе шаблонов Discourse является приложением-действием. С их помощью можно публиковать сообщения из WordPress и Ghost в Discourse. Также существует шаблон для трансляции прямых эфиров Twitch в Discourse.

Добавление учетных данных Discourse в Zapier

Чтобы использовать любую из интеграций Zapier для Discourse, при первой настройке Zap вам потребуется указать базовый URL вашего форума, а также имя пользователя Discourse и API-ключ.

В большинстве случаев Zap должен настраиваться администратором сайта с использованием его имени пользователя Discourse и API-ключа. API-ключи можно создать в разделе Администрирование / API / Ключи (Admin / API / Keys) на панели управления Discourse. Обратите внимание, что полное значение API-ключа отображается только один раз — при создании ключа, поэтому обязательно скопируйте его в этот момент.

После добавления учетных данных Discourse в Zapier нажмите кнопку «Продолжить» (Continue). На экране должно появиться сообщение об успехе.

Настройка выбора сообщений для обработки Zap

Когда Discourse выступает в роли приложения-триггера, по умолчанию Zap запускается при появлении любого нового сообщения на вашем сайте. В необязательном шаге «Редактировать параметры» (Edit Options) вы можете ограничить запуск Zap только сообщениями, созданными в определенной теме, или только сообщениями, созданными определенным пользователем.

Используйте выпадающий список «Тема» (Topic) на этом шаге, чтобы выбрать конкретную тему, которая должна запускать Zap. При такой настройке Zapier будет обрабатывать только сообщения, созданные в выбранной теме. Используйте выпадающий список «Автор» (Author), чтобы выбрать имя пользователя для Zap. В этом случае Zapier будет обрабатывать только сообщения, созданные этим пользователем.

Добавление шага фильтрации для более точного контроля сообщений

Если шаг «Редактировать параметры» не предоставляет достаточного контроля над тем, какие сообщения запускают Zap, вы можете добавить необязательный шаг фильтрации (Filter). Пример использования фильтра: можно настроить Zap так, чтобы он продолжал работу только в том случае, если сообщение является первым в определенной категории. Чтобы добавить фильтр, нажмите на значок :heavy_plus_sign: под блоком Триггер (Trigger), а затем выберите «Фильтр» (Filter) из меню.

Фильтр позволяет задать условия, при которых Zap должен продолжать выполнение. В приведенном ниже примере выполнение продолжится только если сообщение является первым в теме, которая находится в категории с идентификатором 2.

Выбор контента Discourse для публикации

При публикации сообщений из Discourse в другое приложение Zapier позволит вам выбрать, какая часть сообщения будет опубликована. Выбор зависит от целевого приложения. В качестве примера рассмотрим публикацию сообщения из Discourse в группу Facebook.

Поле «Сообщение» (Message) в форме определяет содержимое, которое будет опубликовано. Чтобы опубликовать полный текст сообщения, выберите поле «Raw» (Необработанный) в выпадающем списке «Сообщение». Чтобы опубликовать только заголовок темы, выберите «Topic Title» (Заголовок темы) из списка.

Построение ссылки на сообщение или тему

При публикации сообщения из Discourse во внешнее приложение может потребоваться создать ссылку на это сообщение или тему, используя данные, возвращаемые Discourse. Для этого введите базовый URL вашего сайта в поле, куда вы добавляете ссылку, и добавьте /t/. Например, если URL вашего сайта https://discourse.example.com, введите в форму https://discourse.example.com/t/.

Теперь откройте выпадающее меню этого поля и выберите «Topic Slug» (Слаг темы).

Zapier добавит в поле плейсхолдер для слага темы.

Теперь добавьте после плейсхолдера слага темы слэш (/) и выберите «Topic ID» (ID темы) из выпадающего меню.

Итоговый результат будет выглядеть примерно так, как показано на скриншоте ниже.

Чтобы создать ссылку на конкретное сообщение в теме, добавьте еще один слэш (/) в поле и выберите «Post Number» (Номер сообщения) из меню.

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

Создание интеграций без использования шаблона

Шаблоны Zapier, перечисленные на их странице интеграций, предназначены для упрощения подключения Discourse к внешним приложениям. Если вы хотите подключить Discourse к приложению, для которого нет шаблона, или создать Zap, который слушает вебхуки Discourse или отправляет POST-запросы к API Discourse, вы можете сделать это, следуя инструкциям или модифицируя один из руководств, перечисленных ниже:

17 лайков

Получаю следующее на экране добавления учетных данных в Zapier:

Произошла ошибка при добавлении вашей новой учетной записи

Ошибка аутентификации: Код ошибки 500: {“status”:500,“error”:“Internal Server Error”}

Все данные указаны верно.

Discourse сообщает об успешном использовании ключа API:

А также следующий лог ошибок:

Сообщение

Draft::OutOfSequence (Draft::OutOfSequence)
/var/www/discourse/app/models/draft.rb:124:in `get'

Стек вызовов

/var/www/discourse/app/models/draft.rb:124:in `get'
/var/www/discourse/lib/topic_list_responder.rb:11:in `respond_with_list'
/var/www/discourse/app/controllers/list_controller.rb:152:in `block in generate_message_route'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/base.rb:195:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/rendering.rb:30:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/callbacks.rb:42:in `block in process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.3/lib/active_support/callbacks.rb:135:in `run_callbacks'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/abstract_controller/callbacks.rb:41:in `process_action'
/var/www/discourse/vendor/bundle/ruby/2.6.0/gems/actionpack-6.0.3/lib/action_controller/metal/rescue.rb:22:in `process_action'

Окружение

HTTP HOSTS: discuss.bevry.me

Запущена версия 2.5.0.beta4 ( 811bc3544f )


Тем не менее, обновление страницы добавления Zap, на которой появилось всплывающее окно, приводит к следующему:

Похоже, что учетная запись была добавлена успешно, несмотря на ошибку.


Однако выбор одной из добавленных записей снова запускает процесс аутентификации:

4 лайка

Вы используете API-ключ «Все пользователи» Discourse и имя пользователя администратора вашего сайта? Я не уверен, что это обязательно, но на прошлой неделе я настроил новую учетную запись Zapier для Discourse с учетными данными API администратора. У меня всё сработало.

1 лайк

Мы тоже столкнулись с этой проблемой.

Раньше было теперь правка: было невозможно что-либо сделать (хотя бы многое) с пользователем с отрицательным ID из-за этого изменения:

@tgxworld Было бы здорово, если бы можно было отключить это новое поведение и/или добавить учётные записи в белый список.

3 лайка

Это был баг, который был исправлен в

3 лайка

Мы действительно столкнулись с этим вчера :laughing: .
Спасибо!! (и мне следовало проверить это перед публикацией этого сообщения)

3 лайка

Большое спасибо, работает как по маслу!

1 лайк

Привет! Есть ли способ фильтровать посты в Discourse, выступающие в качестве триггера, чтобы оставлять только новые темы (первый пост в ветке), а ответы в ветке отбрасывать? Спасибо.

Наконец-то я нашёл, как это сделать:

1 лайк

У меня по-прежнему возникает ошибка 403, конкретно в части «Настройка триггера» в Zappe, где мне нужно указать автора:

Я пробовал настройки «Все пользователи, глобально», «Один пользователь, глобально», а также «Все пользователи, только чтение». Все они возвращают одну и ту же ошибку (403).

1 лайк