トーク画面にメッセージを投稿したユーザのprofileをトーク画面に返してみます
profileで取得できるのは
- userId
- displayName
- pictureUrl
- statusMessage
値はマスクしていますが、こんな感じで取得できます
公式リファレンスのこれを参考にしました
https://developers.line.biz/en/reference/messaging-api/#get-profile
コード.gs
function getToken() { return PropertiesService.getScriptProperties().getProperty('token'); } function doPost(e) { var contents = e.postData.contents; var obj = JSON.parse(contents) var events = obj["events"]; for(var i = 0; i < events.length; i++){ if(events[i].type == "message"){ replyMessage(events[i]); } } } function replyMessage(e) { var userId = e.source.userId; var profile = getProfile(userId) var postData = { "replyToken" : e.replyToken, "messages" : [ { "type" : "text", "text" : profile.toString() } ] }; var options = { "method" : "post", "headers" : getHeaders(), "payload" : JSON.stringify(postData) }; var url = "https://api.line.me/v2/bot/message/reply"; UrlFetchApp.fetch(url, options); } function getHeaders() { var headers = { "Content-Type" : "application/json", "Authorization" : "Bearer " + getToken() }; return headers; } function getProfile(userId) { var options = { "method" : "get", "headers" : getHeaders() }; var url = 'https://api.line.me/v2/bot/profile/' + userId; var response = UrlFetchApp.fetch(url, options); return response; } |
意訳この機能がやること スクリプトのプロパティに保存してあるtokenの値を返す この機能がやること 送られてきた投稿内容を取り出して オブジェクトに変換して eventsを取り出して eventsの数だけ繰り返す eventsをひとつずつ見てtypeがmessageなら replyMessageに渡す この機能がやること userIdを取得して getProfile()に渡した戻り値を取得して postDataを作る replyTokenを取り出して設定して メッセージを作る typeを決める textを決める optionsを作る methodを決める headersを決める payloadを決める urlを指定して UrlFetchApp.fetchでLINEに送る この機能がやること headersを作る Content-Typeを決める Authorizationを決める 返す この機能がやること optionsを作る methodを決める headersを決める profileのURLにuserIdを付けて UrlFetchApp.fetchでLINEに送って 返ってきたデータを返す |
関連記事
参考
Get profile
https://developers.line.biz/en/reference/messaging-api/#get-profile