2016-04-06 4 views
2

スラックチャンネルから受け取ったレスポンスを抽出する必要があります。次のスクリプトは、単にスラックチャンネルから結果を取得します。スラックチャンネルのjsonレスポンスから結果を抽出して他のチャンネルに貼り付けるには

payload = {'token': 'XXXXXX', 'channel': 'C0L8MGLMN' , 'count': '10'} 
r = requests.get('https://slack.com/api/channels.history', params=payload) 
print r.status_code 
pprint(r.json()) 

これは、その結果:私はJSONレスポンスからusername & textを抽出したい

200 
{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} 

。そして、抽出されたメッセージを別の余裕のあるチャンネルにアップロードします。私はそうする方法がわかりません

+0

正確な質問は何ですか。任意の辞書のように値を取得します。最初のメッセージからテキストを抽出するには 'r.json()[" messages "] [0] [" text "]' –

答えて

0

あなたの質問を正しく理解していれば、あるチャンネルから別のチャンネルに抽出したメッセージのコピーをアップロードしたいです。

まず、JSONからメッセージを抽出するには、Pythonの辞書と同じようにアクセスするだけです。例えば最初のメッセージを抽出するにはr.json()["messages"][0]["text"](コメントも参照)

次に、メッセージを新しいチャネルに投稿します。残念ながら、正確なコピーを他のチャンネルにアップロードすることはできません。しかし、APIメソッドchat.postMessageを使用して、抽出されたメッセージの内容を別のチャンネルに新しいメッセージとして再送信することができます。メッセージは元のユーザーではなくボットの投稿として表示されることに注意してください。 (これは、 'as_user'の設定と使用するトークンの種類によって異なります)。したがって、sthを送信することができます。 「チャンネルxでのユーザーxのコメント:テキスト」

chat.postMessageのスラックのドキュメントもご覧ください。

関連する問題