[Alexa] MyCounterスキルを公開しました

alexa-eyecatch

1 はじめに

Alexaのスキルは、公開することで誰でも利用可能になります。 今回は、先日公開したスキル(MyCounter)について紹介させて下さい。


001
https://www.amazon.com/Classmethod-Inc-MyCounter/dp/B073PQ59YC/

2 MyCounter

MyCounterは、利用された回数をカウントするだけの極めて低機能のスキルです。

"Alexa, Open MyCouner" とか、"Akexa, Ask MyCount" と話しかけると呼び出すことができます。そして、一言挨拶した後、今までに何回呼び出したのかを告げて終わります。

すいません、それだけです。

では、利用している様子を、見てやって下さい。

Alexaのクライアントは、下記のものが使用されています。
注:動画では、"Alexa!"というウェークアップに反応していますが、現在、ストアで公開されているバージョンには、この機能は、まだありません。

3 スキルの有効化

MyCounterは、AlexaのWebアプリから、Skill > Search で、"MyCounter"と入力することで見つけることができます。

002

表示されたページでENABLEを選択すると、このスキルが有効になります。

003

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は、EchoEcho 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の一意性の調査