7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

プロトアウトスタジオAdvent Calendar 2019

Day 4

Paiza Cloud で LINE Bot を試してみる

Last updated at Posted at 2019-12-03

プロトアウトスタジオアドベントカレンダー4発目の記事です!

昨日は @tkyko13 さんの「word2vecの勉強で「word2vecの勉強で「ナダルリバースエボリューション」が再現できるのではないかと思いついたのでやってみた」でした。

Paiza Cloud とは

クラウド開発環境 PaizaCloudクラウドIDE - クラウドIDEでWeb開発!

2019-12-03_01h00_54.png

ブラウザを開くだけでLinuxサーバが使える!
クラウド開発環境PaizaCloudクラウドIDEでは、ブラウザだけでLinuxサーバを操作できます。ファイル操作、テキスト操作、コマンド操作、Webサーバ/DBサーバの立ち上げなど、全てブラウザだけで行えます。 もう、面倒なコマンドでのログイン(ssh)やファイル操作(vim)、ファイルのアップロードは必要ありません。 目の前のコンピュータと同じように、クラウド上のLinuxサーバを操作できます。

とのことで、以前、Katacodaで LINE Messaging API Playground (ja) を作った身としては興味があります。

image.png

料金表をみてみても1つのサーバーが無料で24時間使えるので、Katacodaよりも長時間使えます。(2019/12/03現在)

サーバーを立ち上げる

Paiza Cloud のアカウント登録をして、まず、Node.jsサーバを立てあげてみましょう。

image.png

新規サーバーを押します。

image.png

Node.jsをクリックして新規サーバ作成します。

image.png

このような形で起動します。

LINE Bot をつくる

1時間でLINE BOTを作るハンズオン (資料+レポート) in Node学園祭2017 #nodefest - Qiita

こちらの資料をベースに、「1. Botアカウントを作成する」を進めてBotと友達になるところまで進めましょう。

「2. Node.jsでBot開発」からはじめます。

image.png

左のメニューのターミナルを押して、ターミナルを起動します。

npm i @line/bot-sdk express

を実行します。

image.png

無事インストールされました。

image.png

新規ファイルを押して、

image.png

server.js ファイルを作成します。

以下をコピー&ペーストしましょう。

server.js
'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分は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);

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}`);

image.png

保存します。

自分のBotとして動くように、Channel SecretとChannel Access Tokenを反映

自分のBotとして動くように、Channel SecretとChannel Access Tokenを反映させます。

1時間でLINE BOTを作るハンズオン (資料+レポート) in Node学園祭2017 #nodefest - Qiita

の流れに沿ってChannel SecretとChannel Access Tokenをメモしておきます。

左上のファイルツリーから server.js を選択してエディタで編集できるようにします。

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

server.jsのこちらを変更します。仮に Channel Secret が ABCDEFGHIJ 、channelAccessTokenが 1234567890 とすると。

const config = {
    channelSecret: 'ABCDEFGHIJ',
    channelAccessToken: '1234567890'
};

と、なります。

ファイルを保存します。

server.jsを動作させてWebhook URLを設定

ターミネルウィンドウで以下のコマンドを打ち込んで起動します。

node server.js

起動すると Server running at port 3000 と表示されたらOKです。

image.png

公開URL確認

image.png

起動すると左のメニューに 3000 というボタンが出来るので、公開URLを確認します。

image.png

内部ブラウザが開いてURLが確認できるのでメモしておきましょう。

image.png

こちらをLINEの管理画面のメッセージ送受信設定>Webhook URLに反映します。

これで準備完了です。

動かしてみる

実際にLINEでBotを会話してオウム返しを体験しましょう。

image.png

LINEで話しかけてみると無事返答されます。

image.png

ターミナルを見てみると

image.png

サーバーのやり取りも確認できます。

明日の記事は…

@doikatsuyuki さんの「Firebaseを利用した中耳炎診療支援Webアプリの作成 (1.Firebaseの設定~認証方法の追加)」です!

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?