2016-04-08 42 views
1

スラックチャンネルからすべての詳細を取得し、単純なテキストファイルにダンプする必要があります。私が知るようになるまでレスポンスからスラックユーザーIDを読み取ってユーザー名を取得する方法

{u'has_more': False, 
u'is_limited': True, 
u'messages': [{u'text': u'This is not a test!', 
       u'ts': u'1459763505.000003', 
       u'type': u'message', 
       u'user': u'U03FE3Z7D'}, 
       {u'subtype': u'bot_message', 
       u'text': u'This is a test!', 
       u'ts': u'1459750060.000002', 
       u'type': u'message', 
       u'username': u'facsimile_test'}], 
u'ok': True} 

    This is not a test! 
    This is a test! 

これは私にとって良いものがある..しかしない価値がある:

payload = {'token': 'XXXXXX', 'channel': 'XXXXXX' , 'count': '10'} 
r = requests.get('https://slack.com/api/channels.history', params=payload) 
pprint(r.json()) 
k = r.json()for msg in k['messages']: 
    print msg['text'] # this extracts the text field from json 

これは私のように見えるJSONでのレスポンスを取得します。私は使用して情報を取得することができていますユーザー名も。私はあなたがPythonの辞書ではなく、JSONがありました何

-- username1 
     - messages 
-- username2 
     - message 
+0

エラーが発生していますか?あなたが達成しようとしていることはあまり明確ではありません。 – AKS

+0

私は実際にユーザーIDからユーザー名を取得する方法がわからないので、コードはありません – PythonFreak

答えて

-1

としてテキストファイル内の全メッセージをダンプのWeb APIを弛まするユーザーIDを渡して名前を取得して、その後interstedています。

requestsを使用して、ユーザーの認証情報でリクエストを送信してみてください。

resp = requests.get("http://yourslackapiendpoint", auth=("user", "password")) 
data = resp.json() 
# unmarshal JSON to a dict 
d = json.loads(data) 

# loop the dictionary and write to a file 

スラックAPIが(そうである)別の認証を必要とする場合は、requests docにパラメータを渡す方法を参照してください。

payload = {'token': 'XXXXXX', 'user': 'XXXXXX'} 
r = requests.get('https://slack.com/api/users.info', params=payload) 

そして、ここからあなたは、事実usernameある応答からnameフィールドを取得することができます。

3

スラックは、ユーザーIDを使用してユーザー情報を取得するためにAPI endpointを提供します。

個々のユーザーにこの情報を取得したくない場合は、users.listも取得できます。 useridusernameの間のマッピングを作成して、必要なときにアクセスできるようにします。

+0

これは 'userid'と' username'をどのようにマップするのですか?私は基本的にユーザーIDを取得しています。そこからユーザーIDを取得し、ユーザー名を頼りにする要求を送信し、ユーザー名とそれに対応するusermessageを出力します – PythonFreak

関連する問題