Amazon Lexを使ったLINE Botをつくる

こんにちは、中村です。
前回に引き続きAmazon Lex(以下、Lex)のお話です。

今回はLINEと連携させます。細かい設定は、こちらを参考にしてください。

注意点

API Gatewayの設定

LINEの署名チェックを行うために、リクエストヘッダー情報が必要です。
ヘッダー情報をAmazon Lambdaに渡すために、API Gatewayで下記の設定をしましょう。

LINEの設定

LINE開発者コンソールのチャネル設定から"自動応答メッセージ"を"利用しない"に設定する。
設定しない場合メッセージを送信すると、下記のメッセージが表示されます。

Lexとの連携

前回Lexで作成したBotを使用します。
LexのコンソールからBot NameとBot Aliasをメモしてください。

Bot Name

Bot Alias

AWS SDKで連携できるので、簡単に動かすことができます。

const line = require('@line/bot-sdk');
const aws = require('aws-sdk');
var lex = new aws.LexRuntime({region: 'us-east-1'});
var client = new line.Client({channelAccessToken: /* LINEチャネルのACCESSTOKENを入れてください */});

var params = {
    botAlias: 'prd',
    botName: 'Reservation',
    userId: event.events[0].source.userId,
    inputText: event.events[0].message.text
};
lex.postText(params, function(err,data){
    if (!err) {
        var message = {
            'type': 'text',
            'text': data.message
        };
        client.replyMessage(event.events[0].replyToken, message).then((response) => console.log(response)).catch((err) => console.log(err)); //LINEの送信
    } else {
        console.log(err);
    }
});

実際に使ってみよう

おわりに

いかがでしたでしょうか。
テキストのやり取りについては、簡単に連携することができました。
音声入力についても、今後連携していきます。