この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
1 はじめに
CX事業本部の平内(SIN)です。
AWS Amplify(以下、Amplify)では、UIツールキットの1つに、チャットボット機能が提供されています。
INTERACTIONS Chatbot
こちらを利用すると、Webページなどに簡単にチャット機能を追加することが可能です。
Amazon Lex(以下、Lex)も最近、日本語に対応したので、利用される場面も広がっているだろうという事で、ここで手順を確認してみたいと思います。
Amazon Lex が日本語に対応。東京リージョンでお使いいただけますhttps://aws.amazon.com/jp/blogs/news/amazon-lex-tokyo/)
Lexのボットは、テンプレートにあるOrderFlowerをそのまま利用した、下記のものを利用しています。
また、ユーザー認証は省略し、Cognitoの未認証IDに、最低限のパーミンションを付与して利用しています。
なお、Amplifyには、Interactions カテゴリの追加で、質問に答えるだけでBot自体を生成する機能もありますが、ここでは、日本語のボットを作成するオプションがなかったので、今回は、使用していません。
% amplify add interactions
2 Amazon Lex
先のブログで作成したボットの名前は、OrderFlowers_ja.JPとなっています。
Lexのコンソール上のTest Chatbotで、動作を確認している様子です。
ボットは、Publishされています。
3 Vue.js+Amplifyの初期化
Vue.jsのプロジェクトをlex_sampleという名前で作成しました。
% vue create lex_sample
❯ Default ([Vue 2] babel, eslint)
・・・略
? Successfully created project lex_sample.
・・・略
%cd lex_sample
すべてデフォルトの設定でamplifyを初期化し、authカテゴリを追加しています。
% amplify init
% amplify add auth
% amplify push
% amplify status
Current Environment: dev
| Category | Resource name | Operation | Provider plugin |
| -------- | ----------------- | --------- | ----------------- |
| Auth | lexsample95c68d5b | No Change | awscloudformation |
4 ロール設定
Amazon Cognito Identity Poolsに作成されたIDの編集を開き、「認証されていないIDに対してアクセスを有効にする」にチェックを入れます。
未認証で使用されるロールに、今回の要件で必要最小限(テキストのやり取りのみ)となるLexへのアクセス権限を付与しています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"lex:PostText"
],
"Resource": "arn:aws:lex:ap-northeast-1:*:bot:OrderFlowers_jaJP:$LATEST"
}
]
}
5 main.js
必要なライブラリをインストールし、main.jsでimportしています。
% yarn add aws-amplify aws-amplify-vue
Botへのアクセス情報は、botconfigというオブジェクトに設定して、Amplify.configure() に渡しています。 aws-exports.jsは、Amplifyのコマンドから変更がされるため、修正を避けた形です。
main.js
import Vue from "vue";
import App from "./App.vue";
import "@aws-amplify/ui-vue";
import Amplify from "aws-amplify";
import awsconfig from "./aws-exports";
Amplify.configure(awsconfig);
const botconfig = {
bots: {
"OrderFlowers_jaJP": {
"alias": "$LATEST",
"region": "ap-northeast-1",
}
}
}
Amplify.configure(botconfig);
new Vue({
render: (h) => h(App),
}).$mount("#app");
Amplify.configure()が2回出てきてなんか、変な感じですが、動いてるみたいです。
main.jsで設定する要領で、下記のようは記述も紹介されていました。
https://aws.amazon.com/jp/blogs/news/amazon-lex-tokyo/
6 App.vue
App.vueは、amplify-chatbotだけを以下のように記述しています。
App.vue
<template>
<div id="app">
<amplify-chatbot
bot-name="OrderFlowers_jaJP"
bot-title="お花屋さん"
welcome-message="いらっしゃませ"
/>
</div>
</template>
7 動作確認
Amplifyでホスティングして、動作を確認している様子です。
% amplify hosting add
% amplify publish
・・・略
✔ Zipping artifacts completed.
✔ Deployment complete!
https://dev.d23p4hlp9ojngb.amplifyapp.com
8 最後に
今回は、Amplify + Vue.js で作成されたWebアプリに、ボットを追加してみました。
AmplifyのUIツールキットは、簡単で強力だと思います。