Posted at

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

More than 1 year has passed since last update.

今さらな備忘録。


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のときでした)、以前に比べてかなり使いやすくなってます。チュートリアルも動画も豊富なので、さっと始めるには親切なナビゲーションがあったのはありがたい限りです。