Как использовать значения из одного API и использовать его в другом? - PullRequest
0 голосов
/ 26 сентября 2019

Я использую этот Slack API user.getPresence для отображения онлайн-статуса пользователя, независимо от того, активен он или нет.Я использую другой API, users.info, для получения информации о пользователях.Эти два API принимают параметр идентификатора пользователя, который взят из API channel.info, который не показан ниже.

Прямо сейчас у меня есть два отдельных API, поэтому users.info получает имя и адрес электронной почты для всех пользователей, а users.getPresence просто возвращает статус для всех пользователей канала.

Это два API, которые я пытаюсь соединить вместе:

def users_getPresence():

        url = 'https://slack.com/api/users.getPresence'
        headers = {'Accept': 'application/x-www-form-urlencoded'}

        users = channels_info() # the user IDs from channels.info
        result = []
        for user in users:
            payload = {
                'token': API_KEY,
                'user':  user
            }
            r = requests.get(url, headers=headers, params=payload)

            if r.status_code == 200:
                # returns only the presence of 'active' or 'away'
                result.append(r.json()['presence'])
            else:
                return None
        return result
def users_info():

    url = 'https://slack.com/api/users.info'
    headers = {'Accept': 'application/x-www-form-urlencoded'}

    users = channels_info() # the user IDs from channels.info
    names = []
    emails = []

    # loops for every user
    for user in users:
        payload = {
            'token': API_KEY,
            'user': user
        }
        r = requests.get(url, headers=headers, params=payload)
        name = r.json()['user']['real_name'] # the name of the user
        email = r.json()['user']['profile'].get('email') # the email of the user

        if r.status_code == 200:
            # This is to ignore the users that don't have an email field
            if email is not None:
                names.append(name)
                emails.append(email)
        else:
            return None
    # result returns the name and email of the users
    return names, emails

Я хочу сначала проверить users.getPresence, чтобы увидеть, какие идентификаторы пользователей имеют активный«статус, а затем взять эти« активные »идентификаторы пользователей и использовать их в users.info, чтобы получать информацию только о пользователях с« активным »статусом.Я думал, что мог бы использовать оператор if или что-то в этом роде, но я не уверен, как получить «активные» идентификаторы пользователей из users.getPresence.

...