Команда Discourse post работает только в одном канале
Теперь, скорее всего, это моя вина, но я не могу разобраться. Я просмотрел все обсуждения по этой теме и был бы очень признателен за помощь. Я проверил и перепроверил разрешения моего приложения Slack и могу подтвердить, что оно работает на 100%… но только в одном из моих каналов!
/discourse post 20
Так что я знаю, что токен доступа настроен и работает корректно. Однако во всех остальных каналах моей команды Slack вышеуказанная команда просто выводит:
Загрузка транскрипции...
и всё. Все эти каналы являются общедоступными, и я перепробовал все возможные комбинации настроек. Единственный канал, в котором всё работает, был создан сегодня, но когда я создал другой новый канал для тестирования, он не сработал. Я даже не знаю, с чего начать отладку этой проблемы. Единственные логи, о которых я знаю в Discourse:
./launcher logs app
но там, похоже, вообще ничего нет. Какую настройку я мог упустить, из-за которой публикация работает только в одном канале, и где мне искать информацию для отладки?
Проверьте, можно ли публиковать сообщения из Discourse в те каналы, из которых вы пытаетесь отправлять сообщения в Discourse. Я предполагаю, что проблема в том, что вам нужно добавить созданное вами приложение в канал, прежде чем вы сможете публиковать сообщения в него или из него.
@simon, думаю, именно в этом и была проблема! Честно говоря, я немного запутался в том, как работает приложение Slack. Поскольку я мог выполнять команды /discourse ... в любом канале Slack, а приложение, казалось, было установлено на глобальном уровне, мне казалось, что я «добавил» приложение всеми необходимыми способами. Однако, когда я явно /invite пользователя приложения Discourse в другой канал, всё начинает работать!
/invite @Discourse
/discourse post 20
Очень раздражает то, что Slack даже не показывает, что мой пользователь @discourse находится в моём канале после добавления. Количество пользователей в интерфейсе Slack не меняется, и если посмотреть всех участников канала, пользователь моего приложения там не отображается. Думаю, это недостаток самого Slack, а не Discourse.
Было бы здорово не нужно приглашать пользователя Discourse в каждый канал Slack в нашей команде (боже, у нас их целое море), но я предполагаю, что это ограничение Slack для приложений? Также, можем ли мы добавить улучшение в плагин чата Discourse, чтобы он определял эту проблему и выводил более полезное сообщение об ошибке?
В первый раз, когда я настраивал это, меня удивило необходимость добавлять приложение Discourse в каждый канал. Буду следить за любыми способами обойти это требование.
Возможно, когда действие не удаётся из-за того, что у приложения нет прав на публикацию в канал или из него, Slack возвращает ошибку в Discourse. Если это так, использование этой ошибки для добавления уведомления о канале в записи Discourse помогло бы в отладке подобных проблем. Не уверен, что это возможно, но я проверю, возвращает ли Slack какую-либо полезную информацию в Discourse для этого случая.
Кажется, это верно. Я тестировал это только со Slack. Когда Discourse пытается опубликовать сообщение в канал Slack, к которому приложение не добавлено, на странице «Интеграции чата» отображается предупреждение, а над проблемным каналом появляется сообщение об ошибке:
Возможно, Discourse мог бы парсить это сообщение об ошибке, чтобы предоставить пользователю подробную информацию о том, что нужно сделать для исправления проблемы.
Когда я пытаюсь отправить сообщение в Discourse с помощью slash-команды из канала, к которому приложение не добавлено, в Discourse возникает ошибка Job exception: break from proc-closure в файле slack_command_controller.rb:86. Не уверен, что из Slack возвращается достаточно информации для создания осмысленного сообщения об ошибке в этом случае.