SAP Conversational AIでchatbot作って在宅勤務の寂しさを紛らわしてみた


#はじめに

こんにちは。
在宅勤務で日々業務を励んでいます夏と申します。
でも、家で仕事をしていると、どうしても心細くなりますよね。
ちょっとでもいいからなんか人からリアクションほしいな…
でもみんな忙しいしな…
誰か話し相手になってくれないかな……
**ということで、自分なりの話し相手が欲しいので、
 SAP Conversational AIでchatbot作って在宅勤務の寂しさを紛らわそうと思います。** 

※この記事は[ chillSAP 夏の自由研究2020 ](https://note.com/chillsap/n/n66e12ef65d11/)の8月26日分の記事として執筆しています。※


#やったこと
LINEで簡単な挨拶＆褒めてくれるchatbotを作りました。

![IMG_1136 - コピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/eedf564e-7da2-4ee4-76c2-f69df2cb2a08.png)


#参考にしたもの
作成手順は以下を参考にしました。
[cai.tools.sap](https://cai.tools.sap/)
基本的にこの手順を追えばサクサクできます。

以下も大変参考になりました。
[SAP Conversational AIで簡単なchatbotを作ってみた](https://tiga1002.hatenablog.com/entry/build-your-first-bot-with-sap-conversational-ai)

[チャットボットの開発（SAP Conversational AI）](https://blogs.sap.com/2019/06/21/%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%83%9C%E3%83%83%E3%83%88%E3%81%AE%E9%96%8B%E7%99%BA%EF%BC%88sap-conversational-ai%EF%BC%89/)

[Build Your First Chatbot with SAP Conversational AI](https://developers.sap.com/tutorials/cai-bot-getting-started.html)
※SAP公式チュートリアル

#作成手順の概要
詳細は[cai.tools.sap](https://cai.tools.sap/)を参照してただければ確認できますが、ここでは簡単な流れを説明します。

##①chatbotの新規登録
1.[cai.tools.sap](https://cai.tools.sap/)にてアカウント作成

2.New botをクリックし、「Perform Actions bot」を選択
![新規ボットの作成.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/8d91d384-5877-e31c-1478-d3fde846ec9b.png)


Retrieve Answerは、アップロードしたドキュメント（csvファイル）から、ユーザーの質問に対する回答を取得することができ、名の通りFAQなどに使用できる模様です。

3.今回は簡単な挨拶をメインとしているので、Greetings skillを選択
![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/7bc9ddc9-15b0-bf98-38af-124d3ef5adea.png)

4.botの名称等や設定を記入
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/713ba0ce-c649-3086-ea03-e8bccac49998.png)

これでchatbotの作成が完了します。
![ボットの作成完了.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/8fcb6833-1926-d6fc-b52b-6cd560f4635d.png)



##②chatbotの設定

1.Intentの作成
Intentとは、 その発言が、どういった意図を持っているのか？をカテゴリに分類できる
概念のことを指します。
「CREATE」よりIntentを作成できます。まずは「挨拶」の部分を作成します。
![ボットの作成完了 - コピー (2).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/c65090fc-1606-470e-f89d-f1a2e6ba0690.png)
![インテント作成.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/9607420e-0f48-dbb4-a04c-15f780856f59.png)

※既存のインテントを検索し、Fork（再利用）することも可能です。こっちのほうが早く便利ですね。
「SEARCH」より検索して（画像では「hello」で検索しています）
![ボットの作成完了 - コピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/d418f836-f457-a33a-6de9-f387b512016e.png)

対象のインテントをForkすれば
![検索結果.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/8aa9f122-34bf-4c9d-e3ed-5e59b5534914.png)


追加されていることが確認できます。
![参考挨拶を追加.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/9dcbbbed-2150-23bb-34f6-3e2a1c052b67.png)


2.expressionsを追加
ユーザーが入力しそうな挨拶を入れていきます。今回は挨拶を2つ入れました。
![例文.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/8cc88c72-c731-5427-4d61-b0847c32c3cc.png)

本来であれば、1つのintentにつき最低でも30、理想的には50個のexpressionsを追加する必要があるようです。
一度に入力するのはもちろん大変なので、CSVファイルで一気に登録することもできます。

以下のようなCSVファイをつくり「IMPORT A CSV FILE」から
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/7f9980a8-b8ad-65b1-6c88-d8f1ecf3a95a.png)
アップロードすることが可能です。ラクチン。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/07f74dbe-5da5-9fef-1743-94744f6a2e29.png)

3.Skillを作成
「Build」タブに移動し、「Create skill」を選択。
説明文に従い、今回は簡単な応答のためFLOATINGを選択。
![キャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/a65dac61-fdcb-8495-67eb-b1076737e238.png)


BUSINESSもFLOATINGも基本的には同じですが、botのコアの部分をBUSINESS、その補助的な機能としてFLOATINGとして設定できる模様です。
Fallback skillsとは、ユーザーからのメッセージの後に他のスキルが満たされていない場合に実行されます。今回では特に設定していません。

4.Triggerの設定
このTriggerで、スキルを開始するきっかけを設定できます。
ここでは、aisatuのIntentに合致する文章が存在したらスキルgreetingが発動させたいので、以下のように設定。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/3e462fd3-f2af-9811-58ff-6259184ec8c2.png)

5.Actionの設定
スキル発動時の具体的なイベントを設定します。
今回は、挨拶された場合に複数の返事をしてもらいたいので、返信を複数用意させました。
![あいさつ文のアクション.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/fbc3058d-eab2-371a-1151-f0ddd86d1ee2.png)


テキスト以外にも様々なアクションを設定できます。面白そうですね。
![アクション設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/da75d167-20a5-8102-7320-a0fdad07f829.png)

これで、簡単ですが挨拶の応答を設定できました。
この手順と同様に「褒める」パターンも設定していきます。
（内容はほぼ同じなのでここでは割愛させていただきます）

6.TEST実行により確認する
作成させたbotは、画面右下の「CHAT WITH　YOUR BOT」で機能を確認することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/34c7c49a-815f-c8b5-c2e6-aee4e37d6bc5.png)

botからの返信につく「!」マークを選択すれば、Debug画面が表示され、
botがどのように解釈をしたのかが確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/138843b2-b502-7a20-3cad-c43de195d156.png)


正しく応答できることが確認できたら、ラインと連携させます。


##③LINEと連携
「Connect」タブに移動し、「LINE」を選択。
![ライン連携.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/45ceaa80-d412-cea1-7830-14ad17d26029.png)

この手順に従い設定していきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/dbf337bf-6394-7436-7816-9af3c52ceed9.png)

説明するとこんな感じ。
1.LINEをスマホにインストール
2.LINEアカウントを登録
3.[LINE Developers](https://developers.line.biz/ja/)へログイン
4,5.作成したchatbotと連携させるためのプロバイダー、チャネルを作成
プロバイダー、チャネル作成は[公式HP](https://developers.line.biz/ja/docs/messaging-api/getting-started/#using-console)が参考になります。
6.Channel secretとaccess tokenを張り付け、「UPDATE CHANNEL]で更新

![ラインとの連携 - コピー.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/2cb6e425-4901-2011-290b-3362c499198f.png)

なお、LINE Developers画面の以下から確認できます。
チャネル基本設定＞Channel secret
Messaging API設定＞Channel Access Token

7.生成されたwebhook URLを設定。
更新が成功すると、webhookURLが生成されるので、
![ラインとの連携 - コピー (2).PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/38c93825-52b7-3cf0-e058-3866b9181456.png)

LINE DevelopersのMessaging API設定のWebhook URLに張りつけます。
検証を押して確認します。（Webhookの利用を有効化することを忘れずに！）
![webhookURL設定.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/447559/b176ef47-3044-d584-e988-9c51125a28d8.png)


8.LINEで確認
LINE Developers画面のQRコードを読み取り、友達追加して話しかければ完成です！
結構サクサクと連携できます。


#やった感想

・今回は1からIntent等を作成しましたが、既存のものを使えばさらに手軽だと思います
・簡単な挨拶や応答であれば1から作成してもそれほど手間ではなく、コーティングも不要で開発しやすいです
・特に、編集画面内ではFAQが豊富で、少し詰まっても調べると分かることが多いので、個人的にはちょうどよい難易度でした
・LINEであればQRコードの配布で気軽に共有できるので、社内研修等やミニゲームで配布するのも面白そうです
・今後はよりchatbotらしいbot（話し相手）を作ってみたいと思います
・結構楽しかったので寂しさは紛れました

以上です！
ここまで読んでいただきありがとうございました～