AI
チャットボット
Clova
スマートスピーカー
Sebastien

Sebastienでボットを喋らせて、Clovaとボット同士の会話をさせる

Sebastienについてはこちら

作るもの(動画)

準備するもの

  • Googleアカウント、またはdアカウント
  • AWSアカウント、LambdaとAPI Gatewayの知識
  • LINEのWave、Android端末

作業工程

  1. UDSにデバイスを設定
  2. アプリをインストール
  3. DDSにボットを設定
  4. AWSに接続
  5. Clovaと会話させる

1.UDSにデバイスを設定

Googleアカウントを取得し、UDSにアクセスします。
スクリーンショット 2017-10-03 14.29.33.png

dアカウントでもログインできます。
利用規約に同意して進みます。

スクリーンショット 2017-10-03 14.31.03.png

新規デバイス登録画面が出ます。本来はここでデバイスを登録するのですが、現在はトライアル版のため登録できません。次に進みましょう。

2.アプリをインストール

Android端末でPlayストアを起動し、「cotobadesign」を検索すると見つかる対話アプリをインストールします。

スクリーンショット 2017-10-03 14.39.50.png

起動して先ほどと同じGoogleアカウントでログインすると、認証が自動で行われます。
UDSへ戻って画面をリロードしてみてください。

スクリーンショット 2017-10-03 14.41.27.jpg

SHADOWSの欄に、DOCOMOのTrialが出現しました。
SHADOWとは、大量にボットを作ったときに紐付けることが出来る単位です。今回は、SHADOWやデバイス追加について気にせず先へ進みます。

スクリーンショット 2017-10-03 14.48.24.png

開発したボットは有効化しないと動きません。左のアイコンをクリックしてプルダウンを出し最下段の「サービス追加」画面から、ボットの有効化を行います。

スクリーンショット 2017-10-03 14.49.41.png

今は何もないですね。先にボットを開発しましょう。

3.DDSにボットを設定

先ほどと同じアカウントで、DDSにログインします。利用規約に同意して進みます。

リファレンスに詳しく載っていますが、デフォルトで用意されているシステムCGSを使えば天気やニュースなどを呼び出すボットが簡単につくれます。

では、クローバと会話するボットを作りましょう。こんな感じで設定します。
スクリーンショット 2017-10-05 12.48.27.png

作成したボットは、ユーザダッシュボード(UDS)に出現します。忘れずにボットを有効化してください。
スクリーンショット 2017-10-05 12.19.32.png

ボットに好きな言葉を喋らせようとすると、コードを書く必要があります。ここでは、AWSのLambdaを使います。

4.AWSに接続

Lambdaのテンプレートを選択します。PythonでAPI Gatewayを使うテンプレートで作成します。
スクリーンショット 2017-10-05 11.44.44.png

このように設定します
スクリーンショット 2017-10-05 11.46.41.png

定型文を返すPythonコードです。

# coding: UTF-8
import logging
import json

logger = logging.getLogger()
logger.setLevel(logging.INFO)
logger.info('Loading Lambda function')

def lambda_handler(event, context):
    data = json.loads(event['body'])
    log('data = {}'.format(data))

    bot_id = data['bot_id']
    user_id = data['user_id']

    body = {
        "error_code": "success",
        "status": "true",
        "bot_id": bot_id,
        "user_id": user_id,
        "params": {
            "status": "true",
            "message": 'あ、、、い、いや。何でもないです。'
        }
    }
    response = {
        'statusCode': 200,
        'body': json.dumps(body)
    }
    log('response = {}'.format(response))
    return response

def log(message):
    logger.info(message)

保存したら、API Gatewayでデプロイします
スクリーンショット 2017-10-05 11.53.28.png

ステージの「URLの呼び出し」をコピーします。
スクリーンショット 2017-10-05 11.54.09.png

デベロッパダッシュボード(DDS)へ戻って、Endpoint Settingへ貼り付けましょう。URLの最後にメソッド名をつけるのを忘れずに。
スクリーンショット 2017-10-05 11.55.20.png

DDSの画面右でテストをしましょう。
まずは、(Invocation name)を呼んで、(Invocation name)をお願い、などと発言し、ボットを呼び出します。

スクリーンショット 2017-10-05 11.58.24.png

「こんにちは」と、発言します。

スクリーンショット 2017-10-05 12.50.51.png

先ほどの定型文が返ってきました。その後に、Goodbye messageがつながっています。Goodbye messageを設定しなければ、会話を終わらせずに続けることが出来ます。

5.Clovaと会話させる

Androidアプリを立ち上げ「(Invocation name)を呼んで」と発言すれば、ボット同士の会話が始まります。
「クローバ、◯◯」などと発言の前に「クローバ」を入れれば、Clovaが反応してくれます。Goodbye messageを設定せずにNLUを使えば、会話のバリエーションを増やすことも出来そうですね。