[Alexa] MyCounterスキルを公開しました
1 はじめに
Alexaのスキルは、公開することで誰でも利用可能になります。 今回は、先日公開したスキル(MyCounter)について紹介させて下さい。
https://www.amazon.com/Classmethod-Inc-MyCounter/dp/B073PQ59YC/
2 MyCounter
MyCounterは、利用された回数をカウントするだけの極めて低機能のスキルです。
"Alexa, Open MyCouner" とか、"Alexa, Ask MyCount" と話しかけると呼び出すことができます。そして、一言挨拶した後、今までに何回呼び出したのかを告げて終わります。
すいません、それだけです。
では、利用している様子を、見てやって下さい。
Alexaのクライアントは、下記のものが使用されています。
注:動画では、"Alexa!"というウェークアップに反応していますが、現在、ストアで公開されているバージョンには、この機能は、まだありません。
3 スキルの有効化
MyCounterは、AlexaのWebアプリから、Skill > Search で、"MyCounter"と入力することで見つけることができます。
表示されたページでENABLEを選択すると、このスキルが有効になります。
4 Alexa SDK
スキルは、Alexa SDKを利用して作成しました。
このSDKは、スキルを作るという目的に対して、極めて最適化されており、少し慣れれば、簡単にスキルが作成できます。
下記は、メインとなるコードです。
'CounterIntent': function () { const kCounter = "counter"; let counter = this.attributes[kCounter]; if (counter === undefined) { counter = 0 } this.attributes[kCounter] = counter + 1; let message = greetingMessage[counter % greetingMessage.length] + this.t('HELP') + this.t('COUNTER') + counter; this.emit(':tell', message); }
MyCounterは、スキルが呼ばれた回数をカウントしていますが、カウント情報を取得し、インクリメントして保存しているのは、3〜7行目です。 これだけのコードで、ユーザに紐付いたカウント情報がDynamoDbへ保存されます。
9行目は、レスポンスするための、メッセージを作成しています。this.t(KEY
)は、用意されたリソースから文字列を取得するSDKに組み込みの機能です。
const languageStrings = { 'en-US': { 'translation': { 'HELP' : '<break time="400ms"/>This skill only counts the number of times it was called.', 'COUNTER' : '<break time="200ms"/>The number of times you called me, ', 'BYE' : "Good by", ・・・省略・・・
10行目のthis.emit(':tell'は、Alexaにレスポンスを返しているコードです。 SDKに用意されている、:tellというハンドラで、全ての処理が完結しています。
Alexa SDKの導入に関しては、下記の記事をご参照下さい。
また、DynamoDbを扱う要領についても、まとめていますので、是非、ご参照下さい。
5 最後に
Alexaは、EchoやEcho Dotが日本で発売されていないため触れる機会が無いのですが、iOSアプリであれば、利用可能ですし、スキルの作成や登録には制限がありません。
もし、「未体験だ」と言う方は、是非試してみて下さい。 今後のUIの行方が少し垣間見れるかも知れません。
6 参考リンク
Alexaクライアント「Friendly Voice Assistant」をリリースしました
Amazon Alexa用のクライアントをiOSで作ってみた
Alexa Skills Kit for Node.js はじめの一歩
Alexa Skills Kit for Node.js 次の一歩(DynamoDB)
Amazon AlexaのSkillにおける、applicationId,userId,deviceIdの一意性の調査