위치 정보를 받으면 스탬프를 반환하는 LINE Bot

소개



한 기사 의 영향을 받아 LINE Bot을 만들어 보았습니다. 환경 구축이나의 순서는 지금 추가이므로 생략합니다.

했던 일



제목대로 위치 정보를 받으면 스탬프를 반환합니다. 특히 의미가 없습니다. 연습을 위해 만들었습니다. 위 기사의 코드를 다음과 같이 만져 보았습니다.

index.js
'use strict';

const functions = require('firebase-functions');
const express = require('express');
const line = require('@line/bot-sdk');

const config = {
    channelSecret: 'hogehoge',
    channelAccessToken: 'hugahuga'
};

const app = express();

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) {
  if (event.message.type === 'location') {
    return client.replyMessage(event.replyToken, {
      type: 'sticker',
      packageId: 11538,
      stickerId: 51626496
    });
  }

  if (event.type !== 'message' || event.message.type !== 'location') {
    return Promise.resolve(null);
  }

}

exports.app = functions.https.onRequest(app);

일단 해설



특히 해설이 필요 없을까 생각합니다만, 자신의 학습을 위해서 씁니다. 상기의 코드로 event.message.type 라고 있는 것이 LINE 유저로부터 보내 온 메세지가 text 인가 location 인가 image 인가를 판단하는 개소입니다 해주기 때문에 쉽습니다.) 이번은 위치 정보를 받았을 때의 판단을 하고 싶으므로, if (event.message.type === 'location'){...} 로서 블록내에 처리를 씁니다.
그런 다음 client.replyMessage()에서 메시지를 반환합니다. 이 때 제 1 인수에 event.replyToken 를 넣어, 제 2 인수에 돌려주는 메세지의 바디를 구축합니다. 이번에는 다음과 같이 구축했습니다.
{
   type: 'sticker'
   packageId: 11538,
   stickerId: 51626496
}
type:sticker 로 스탬프를 반환합니다. packageIdstickerId 가 돌려주는 스탬프를 선택할 수 있는 개소입니다. 이 목록 를 참고로 적당히 선택했습니다. packageID는 각 페이지의 왼쪽 상단에, stickerID는 각 스탬프의 그림 아래에 표시된 번호로 참조가 가능합니다.

동작의 모습



이런 느낌이 들었습니다.

글쎄, 특별한 의미는 없습니다. 네.

결론



위치 정보를 사용한 서비스를 구현할 수 있으면 좋겠다고 생각합니다. 그리고, LINE Things도 모처럼 만졌으므로 제휴해 보고 싶네요.

좋은 웹페이지 즐겨찾기