LINE Developer의 관리 화면의 "검증"버튼에서 연결 확인 성공

관리 화면의 "검증"버튼 위치



이 페이지의 페이지



이것입니다.

지금까지는 성공하거나 하지 않거나...



지금까지의 코드에서는 이런 느낌에 접속 확인시의 통신을 판단하고 있었습니다.
(일부 발췌)
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));
});

조금 전(2020년 9월 정도?)에서는, 성공하거나 하지 않거나 해서 너무 많이 맞추지 않았다

그러자 최근(2020년 11월 현재) 전혀 성공하지 못했습니다.

다만, 그 검증 이외는 보통으로 움직이고, 그 if문소하면 지워서 보통으로 검증 성공하기 때문에 괜찮다고 생각했습니다만, 이번 이것을 해소해 보려고 하고, 성공했으므로 공유해 다

검증 성공한 소스 코드



완성 코드입니다만, 채널 시크릿이나 액세스 토큰은 각각 치환 부탁합니다
'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);

    // 空っぽの場合、検証ボタンをクリックしたときに飛んできた"接続確認"用
    if (req.body.events.length == 0) {
      res.send('Hello LINE BOT! (HTTP POST)'); // LINEサーバーに返答します
      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') {
    return Promise.resolve(null);
  }

  return client.replyMessage(event.replyToken, {
    type: 'text',
    text: event.message.text //実際に返信の言葉を入れる箇所
  });
}

app.listen(PORT);
console.log(`Server running at ${PORT}`);


받는 데이터의 events는 검증시 비어있었습니다.

또, 이전에는 성공하거나 하지 않았거나 했습니다만, 거의 거의 검증이 정확하게 되어 있을 것 같았습니다!

이렇게 함으로써 검증 버튼으로부터의 통신인지, 보통 BOT에게 말한 통신인지를 알게 되었습니다.

좋은 웹페이지 즐겨찾기