slackへ送信するのは、WebhookのURLをslack apiで取得すれば一発でOKだったのですが、
slackメッセージのpythonへの読み込みは、結構、難しかったです。
システムの試験稼働動画です。
●訳がわからないまま、サンプルプログラムを走らせてみました。
サンプルプログラムは、いろいろなブログ記事があって、どれも凝ったものが多く解読するのも難儀なのですが
estie社様サンプルに感謝
estie社のブログ記事のサンプルは、シンプルでこれならできそうだということで使わせていただきました。
1分以内のSlackメッセージの取得
https://www.estie.jp/blog/entry/2022/11/08/110000
この前に、その1,その2,その3 がありますが、読んでも訳が判りませんでした。すみません。
①estieオリジナルコード
AppのToken番号と対象となるチェンネルの番号を記入するだけで、txtをprint出力してくれます。
ただし、過去1分以内のメッセージのみで、古いメッセージは読んでくれません。
import requests
import time
url = "https://slack.com/api/conversations.history"
token = "xoxb-xxxxxxxxxxxxx-xxxxxxxxxxxxx-xxxxxxxxxx..." # tokenを入れてください
header={
"Authorization": "Bearer {}".format(token)
}
payload = {
"channel" : "C0123456789", # Conversation IDを入れてください
"oldest" : (time.time() - 60)
}
res = requests.get(url, headers=header, params=payload)
json_channel_history = res.json()
for message in json_channel_history["messages"]:
print(message["text"])
|
②私の学習用に変更させていただいたコード
変更1:過去時間60秒制限を外して、全メッセージを読み込む
変更2:受信したjasonをtextに取り出したものをlistにアペンドして、メッセージに番号をつけてprint
短いので、GISTにコードアップしません。
importrequests
importtime
url = “https://slack.com/api/conversations.history”
#url = “https://slack.com/api/conversation_archive”
token = “xoxb-xxxxxxxx-yyyyyyyyyyyy-zzzzzzzzzzzzzzzzzzzz” # tokenを入れてください
header={ “Authorization”: “Bearer {}”.format(token) }
payload ={“channel” : “Cxxxxxxxx”} # チャンネルID 記入 過去時間制限外す,”oldest”:(time.time() -60)} #
res = requests.get(url,headers=header,params=payload)
json_channel_history = res.json()
list_mes=[]
i=0
for message in json_channel_history[“messages”]:
txts=message[“text”]
#print(txts)
list_mes.append(txts)
#mesarray=list_mes.split(‘,’)
for i in range(0,len(list_mes)):
print(i,”:”,list_mes[i])
|
このコードをはしらせると 新しいメッセージ順に<送り主のID>メッセージ文 が受信できました。
ユーザー名のIDをどうするかは、未だですが、私のプロジェクトでは、ユーザー名は匿名でいいので、記号でもかまいません。
●チャンネルIDの取得
これは、slackアプリ本体で、チャネルの詳細で見れます。SLACK画面の左のメニュにあるチャンネル名右クリック
チャンネル詳細を表示すると クリック
チャンネル詳細ウィンドウがでてきて チャンネル情報の一番下に チャンネルIDがあります。
●slack api アプリのtoken
注意:tokenは、暗号文ですので、絶対人に見せたり、公開してはいけません。見られたらワークスペースを潰しましょう。放っておくとワークスペース丸見えになってしまいます。
①アプリを作成して、アプリで使う ②scopeで機能選択=>スコープは、Web API メソッドの呼び出しや Events API のイベントの受信といった Slack での機能を実行する権限をアプリに付与するために使用します今回は、channels:historyだけで機能します。 scopeの一覧はこちらhttps://api.slack.com/scopes ③scopeで機能を使う権限を指定したら、この機能をアプリにインストールします。 |
●操作手順
長い手順ですが、1回やれば、終わりです。