MotoJapan's Tech-Memo

技術めも

【Messaging API #1】 クライアントのユーザID(user_id)とアカウント名(display_name)の取得方法 (python)

久しぶりにMessaging APIを使ってLinebotを書いてますが、メッセージを送信してきたクライアントのユーザIDとアカウント名の取得方法を忘れそうなので、書き残し。
クライアント側から「おはようございます」とpostすると、Webhookされたサーバーサイドのeventの中にこんな情報が入ってきます。
eventはWebhookParserでparseした中にiteratableで入っています。

event {
    "message": {"id": "xxx", "text": "おはようございます", "type": "text"}, 
    "replyToken": "yyy", 
    "source": {"type": "user", "userId": "zzz"}, 
    "timestamp": 14994xxxxxxxx, 
    "type": "message"
}

ここで得られる"userId": "zzz"が、ユーザIDに相当し、ここからget_profileでアカウント名を得ます。

if isinstance(event.source, SourceUser):
    profile = line_bot_api.get_profile(event.source.user_id)
    user_id        = event.source.user_id # ユーザID (zzz)
    user_disp_name = profile.display_name # アカウント名


終了です。

これで得られたユーザIDでDB登録をしたりできますね。