今さらだけどAlexaのカスタムスキルを作ってみた


今さらな備忘録。

Alexaスキル始め

アカウントを用意し、公式ページのチュートリアルや動画を見つつ進めます。アカウント作成についてはこちらを参照。

Alexaの知識がないところからスキルを作ってみた日記 その1

作成するもの

「日付を伝えたら曜日を返してくれる」カスタムスキルを作ってみます。

呼び出し名の設定

実際にAmazon Echoに話しかけるための呼び出し名を設定します。今回は適当に「曜日確認」という呼び出し名にします。

インテントの作成

次にインテントの作成をします。変数を利用して、最初にどんな日付でも受け付けられるようにします。{date} 変数は日付形式を扱いたいので、「Amazon.DATE」をスロットタイプには指定します。こうすることで、Alexaが認識した{date}YYYY-MM-DD の形式に変換して呼び出し先のパラメータとして渡してくれる様になります。

呼び出し先Lambda関数の作成

作成してきたAlexaのスキルが呼び出す先のLambda関数を作成します。呼び出し元に「AlexaSkillKit」を指定して、中身を実装します。今回はPython3.6で簡単に実装しました。

import datetime
import locale

def lambda_handler(event, context):
    intent = event['request']['intent']
    date_str = intent['slots']['date']['value']

    locale.setlocale(locale.LC_TIME, 'ja_JP.UTF-8')
    date = datetime.datetime.strptime(date_str, '%Y-%m-%d')

    res_str = date.strftime("%Y") + "年" + date.strftime("%m") + "月" + date.strftime("%d") + "日は、" + date.strftime("%A") + "です。"

    response = {
        'version': '1.0',
        'response': {
            'outputSpeech': {
                'type': 'PlainText',
                'text': res_str
            }
        }
    }
    return response

エンドポイントの設定

Lambdaが呼び出せるようになったら、ARNを「デフォルトの地域」に入力します。

テストしてみる

ここまでできればビルドが通るようになってますし、「テスト」をしてみます。

音声入力をしましたが、いい感じに解釈して返事を返してくれるようです。

まとめ

Alexaのスキル開発をしたのは約2年ぶりなのですが(初めて触ったのは2016のre:Inventのときでした)、以前に比べてかなり使いやすくなってます。チュートリアルも動画も豊富なので、さっと始めるには親切なナビゲーションがあったのはありがたい限りです。