Использование Slack API из Python - PullRequest
0 голосов
/ 05 апреля 2019

Я следую следующему уроку Урок Slack API , чтобы опубликовать сообщение на Slack. Я уже создал приложение Slack и смог использовать его с Incoming Webhooks, теперь я хотел бы использовать API из python. Итак, я попробовал:

import os
from slackclient import SlackClient
slack_token = 'xoxp-long-sequence-of-numbers'
sc = SlackClient(slack_token)

sc.api_call(
  "chat.postMessage",
  channel="my_test_channel",
  text="Hello from Python! :tada:"
)

Я получил следующее сообщение об ошибке:

    {'error': 'missing_scope',
 'headers': {'Access-Control-Allow-Headers': 'slack-route, x-slack-version-ts',
  'Access-Control-Allow-Origin': '*',
  'Access-Control-Expose-Headers': 'x-slack-req-id',
  'Cache-Control': 'private, no-cache, no-store, must-revalidate',
  'Connection': 'keep-alive',
  'Content-Encoding': 'gzip',
  'Content-Length': '105',
  'Content-Type': 'application/json; charset=utf-8',
  'Date': 'Fri, 05 Apr 2019 17:07:06 GMT',
  'Expires': 'Mon, 26 Jul 1997 05:00:00 GMT',
  'Pragma': 'no-cache',
  'Referrer-Policy': 'no-referrer',
  'Server': 'Apache',
  'Strict-Transport-Security': 'max-age=31536000; includeSubDomains; preload',
  'Vary': 'Accept-Encoding',
  'Via': '1.1 6529456e34a07353ab1987432f192696.cloudfront.net (CloudFront)',
  'X-Accepted-OAuth-Scopes': 'chat:write:user',
  'X-Amz-Cf-Id': 'wunHQVQpZicf-ynJO2u_n6CAQEGlYBH67ysu0fP1mfTEt86rRiAbrw==',
  'X-Cache': 'Miss from cloudfront',
  'X-Content-Type-Options': 'nosniff',
  'X-OAuth-Scopes': 'identify,incoming-webhook',
  'X-Slack-Req-Id': '990760fb-b110-43a1-86cb-fd4f8e2e34fa',
  'X-Via': 'haproxy-www-km3w',
  'X-XSS-Protection': '0'},
 'needed': 'chat:write:user',
 'ok': False,
 'provided': 'identify,incoming-webhook'}

Мое название канала буквально: my_test_channel. Возможно, мне нужно использовать другое имя, но как я могу это выяснить?

UPDATE

Итак, я узнал кодированный идентификатор канала и изменил свой скрипт на:

import os
    from slackclient import SlackClient
    slack_token = 'xoxp-long-sequence-of-numbers'
    sc = SlackClient(slack_token)

    sc.api_call(
      "chat.postMessage",
      channel="CHXXXXXXX",
      text="Hello from Python! :tada:"
    )

но ошибка по-прежнему missing scope

1 Ответ

1 голос
/ 05 апреля 2019

Похоже, отсутствует пользовательский параметр в соответствии с ошибкой ('required': 'chat: write: user'):

    sc.api_call(
      "chat.postMessage",
      channel="my_test_channel",
      text="Hello from Python! :tada:"
      user="U0XXXXXXX"
    )
...