LoginSignup
1
0

More than 5 years have passed since last update.

AWS × Node.jsでLINE Bot開発(「おうむ返し」と「画像カルーセル表示」を実装)

Last updated at Posted at 2018-05-19

AWS と LINE を連携させてbotを作ってみよう・準備編を参考にnode.jsで実装しました。

おうむ返し(index.js)

'use strict';
const line = require('@line/bot-sdk');
var event;
var context;
var callback;
exports.handler = (_event, _context, _callback) => {
    event    = _event;
    context  = _context;
    callback = _callback;
    main();
};
let main = function() {
    const client = new line.Client({
        channelAccessToken: ‘XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX’
    });
    const message = {
        type: 'text',
        text: JSON.stringify(event)
    };
    client.replyMessage(event.events[0].replyToken, message)
    .then(() => {
        callback(null, {});
    })
    .catch((err) => {
        callback(null, {});
    });
};

※ channelAccessTokenの中身「XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX」はLINE developerコンソールで確認して置き換えてください。

これを応用して「画像カルーセル表示」を実装。(index.js)
詳しい使い方はリファレンスを参照してください。

'use strict';
const line = require('@line/bot-sdk');
var event;
var context;
var callback;
exports.handler = (_event, _context, _callback) => {
    event    = _event;
    context  = _context;
    callback = _callback;
    main();
};
let main = function() {
    const client = new line.Client({
        channelAccessToken: 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
    });
    const message = {
      "type": "template",
      "altText": "this is a image carousel template",
      "template": {
          "type": "image_carousel",
          "columns": [
              {
                "imageUrl": "https://example.com/bot/images/item1.jpg",
                "action": {
                  "type": "message",
                  "label": "腰痛",
                  "text": "腰痛"
                }
              },
              {
                "imageUrl": "https://example.com/bot/images/item2.jpg",
                "action": {
                  "type": "message",
                  "label": "頭痛",
                  "text": "頭痛"
                }
              },
              {
                "imageUrl": "https://example.com/bot/images/item3.jpg",
                "action": {
                  "type": "message",
                  "label": "下痢",
                  "text": "下痢"
                }
              }
          ]
      }
    };
    client.replyMessage(event.events[0].replyToken, message)
    .then(() => {
        callback(null, {});
    })
    .catch((error) => {
        callback(null, {});
    });
};

違いは「const message」の中身になります。

おうむ返し

const message = {
        type: 'text',
        text: JSON.stringify(event)
    };


画像カルーセル表示(必須項目のみ)

const message = {
      "type": "template",
      "altText": "this is a image carousel template",
      "template": {
          "type": "image_carousel",
          "columns": [
              {
                "imageUrl": "https://example.com/bot/images/item1.jpg",
                "action": {
                  "type": "message",
                  "label": "腰痛",
                  "text": "腰痛"
                }
              },
              {
                "imageUrl": "https://example.com/bot/images/item2.jpg",
                "action": {
                  "type": "message",
                  "label": "頭痛",
                  "text": "頭痛"
                }
              },
              {
                "imageUrl": "https://example.com/bot/images/item3.jpg",
                "action": {
                  "type": "message",
                  "label": "下痢",
                  "text": "下痢"
                }
              }
          ]
      }
    };

という具合になっています。

1
0
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
1
0