如何在没有螺栓或其他SDK的情况下将Slack API请求发送到WebSocket? 我有以下代码。它可以正确连接到松弛,并正确验证。 我想发送对话。清单请求以列出频道。如果不使用螺栓或一些oth,我该怎么做...

问题描述 投票:0回答:1
我认为唯一缺少的部分是找出在Websocket上发送的内容以请求频道列表。目前,它输出:
Opened connection {"type":"hello","num_connections":1,"debug_info":{"host":"applink-11","build_number":105,"approximate_connection_time":18060},"connection_info":{"app_id":"Redacted"}}

我所追求的api是

https://api.slack.com/methods/conversations.list

代码是
#!/usr/bin/env python2.6

import httplib
import requests
import websocket
import argparse

def on_message(ws, message):
    print(message)
    ws.send("list")

def on_error(ws, error):
    print(error)

def on_close(ws, close_status_code, close_msg):
    print("### closed ###")

def on_open(ws):
    print("Opened connection")

def run_with(url):
# websocket.enableTrace(True)
    ws = websocket.WebSocketApp(url,
    on_open=on_open,
    on_message=on_message,
    on_error=on_error,
    on_close=on_close)

    ws.run_forever()

def main():

    parser = argparse.ArgumentParser()
    parser.add_argument("token")
    args = parser.parse_args()

    url = 'https://slack.com/api/apps.connections.open'
    headers = {
'content-type': 'application/x-www-form-urlencoded',
'Authorization': 'Bearer ' + args.token}
    r = requests.post(url, headers=headers)

    if r.json()['ok']:
        url = r.json()['url']
        run_with(url)
    else:
        print(r.content)

if __name__ == '__main__':
    main()

根本不需要使用Websocket。只需使用常规HTTP请求访问

conversations.list

端点:
import requests

def get_channels(token):
    url = 'https://slack.com/api/conversations.list'
    headers = {'Authorization': 'Bearer ' + token}
    r = requests.get(url, headers=headers)
    res = r.json()
    if res['ok']:
        print(res['channels'])
    else:
        print('Error:', res['error'])

get_channels('<your-token>')
python websocket slack-api
1个回答
0
投票

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.