LoginSignup
2
4

More than 5 years have passed since last update.

Slack API で取得したメッセージのフォーマットが微妙に使いにくい

Posted at

API叩いてメッセージを取得したものの、最低限取得したい

  • ユーザID
  • 時刻
  • テキスト

このうちユーザIDの取得がままならないので試行錯誤してみました。
ここで述べる話はGitHubにオリジナルが置いてあります。

️ 要件

なにかしらの分析ネタをやるにしても、最低限以下の3つの情報はないと話にならないと思われる。

  • 時刻
  • ユーザ名(ID)
  • POSTしたテキスト

(特定チャンネルの)全ポストからこの3つの情報を抽出したい、っていうのが今回の要件。

結論

試行錯誤の結果以下のような感じがよかよう、と結論。

時刻とテキストについては、

data = json.load(open("posts.json"))
for msg in data:
    print msg.get("ts", "")
    print msg.get("text", "")

のような感じでOK。

ユーザの取得については、以下の条件で取得できないものはスルー。

def get_user_id(m):
    if m.has_key("user"): return m["user"]
    if m.has_key("bot_id"): return m["bot_id"]
    return None

for msg in data:
    uid = get_user_id(msg)
    if uid is None:
        continue
    # do something ...

検証条件の下では、これに該当するポストは全体の0.2[%]だったので無視して良いと結論づける。

検証条件

データは自社の random チャンネルから。
具体的な期間やポスト数の公開は差し控えますが、およそ1年半くらいの期間でポストされたメッセージを見てみました。

以上。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4