【LINE BOT】WebAPI를 사용해 자동 회신 BOT를 만들어 보았다
소개
LINE BOT를 이용하여 6요일과 그 내용을 자동으로 회신하는 것을 만들었습니다.
입력 문자를 바꾸는 것으로, NASA(비공식)의 「오늘의 천문학 사진」을 즐길 수도 있습니다.
목적
육요일을 고집하는 사람은 적어지고 있다고 생각합니다만, 아직 대안등의 길일을 좋아하는 사람은 많다고 생각합니다, 개인적인 이벤트가 발생하면 「오늘은 대안일까?」 「친구일까?」 등과 가끔 신경이 쓰이는 일이 있으므로, 「오늘은」이라고 입력하는 오늘의 6요일을 자동 회신하는 BOT를 제작했습니다.
별로 만든 편이 좋을까 생각했습니다만, 이번은 연습도 겸해로 화상도 취득하고 싶었으므로, 「오늘의 화상은」라고 입력하면 NASA(비공식)보다 「오늘의 천문학 사진」 가져오고 자동으로 표시합니다. 우주의 아름다움 넓이를 보고 자신의 작음을 느낍니다.
만든 것
구성
환경
LINE Messaging API
Node.js에서 LINE BOT을 만드는 방법은 여기를 참고로했습니다.
1시간에 LINE BOT 만들기 핸즈온 (자료 + 리포트) in Node 학원제 2017 #nodefest
이번에 사용한 WEBAPI
음력, 육요일 등 날짜에 관한 정보를 취득할 수 있는 API(외부 사이트)
NASA APOD (unofficial API)
코드
server.js"use strict";
const express = require("express");
const line = require("@line/bot-sdk");
const axios = require('axios');
const PORT = process.env.PORT || 3030;
const config = {
channelSecret: 'channelSecret',
channelAccessToken: 'channelAccessToken'
};
const app = express();
require('date-utils');
var dt = new Date();
var formatted = dt.toFormat("YYYY-MM-DD");
console.log(formatted);
app.get("/", (req, res) => res.send("Hello LINE BOT!(GET)")); //ブラウザ確認用(無くても問題ない)
app.post("/webhook", line.middleware(config), (req, res) => {
console.log(req.body.events);
//ここのif分はdeveloper consoleの"接続確認"用なので削除して問題ないです。
if (
req.body.events[0].replyToken === "00000000000000000000000000000000" &&
req.body.events[1].replyToken === "ffffffffffffffffffffffffffffffff"
) {
res.send("Hello LINE BOT!(POST)");
console.log("疎通確認用");
return;
}
Promise.all(req.body.events.map(handleEvent)).then((result) =>
res.json(result)
);
});
const client = new line.Client(config);
async function handleEvent(event) {
if(event.type !== 'message' || event.message.type !== 'text'|| event.message.type !== 'location') {
return Promise.resolve(null);
}
let shakkou='';
let mes = '';
if(event.message.text === '今日は') {//「きょうは」と入力する。
const res = await axios.get('https://dateinfoapi.appspot.com/v1?date='+ formatted);
const pushText = res.data.rokuyo;
if(res.data.rokuyo === '赤口'){
shakkou ="正午の前後を除いて凶日、午前11時ごろから午後1時ごろまでは吉です。";
}else if(res.data.rokuyo === '大安'){
shakkou ="何事においても吉、成功しないことはない日";
}else if(res.data.rokuyo === '先勝'){
shakkou ="午前は吉、午後は凶";
}else if(res.data.rokuyo === '友引'){
shakkou ="朝晩は吉、昼は凶";
}else if(res.data.rokuyo === '先負'){
shakkou ="午前は凶、午後吉";
}else if(res.data.rokuyo === '仏滅'){
shakkou ="大凶日";
}
console.log(pushText);
mes = '今日は「'+ pushText +'」です。\n'+ shakkou;
return client.replyMessage(event.replyToken, {
type: 'text',
text: mes,
});
}else if(event.message.text === '今日の画像は'){
const response = await axios.get('https://api.nasa.gov/planetary/apod?api_key='+ {APIkey});
console.log(response.data.url);
await client.pushMessage(event.source.userId, {
type: 'image',
originalContentUrl:response.data.url,
previewImageUrl:response.data.url,
});
}
}
app.listen(PORT);
console.log(`Server running at ${PORT}`);
끝에
LINE의 국내 유저수는 8400만명이며, SNS 중에서는 던트츠로 1위이다, 덧붙여서 2위의 Twitter는 4500만명(2020년 6월 시점). 메시지 인프라로 정착하고 있다는 장점이 있습니다. UI 등도 간단하게 할 수 있기 때문에, 서비스를 고속으로 구축할 수 있을 것 같다.
앞으로도 LINE Messaging API를 활용하여 출력하고 싶습니다.
Reference
이 문제에 관하여(【LINE BOT】WebAPI를 사용해 자동 회신 BOT를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Toshiki0324/items/96c5dcb47eea5fcf302f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
"use strict";
const express = require("express");
const line = require("@line/bot-sdk");
const axios = require('axios');
const PORT = process.env.PORT || 3030;
const config = {
channelSecret: 'channelSecret',
channelAccessToken: 'channelAccessToken'
};
const app = express();
require('date-utils');
var dt = new Date();
var formatted = dt.toFormat("YYYY-MM-DD");
console.log(formatted);
app.get("/", (req, res) => res.send("Hello LINE BOT!(GET)")); //ブラウザ確認用(無くても問題ない)
app.post("/webhook", line.middleware(config), (req, res) => {
console.log(req.body.events);
//ここのif分はdeveloper consoleの"接続確認"用なので削除して問題ないです。
if (
req.body.events[0].replyToken === "00000000000000000000000000000000" &&
req.body.events[1].replyToken === "ffffffffffffffffffffffffffffffff"
) {
res.send("Hello LINE BOT!(POST)");
console.log("疎通確認用");
return;
}
Promise.all(req.body.events.map(handleEvent)).then((result) =>
res.json(result)
);
});
const client = new line.Client(config);
async function handleEvent(event) {
if(event.type !== 'message' || event.message.type !== 'text'|| event.message.type !== 'location') {
return Promise.resolve(null);
}
let shakkou='';
let mes = '';
if(event.message.text === '今日は') {//「きょうは」と入力する。
const res = await axios.get('https://dateinfoapi.appspot.com/v1?date='+ formatted);
const pushText = res.data.rokuyo;
if(res.data.rokuyo === '赤口'){
shakkou ="正午の前後を除いて凶日、午前11時ごろから午後1時ごろまでは吉です。";
}else if(res.data.rokuyo === '大安'){
shakkou ="何事においても吉、成功しないことはない日";
}else if(res.data.rokuyo === '先勝'){
shakkou ="午前は吉、午後は凶";
}else if(res.data.rokuyo === '友引'){
shakkou ="朝晩は吉、昼は凶";
}else if(res.data.rokuyo === '先負'){
shakkou ="午前は凶、午後吉";
}else if(res.data.rokuyo === '仏滅'){
shakkou ="大凶日";
}
console.log(pushText);
mes = '今日は「'+ pushText +'」です。\n'+ shakkou;
return client.replyMessage(event.replyToken, {
type: 'text',
text: mes,
});
}else if(event.message.text === '今日の画像は'){
const response = await axios.get('https://api.nasa.gov/planetary/apod?api_key='+ {APIkey});
console.log(response.data.url);
await client.pushMessage(event.source.userId, {
type: 'image',
originalContentUrl:response.data.url,
previewImageUrl:response.data.url,
});
}
}
app.listen(PORT);
console.log(`Server running at ${PORT}`);
LINE의 국내 유저수는 8400만명이며, SNS 중에서는 던트츠로 1위이다, 덧붙여서 2위의 Twitter는 4500만명(2020년 6월 시점). 메시지 인프라로 정착하고 있다는 장점이 있습니다. UI 등도 간단하게 할 수 있기 때문에, 서비스를 고속으로 구축할 수 있을 것 같다.
앞으로도 LINE Messaging API를 활용하여 출력하고 싶습니다.
Reference
이 문제에 관하여(【LINE BOT】WebAPI를 사용해 자동 회신 BOT를 만들어 보았다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Toshiki0324/items/96c5dcb47eea5fcf302f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)