Alexa for Business プライベートスキルを作ってみました #reinvent #Alexa

2017.12.03

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

1 はじめに

Alexa for Businessでは、新しくプライベートスキルというスキルが作れるようになりました。

スキル管理API(SMAPI)とAlexa スキルキットコマンドラインインターフェイス(ASK CLI)を使用して、配信モードをプライベートに設定し、公開後、AWSアカウントに配布することでAlexa for Businessから利用可能になります。

と言うことで、早速作ってみました。

ちなみに、Live(公開状態)とするために、申請が必要ですが、通常の場合と違い、約1時間でLiveとなっていました。

なお、ASK CLIの使い方については、ここでは省略させて頂きます。不明の場合は、下記をご参照ください。

今回使用したASK-CLIのバージョンは、下記のとおりでした。 Version 1.0.0では、配布のコマンドが使えませんでしたのでご注意ください。

$ ask --version
1.0.0-beta.7

2 手順

プライベートスキルを作成し、利用を開始する手順は、以下のとおりです。

  • 配信モードをプライベートに設定
  • 申請
  • 組織への配布
  • 利用(Enable)

以下、各手順について紹介させて頂きます。

3 配信モードをプライベートに設定

開発段階のスキルのマニフェストで配信モードをプライベートに設定します。マニフェストは、ASK CLIでダウンロードして、編集後、アップロードします。(開発者コンソールでは作業できません)

ASK-CLIでマニュフェストをダウンロードするには、下記のコマンドを使用します。

$ ask api get-skill -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name > private-skill-sample.json

ダウンロードしたマニフェストの、publishingInformationdistributionModeを追加します。

{
  "skillManifest": {
    "publishingInformation": {
      "locales": {
        "en-US": {
          "name": "Private Skill Sample",
          "smallIconUri": "https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.xxxxxxx",
          "largeIconUri": "https://api.amazonalexa.com/v0/skills/amzn1.ask.skill.xxxxxxx"
        }
      },
      "isAvailableWorldwide": true,
      "distributionCountries": [],
      "distributionMode": "PRIVATE"
    },
    "apis": {
      "custom": {
        "endpoint": {
          "uri": "arn:aws:lambda:us-east-1:xxxxxxxx:function:private-skill-sample_skill"
        }
      }
    },
    "manifestVersion": "1.0"
  }
}

編集後、マニフェストを更新します。

$ ask api update-skill -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name -f private-skill-sample.json
Skill updated successfully.

4 申請

申請は、次のコマンドを使用します。(申請は、開発者コンソールからでも可能です)

$ ask api submit -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name

申請前にdevelopmentとなっているステータスは、申請後、Certificationに変わります。

申請後、Liveになるまでには、「最大2時間かかる場合がある」とドキュメントに記載されています。

なお、申請時には、通常の申請と同じく、全ての必須入力項目を埋める必要があります。いくつかが未設定の場合、次のようにエラーとなります。

$ ask api submit -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name
Call submit error.
Error code: 400
{
  "message": "Invalid skill for submission",
  "violations": [
    {
      "message": "Export compliance must not be null"
    },
    {
      "message": "UsePersonalInfo must not be null"
    },
    {
      "message": "IsChildDirected must not be null"
    },
    {
      "message": "Skill summary must not be empty"
    },
    {
      "message": "Testing Instructions must not be null"
    },
    {
      "message": "CategoryItemtypeKeyword must not be empty"
    },
    {
      "message": "Skill description must not be empty"
    },
    {
      "message": "Example phrases must be between 1 and 3"
    },
    {
      "message": "AllowPurchases must not be null"
    }
  ]
}

申請が正常に行われると、Skill submitted successfully. が表示されます。

$ ask api submit -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -p profile-name
Skill submitted successfully.

5 組織への配布

ライブステージでスキルが利用可能になったら、それを1つ以上のAlexa for Business組織に配布します。

配布は、下記のコマンド行いますが、配布先は、AWSアカウントのARNで指定します。

$ ask api add-private-distribution-account -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --stage live --account-id arn:aws:iam::xxxxxxxxxxxx:root -p profile-name
Private distribution account added successfully.

当該スキルがLiveになっていない場合、リソースが見つからないということでエラーとなります。

$ ask api add-private-distribution-account -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --stage live --account-id arn:aws:iam::xxxxxxxxxxxx:root -p profile-name
Call add-private-distribution-account error.
Error code: 404
{
  "message": "Resource not found."
}

なお、スキルの配布状況は、下記の要領で確認できます。

$ ask api list-private-distribution-accounts -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --stage live -p profile-name
{
  "accounts": [
    {
      "acceptStatus": "PENDING",
      "id": "arn:aws:iam::xxxxxxxxxxxx:root"
    }
  ]
}

また、配布を止める要領は次のとおりです。

$ ask api delete-private-distribution-account -s amzn1.ask.skill.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx --stage live --account-id arn:aws:iam::xxxxxxxxxxxx:root -p profile-name
Private distribution account deleted successfully.

6 利用(Enable)

組織に配布されたプライベートスキルは、AWSコンソールのAlexa for Businessサービスで、Skills > Private skillsに一覧されます。

ここで、Reviewをボタンから、有効にすることで、Enables skillsに追加されます。

7 最後に

今回は、Alexa for Businessで新しく追加されたプライベートスキルを試してみました。

Liveとなるのに1時間程度は必要ですが、通常の申請のように数日かかることはありません。また、特定のAWSアカウントに対して配布ができるので、企業内で使用する専用スキルを作るには、非常に適したスキルと言えそうです。

プライベートユースだった、今までのスキルとは、まったく違う、新しい分野への展開を非常に強く感じました。

8 参考リンク


Private Skills
Create and Publish Private Skills