Как использовать аргументы в Slack API с python? - PullRequest
1 голос
/ 31 октября 2019

Я пытаюсь получить список всех пользователей Slack с python. Использование users.list дает мне первые 1000 пользователей. Чтобы получить остальное, мне нужно передать значение курсора. Значение Cursor работает, когда я использую собственный тестер slack на его веб-сайте.

Метод users.list возвращает 1000 записей, и если я использую переменную курсора (на веб-сайте slack dev для тестирования вызовов url), каждый вызов получаетя еще тысяча пользователей.

Это код, который я использую сейчас, чтобы получить список пользователей:

client = slack.WebClient(token=os.environ['SLACK_API_TOKEN'])
request=client.api_call("users.list")

Согласно документации users.list имеет опциональныйАргумент вызвал курсор, чтобы получить следующие 10000 пользователей. Но я не могу понять, как передать переменную курсора вместе с командой users.list. Я посмотрел на переполнение стека, чтобы увидеть, как другие использовали users.list, но я не могу получить никаких примеров этого.

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Позвольте мне попытаться помочь вам.

client = slack.WebClient(token=os.environ['SLACK_API_TOKEN'])
request=client.api_call("users.list")
while True:
if request['response_metadata']:
   if 'next_cursor' in request['response_metadata']:
      request = client.api_call("users.list" , data={'cursor':request['response_metadata']['next_cursor']})
   else:
      break

Я уверен в этом, потому что я недавно провёл интеграцию с odoo, используя python sdk. Может быть, это потребует некоторых изменений

1 голос
/ 31 октября 2019

https://github.com/slackapi/python-slackclient/blob/master/slack/web/base_client.py#L97

Create a request and execute the API call to Slack.
        Args:
            api_method (str): The target Slack API method.
                e.g. 'chat.postMessage'
            http_verb (str): HTTP Verb. e.g. 'POST'
            files (dict): Files to multipart upload.
                e.g. {imageORfile: file_objectORfile_path}
            data: The body to attach to the request. If a dictionary is
                provided, form-encoding will take place.
                e.g. {'key1': 'value1', 'key2': 'value2'}
            params (dict): The URL parameters to append to the URL.
                e.g. {'key1': 'value1', 'key2': 'value2'}
            json (dict): JSON for the body to attach to the request
                (if files or data is not specified).
                e.g. {'key1': 'value1', 'key2': 'value2'}

Поскольку допустимый тип содержимого - application / x-www-form-urlencoded, мы должны использовать ' data '

client = slack.WebClient(token=os.environ['SLACK_API_TOKEN'])
request=client.api_call("users.list", data={'cursor': 'dXNlcjpVMDYxTkZUVDI='})
...