userIdからプロフィールを取得したいってのをちょくちょく使うけど忘れるのでメモ
client.getProfile()
を利用します。
const profile = await client.getProfile(event.source.userId);
console.log(profile);
{
userId: 'Ubxxxxxxxxxxxxxxxxxxxxxx',
displayName: 'n0bisuke',
pictureUrl: 'https://profile.line-scdn.net/ch/v2/p/xxxxxxxxxxxxxxxxxxxxxxxx/exist',
statusMessage: 'こんにちは',
language: 'ja'
}
コピペ用: リプライ
1時間でLINE BOTを作るハンズオンの記事から引用したコードです。
'use strict';
const express = require('express');
const line = require('@line/bot-sdk');
const PORT = process.env.PORT || 3000;
const config = {
channelSecret: '作成したBOTのチャンネルシークレット',
channelAccessToken: '作成したBOTのチャンネルアクセストークン'
};
const app = express();
app.get('/', (req, res) => res.send('Hello LINE BOT!(GET)')); //ブラウザ確認用(無くても問題ない)
app.post('/webhook', line.middleware(config), (req, res) => {
console.log(req.body.events);
Promise
.all(req.body.events.map(handleEvent))
.then((result) => res.json(result));
});
const client = new line.Client(config);
async function handleEvent(event) {
let msg = ``;
if (event.type !== 'message' || event.message.type !== 'text') {
return Promise.resolve(null);
}
//☆ココがプロフ取得箇所
const profile = await client.getProfile(event.source.userId);
console.log(profile);
msg = `${profile.displayName}さんこんにちは。 あなたのユーザーIDは${profile.userId}です。`
return client.replyMessage(event.replyToken, {
type: 'text',
text: msg //実際に返信の言葉を入れる箇所
});
}
app.listen(PORT);
console.log(`Server running at ${PORT}`);
コピペ用: プッシュメッセージ
友達全員にメッセージを送るシンプルな送信専用LINE BOTを作る【Node.js】 #linedcの記事から引用したコードです。
ただブロードキャストだと他の人にUserIdなど送るのはあまりよくないのでPushメッセージで自分だけに送信するようにしてます。
'use strict';
const line = require('@line/bot-sdk');
const config = {
channelSecret: 'チャンネルシークレット',
channelAccessToken: 'チャンネルアクセストークン'
};
const client = new line.Client(config);
let msg = ``;
//☆ココがプロフ取得箇所
const userId = `Ubxxxxxxxxxxxxxxxxxxxxxxxx`; //管理画面や他APIなどから取得しておく
const profile = await client.getProfile(userId);
console.log(profile);
msg = `${profile.displayName}さんこんにちは。あなたのユーザーIDは${profile.userId}です。`
const main = async () => {
const messages = [{
type: 'text',
text: msg
}];
try {
const res = await client.pushMessage(userId, messages);
console.log(res);
} catch (error) {
console.log(`エラー: ${error.statusMessage}`);
console.log(error.originalError.response.data);
}
}
main();
こんな感じに
なります。