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>')