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); } });
実際に使ってみよう
おわりに
いかがでしたでしょうか。
テキストのやり取りについては、簡単に連携することができました。
音声入力についても、今後連携していきます。