Я не уверен, сколько деталей предоставить, но я постараюсь поместить все, что мне кажется уместным.
У меня есть команда sla sh, которую я делаю с некоторыми логиками c с помощью AWS Lambda и API Gateway. Я использую модуль python slackclient и через это я отправляю сообщения обратно в резерв с WebClient. Чтобы уточнить, я использую новую систему бот-токенов, которую разработала Slack, а не classic bot
.
Насколько я понимаю, использование веб-крюка для отправки сообщений по всем каналам в рабочей области очень болезненно. , как веб-крючок предоставляется на канал. Поэтому я использую WebClient для взаимодействия со Slack и отправки сообщений по каналам publi c. Проблема в том, что если я не добавлю свое приложение в канал, команда не будет работать. Журналы Cloudwatch показывают мне, что события идут очень хорошо, так как я вижу событие в порядке. Я также вижу следующий журнал, используя sys.exc_info()
:
(<class 'slack.errors.SlackApiError'>, SlackApiError("The request to the Slack API failed.\nThe server responded with: {'ok': False, 'error': 'not_in_channel'}"), <traceback object at 0x7ff4a0dc32c0>)
Исходя из этого, мне кажется, что отправка сообщения обратно в каналы, в которые я не добавил это приложение, не кажется, работает, но я не уверен, какие разрешения OAuth / области были бы необходимы для этого. Я включил следующие области действия для токена бота:
channels:read
chat:write
commands
Насколько я понимаю, мне не нужно добавлять какие-либо области действия пользователя, поскольку я хочу, чтобы само мое приложение / бот отвечал, а не отвечал от имени пользователя.
Короче говоря, мое желаемое поведение чтобы добавить это приложение в мое рабочее пространство и немедленно получить от него ответ на команду sla sh, независимо от того, из какого publi c канала была вызвана команда sla sh.
Текущее поведение заключается в том, что приложение способен получать данные о событиях со всех опубликованных каналов c, когда из любого из них вызывается команда sla sh, но не может отправлять сообщения по каналам, в которых вызывается команда, если она не находится в канале.
Любая помощь будет принята с благодарностью!