LoginSignup
4
2

More than 5 years have passed since last update.

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

Posted at

今さらな備忘録。

Alexaスキル始め

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

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

作成するもの

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

呼び出し名の設定

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

スクリーンショット 2018-08-13 15.24.04.png

インテントの作成

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

スクリーンショット 2018-08-13 15.29.25.png

呼び出し先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を「デフォルトの地域」に入力します。

スクリーンショット 2018-08-14 3.23.33_deco.png

テストしてみる

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

スクリーンショット 2018-08-14 0.13.28.png

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

まとめ

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

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2