Alexa Skillsを公開する流れ


デベロッパーコンソールでテストが出来たり、https://echosim.io/でブラウザ上でSkillを実行できたりと、Skillの開発環境が色々と揃ってきました。

そこで、実際に作ったSkillが公開されるまでの流れをまとめてみました。

Skillの登録

以前に書いたAmazon Alexa Skills Kitを調べてみるのように、Amazon.comのアカウントが必要です。そのアカウントを利用して、developer portalにログインして登録します。

メニューのAlexaを選ぶとAlexa Skills KitAlexa Voice Serviceが選べるので、Alexa Skills Kitを選びます。

すると自分が作成したSkillの一覧画面に移動します。

右上のAdd a New Skillをクリックします。

基本情報の登録


今回は、通常のSkillを作成するのでCustom Interaction Modelを選びます。NameにはSkill名を入力します。ここに入力したSkill名がAlexa AppやEchoのskill一覧に表示されます。Invocation Nameには、Skillを実行するときのワードを入力します。今回は月の月齢を尋ねるSkillを作ってみたので、Moon Ageとしました。Alexaに実行させる場合はAlexa, ask Moon Ageのように話しかけることで、Skillが呼び出され、今日の日付の月齢を答えてくれます。
Invocation Nameに登録できる単語には使える文字や数などの制約があり、当然ながらEchoAlexaAmazonと言った単語も使えません。
注意)以降の画像でアイコンが表示されていますが、全部登録した後に撮ったスクショなのでそうなっています。実際はアイコン画像を登録するまでは何も表示されていません。

Intent Schema


ここでは、Alexa, ask Moon Ageと問いかけた時に呼び出されるIntentの定義を行います。Moon Ageでは追加のキーワードを指定しないので、slotと呼ばれるキーワードの定義はしません。
もしMoon Ageが今日のではなく特定の日の月齢を返すSkillとして作る場合は、Intent Schemaは以下の様な形になります。

{
  "intents": [
    {
      "intent": "AskMoonAge",
      "slots": [
        {
          "name": "Date",
          "type": "AMAZON.DATE"
        }
      ]
    }
  ]
}

Sample Utterances


ここでは、Intentと実際に発話をひも付けます。Moon AgeはAlexa, ask Moon Ageと1種類だけですので、ask moon ageを先ほど登録したIntentのAskMoonAgeとひも付けます。
特定の日の月齢を調べられるように作った場合は、以下のようにそのパターンも書いてあげます。

AskMoonAge ask moon age
AskMoonAge ask moon age for {Date}

Endpoint


LambdaでSkillを作ったので、ここではLambdaのエンドポイントを入力します。
アカウントの連携もしないのでAccount LinkingNoを指定。

Test


ここまで情報を埋めると、実際にSkillのテストが行えます。

Enter Utteranceの所に、Alexaに問いかける文章を入力してAsk Moon Ageボタンをクリックすると、Lambdaに送信されるリクエストと、Lambdaが返してきたレスポンスの内容を確認することが出来ます。

Publishing Information


公開するための情報を入力します。
Example Phrasesには、Alexaにどのように話しかけることで実行できるかのサンプルを書きます。


カテゴリー、Skillの検索キーワード、アイコンを登録します。
Testing Instructionsには作成したSkillをレビューチームがどうテストすればいいかを書きます。

Privacy & Compliance


Skillを利用するのにお金が必要か?個人情報を収集するか?と言った質問に答えます。
例えば、Alexa経由でピザを注文できるようなSkillを作ったならば、届け先住所などの情報も収集することになるので、プライバシーポリシーや利用規約のURLも指定する必要があります。
Moon Ageは非常に単純なSkillなので、URLは未入力でも大丈夫でした。(今後もそうとは限りません)
Export Complianceは、EAR (米国輸出規則) に準拠しているかを聞かれていますが、SkillはSSLに対応したエンドポイントじゃないと作成できないので、必ずチェックをつけることになります。
チェックつけた後にSaveをクリックして保存すると、Submit for Certificationがクリックできるようになります。

確認ダイアログ


Submit for Certificationをクリックするとダイアログが表示されるので、問題なければYesをクリックします。

これで、審査が行われます。
審査中は設定を変更することが出来ないので、変更したい場合はwithdraw from Certificationをクリックして申請を取り下げます。

一覧に戻ると、審査中ステータスになってます。

審査終了

審査が終わるとその旨を伝えるメールが届きます。
そして、Skillの一覧には公開されているSkillが増えています。

実際に試していないけど、Skillの設定を変えたら再度審査になるのかな?

メトリックス

開発版も公開されている物も呼びだされた回数をグラフで見ることが出来ます。

あとがき

すごく簡単なSkillを作って実際に公開するまでの手順を書きましたが、結構簡単ですね。初期の頃と比べるとテストも簡単にできるし。
Lambda使えばサーバを用意する必要もないですし、負荷もほとんど気にする必要が無いので、何かいいアイディアがあれば作ってみるのもいいと思います。