К сожалению, ни одно из этих действий на данный момент невозможно.
Здравствуйте! Я сейчас настраиваю это и не уверен, изменился ли интерфейс, но эти области настраиваются в разделе Области токена бота или в разделе Области токена пользователя?
Спасибо.
Обе эти задачи можно решить с помощью интеграции через Zapier. Не идеальный вариант, я знаю, но так как я рассматривал это как обходное решение для этого плагина, решил поделиться.
Привет!
Я попытался настроить плагин, как описано в этой теме, но при попытке опубликовать транскрипт я получаю от бота Slack только следующее:
“Загрузка транскрипта…”
Мой Discourse размещен на поддомене “discourse.group”. Вот что я вижу в логах ошибок:
/var/www/discourse/plugins/discourse-chat-integration/lib/discourse_chat/provider/slack/slack_command_controller.rb:86:in `block in process_post_request’
/var/www/discourse/lib/scheduler/defer.rb:94:in `block in do_work’
rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:252:in `with_connection’
rails_multisite-2.1.0/lib/rails_multisite/connection_management.rb:61:in `with_connection’
/var/www/discourse/lib/scheduler/defer.rb:89:in `do_work’
/var/www/discourse/lib/scheduler/defer.rb:79:in `block (2 levels) in start_thread’
Подскажите, как это исправить?
Ошибка возникает из-за того, что учётные данные Slack, введённые на странице настроек вашего сайта, указаны неверно. Чтобы найти настройки интеграции чата, перейдите на страницу Администрирование / Настройки и прокрутите левое меню до самого низа. Внизу списка вы увидите кнопку «Интеграции чата».
На странице настроек убедитесь, что следующие параметры указаны правильно:
chat integration discourse usernamechat integration slack access tokenchat integration slack incoming webhook token
Сообщите нам, если это не решит проблему. Поскольку ваш сайт размещён у нас, мы можем проверить, что именно идёт не так.
Решение проблем с ошибками:
1) DiscourseChat::ProviderError
2) {\"ok\":false,\"error\":\"not_in_channel\"}
Стараюсь сделать это более очевидным, так как, к сожалению, было сложно найти ответ. Процесс создания приложения Slack немного изменился с момента написания этих инструкций. И, похоже, фактическая интеграция бота с каналом в Slack требует ещё немного дополнительных настроек.
В моём рабочем пространстве Slack я мог подтвердить, что приложение работает, отправив боту личное сообщение @discourse, а также выполняя команды /discourse. Однако в настройках плагина Discourse я получал ошибки и не мог ни установить канал, ни отправить тестовое сообщение.
Как реализовать
РЕДАКТИРОВАНО: в ответах ниже есть обновлённая информация. Я попытался включить дополнительные шаги здесь по состоянию на 06.04.2020. Пожалуйста, комментируйте или изменяйте их при необходимости. — dp
- Разрешения бота: для работы команды
/discourseнеобходимо добавить разрешениеchat:write.customize. Я также добавилchat:write. - Вам нужно создать канал в Slack. Затем либо выполнить команды
/discourseиз этого канала, либо настроить правило в Discourse. - Вам нужно вручную добавить бота в интересующий канал (по крайней мере, для публикации транскрипции)! Это можно сделать в личной переписке с ботом в Slack:
"настройки разговора" > "добавить это приложение в канал". - Затем, что важно, вам нужно добавить пользователя бота Discourse в канал. Мне не удалось сделать это через обычные кнопки канала «добавить пользователя» или «добавить приложение». Однако мне удалось это сделать, отправив сообщение «@discourse» внутри канала — после этого Slack спросил: «@discourse нет в этом канале, хотите добавить?»
- После этого я успешно отправил тестовое сообщение из настроек плагинов

Примечание: при настройке приложения Slack я установил имя приложения как @discourse
Спасибо @thedavidprice и @simon за отличную поддержку!
Я исправил проблему! Всё было в порядке, но бот должен был быть добавлен в канал, чтобы опубликовать транскрипт. Может быть, вы сможете добавить этот пункт в список инструкций выше?
Ещё я заметил, что область разрешений chat:write:bot больше недоступна — нужно выбирать chat:write!
Привет, @Vincenzo_Lomonaco, чтобы уточнить: вы имеете в виду, что сам плагин теперь будет добавлять бота в канал (например, при создании правила)?
Действительно, похоже, что в настройках Slack произошло множество изменений. Я могу подтвердить, что добавил разрешение chat:write. Также я добавил chat:write.customize.
После создания через Slack API мне не было до конца ясно, нужно ли также добавлять приложение в канал в настройках рабочего пространства в разделе «Приложения». В моём случае я выбрал канал.
Наконец, у меня возникла путаница по поводу необходимости заполнения раздела «Отображаемая информация» на странице настроек приложения в Slack. Я это сделал, и, похоже, эта информация используется в каталоге приложений Slack и в разделе «Недавние приложения» в левой колонке Slack. URL-адрес изображения, который я указал в Discourse для сообщений бота, похоже, не работает. А вот имя бота работает.
Спасибо ещё раз! В целом я очень доволен тем, как всё идёт.
Привет, @thedavidprice,
Нет, вам нужно вручную добавить бота в нужный канал (как минимум для публикации транскрипции)! Вы можете сделать это в личном диалоге с ботом в Slack: "настройки разговора" > "добавить это приложение в канал".
Спасибо за это. Я обновил руководство на основе вашего сообщения и собственных тестов. Я могу подтвердить, что разрешение chat:write.customize необходимо добавить в настройки области действия токена бота, чтобы команда /discourse post работала.
Я думал, что область действия channels:join может быть всем, что нужно для автоматического присоединения бота к каналу, но, судя по моим тестам, это не работает. Я считаю, что самый простой способ добавить бота в канал сейчас описан в шаге 15 руководства. Если есть лучший способ сделать это, пожалуйста, дайте мне знать.
Я уберу ответы в этой теме через несколько дней, как только мы подтвердим, что текущее состояние руководства работает для людей.
Привет, друзья! Я пытаюсь настроить это для места с более строгими ограничениями безопасности. Изучив необходимые области доступа, указанные в исходном посте, и сравнив их с тем, что разрешено сейчас, я вижу следующее:
chat:write # ? неясно, но chat:write:bot — ОК
chat:write.customize ? неясно, но chat:write:bot — ОК
users:read # X отклонено
channels:history X отклонено
groups:history # ОК, условно принято
im:history # ОК, принято
Если приложение будет настроено только со следующими областями доступа, что будет работать, а что сломается?
chat:write:bot
groups:history
im:history
Например, я готов отказаться от транскриптов…
С тех пор, как я впервые реализовал это, прошло уже некоторое время, и, похоже, с тех пор области доступа Slack значительно изменились. Я вижу, что люди поддерживают вики-страницу оригинального поста в актуальном состоянии, что отлично! ![]()
Мне кажется, что chat:write:bot и chat:write:user устарели в пользу chat:write.
Похоже, что chat:write.customize требуется, поскольку мы настраиваем author_name и author_icon сообщения, чтобы они соответствовали пользователю Discourse.
Области доступа users:read и *:history используются только для публикации транскриптов. Я понимаю, что это может показаться много! Но по сути Discourse нужен доступ к истории вашего чата, чтобы создать транскрипт. Если вы не хотите предоставлять эти разрешения, это совершенно нормально — просто пропустите их и продолжайте работу без публикации транскриптов.
При использовании косых команд я получаю ошибку: «/hub не сработал с ошибкой „dispatch_failed“»
(Мы используем /hub вместо /discourse)
Мне удалось добавить приложение в канал. Также я смог отправить тестовое сообщение из Discourse в наш Slack, но не смог разобраться с командами, начинающимися с «/». Буду очень благодарен за помощь в решении этой проблемы!
Проверьте разрешения, которые вы добавили для приложения в Slack. В последний раз, когда я настраивал это, все разрешения из шагов 5 и 6 руководства необходимо было добавить в области доступа приложений:
chat:writechat:write.customizeusers:readchannels:historygroups:historyim:history
Сообщите нам, если это не решит проблему.
Полагаю, у меня уже есть правильные разрешения. Вот скриншот моих настроек в разделе Bot Token Scopes.
Что ты думаешь? К сожалению, это означает, что проблема кроется в чём-то другом.
Я ещё раз изучил руководство по настройке и создал команду /hub. Вызов /hub post работает у меня на любых каналах, куда я добавил приложение. Я использую те же разрешения, что и на скриншоте, который вы опубликовали.
Убедитесь, пожалуйста, что вы выполнили шаг 8 руководства? В этом разделе указано:
Перейдите на страницу Интерактивность и ярлыки, включите раздел Интерактивность, переключив его в положение Вкл, и введите этот URL в поле «URL запроса»:
<your-discourse-url>/chat-integration/slack/interactive
Также полезно будет подтвердить, что вы можете публиковать сообщения из Discourse в тот канал Slack, на котором вы пытаетесь выполнить команду /hub post.
Дайте нам знать, если у вас всё ещё не получится это настроить.
Я проверил и, полагаю, да, я выполнил этот шаг.
Вот скриншот.
Кажется, ошибка возникает в чём-то, связанном со шагом 7.
Вот мои настройки.
Так это выглядит, когда я пытаюсь использовать команду со слэшем в Slack:
Да, эта часть работает идеально.
Нет, не работает. ![]()
URL-адрес «Request URL» в разделе «Edit Command» на вашем скриншоте не использует HTTPS. Возможно, это и есть проблема.
Вот это да, спасибо!!!
Я следовал инструкциям из этого руководства, и моя интеграция Discourse/Slack (почти) работает. Отличная работа над этим плагином! У меня есть три вопроса/наблюдения.
Нельзя подписаться на сообщения в подкатегории, подписавшись на родительскую категорию
Возможно, это сделано намеренно, но сначала это не было очевидно. У меня есть родительские категории с дочерними категориями под ними. Я ожидал, что если я создам правило, фильтрующее «Все сообщения и ответы» для родительской категории, то оно автоматически будет включать каждую из дочерних категорий. Однако это, похоже, не работает, и мне пришлось создавать правила для каждой из моих (многочисленных) дочерних категорий. Это было бы отличным запросом на улучшение, чтобы упростить настройку для установки Discourse с множеством подкатегорий под несколькими родительскими категориями.
Нельзя подписаться на все категории с помощью одного правила
Я нашел противоречивую информацию по этому поводу и предполагаю, что старый плагин Slack позволял это делать, но я не смог найти способ создать одно правило, которое просто подписывало бы на все сообщения и ответы из ВСЕХ категорий на сайте. Я надеялся сделать это в рамках одного простого правила. Но из-за этого и предыдущего пункта мне потребовалось 31 отдельное правило вместо одного, чтобы просто создать базовый мост между всей платформой Discourse и каналом Slack. Если я что-то упустил, рассмотрите это также как запрос на улучшение.
Команда Discourse post работает только в одном канале
Теперь, скорее всего, это моя вина, но я не могу разобраться. Я просмотрел все темы по этой проблеме и был бы рад получить помощь. Я проверил и перепроверил разрешения моего приложения Slack и могу подтвердить, что оно полностью на 100% работает… только в одном из моих каналов!
/discourse post 20
Так что я знаю, что токен доступа настроен и работает нормально. Однако во всех остальных каналах моей команды Slack команда выше просто выводит:
Loading the transcript...
и всё. Это все публичные каналы, и я пробовал всевозможные комбинации настроек. Канал, который работает, был создан сегодня, но когда я создал другой новый канал для теста, он не заработал. Я даже не знаю, с чего начать устранение неполадок. Единственные логи, о которых я знаю в Discourse, это:
./launcher logs app
но там, похоже, вообще ничего нет. Какую настройку я мог упустить, которая позволяет отправку сообщений работать только в одном канале, и где мне искать для отладки этого?




