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にアクセスします。

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

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

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

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

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

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

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

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

3.DDSにボットを設定

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

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

では、クローバと会話するボットを作りましょう。こんな感じで設定します。

作成したボットは、ユーザダッシュボード(UDS)に出現します。忘れずにボットを有効化してください。

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

4.AWSに接続

Lambdaのテンプレートを選択します。PythonでAPI Gatewayを使うテンプレートで作成します。

このように設定します

定型文を返す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でデプロイします

ステージの「URLの呼び出し」をコピーします。

デベロッパダッシュボード(DDS)へ戻って、Endpoint Settingへ貼り付けましょう。URLの最後にメソッド名をつけるのを忘れずに。

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

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

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

5.Clovaと会話させる

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