LoginSignup
1

posted at

updated at

Alexa 定型アクションでカスタムタスクを使って自分のスキルを起動させる方法 -Custom Task with Alexa Routines-

定型アクションでカスタムタスクが使えるようになった!

2022年3月31日、カスタムタスクが定型アクションから使えるようになったとアナウンスがあった。
Custom Tasks with Alexa Routines offers skill developers a new and effective way to turbocharge skill engagement

定型アクションでカスタムタスクを使うには、カスタムスキルにカスタムタスクを追加してあげる必要がある。カスタムタスクは Alexa Developer Consoleでは作成できないので、ASK CLIを使ってデプロイする必要がある。

以下のロケールで、この機能が使える。(2022年3月31日)
en-AU, en-CA, en-IN, en-GB, en-US, fr-CA, fr-FR, de-DE, hi-IN, it-IT, ja-JP, pt-BR, es-ES, es-MX, and es-US.

定型アクションとは

ざっくり言うと、Alexaができることを自動実行させるもの。実行条件は、キーワードだったり時間だったりと複数の選択肢がある。例えば、朝8:00に音楽をかける。 水の音を検知したら知らせる。 夜23:00に電気を消し、「おやすみ」と言う。 など。

ルーティンに使えるAlexaの "定型アクション" とは?
1つのフレーズ(例:「アレクサ、おやすみ」)や決まった時刻で、音声アシスタントのAlexaが
天気情報や音楽を流すなど複数のことをセットで実行してくれるのが、定型アクションです。
自分のお気に入りの定型アクションを家族や友達にQRコードでシェアできるようになったので、みんなの定型アクションを試して楽しむこともできます。

Alexa定型アクションをセットアップする方法はこちらを参照。

カスタムタスクとは

以下のことをするために必要な情報を定義したもの。No.1と2はこれまでも使えていて、今回はNo.3が追加となった。

No. できること 概要
1. Direct Skill Connections 他のスキルと連携する。
2. Quick Links for Alexa 外部からスキル内へ入力パラメーターを渡すことができる。
3. Alexa定型アクション スキル起動時にパラメータを指定することができる。

Alexa カスタムタスクの実装と動作確認方法は、こちらを参照

定型アクションでカスタムタスクを使用するメリットは?

定型アクションでスキルを選択して起動させることは以前からできていた。では、カスタムタスクを追加すると何が良いのか?それは、スキル起動時のパラメータを予め設定できる点だと思う。

これまでは、スキルを起動させて、スキルとのやり取りの中でスロットとして拾っていた。その値を、事前に設定しておくことができるようになったため、会話のターンの短縮が期待でき、やりたい事に直接アクセスすることが可能となる(スキルの作り方次第ではあるが)。他にもメリットはあると思うけど、これが一番効果が高いと思っている。

定型アクションで使用できるカスタムタスクは3種類

No. カスタムタスクの種類 概要
1. パラメータなし 入力を必要としないもの。
2. 単一文字列の入力パラメータ 定型アクションでパラメータ値を設定できる。(任意の文字列)
3. 事前定義した入力パラメータ(選択式) 予め定義されたリストの中から値を選択する。

定型アクションに表示するための必須項目がある

タスク定義に下記が含まれていないと定型アクションには表示されないので注意。

  • x-amzn-alexa-access-scopepublic であること。
  • "info" に description が記載されていること。
  • "components" に x-amzn-display-details が追加されていること。さらに description が記載されていること。

Quick Links for Alexa 用にカスタムタスクを作ったときは、 description なしで良かったし、componentsx-amzn-display-details の記載が無くても動作していた。しかし、そのスキルを定型アクションで指定しても、カスタムタスクの項目が現れる事はなかった。上記、Alexa カスタムタスクの実装と動作確認方法 に記載されているタスク定義は定型アクションで使用するには不十分ということ。理由は、定型アクションの設定をする際の説明文として、description が使用されているため。このページの下部にある画像を見るとイメージが掴めると思う。

For each chosen locale, you must provide a user-friendly task title and task description in the task definition file, as the next step describes.
Note: If the task title and description for a given locale are missing from the task definition file, the task doesn't appear in Alexa routines for that locale.

追加①

infox-amzn-display-detailsdescription が必要。

    "info": {
      "title": "Task to get the campaign code",
      "version": "1",
      "x-amzn-alexa-access-scope": "public",
      "x-amzn-display-details": {
        "ja-JP": {
         "title": "キャンペーンコード",
         "description":"スキルに対して外部からキャンペーンコードを入力することができます。"   <- これ
        }
      }

定型アクションでスキルを選択すると、タスクの説明が表示される。

定型アクション設定

追加②

components にも x-amzn-display-details を記載する必要がある。

    "components": {
      "schemas": {
        "Input": {
          "type": "object",
          "properties": {
            "CampaignsCode": {
              "type": "string",
              "x-amzn-display-details":{        <- これ
                "ja-JP":{
                  "name": "キャンペーンコード",
                  "description":"キャンペーンコードを入力してください。"        <- これ
                }
              }

パラメータの入力時に説明が表示される。

定型アクション設定

スキル申請

申請時のエラーチェックに、カスタムタスクのエラーチェックが含まれるようになっているので、間違えはすぐ見つけられるようになっている。

image.png

審査にパスしないと試せない

カスタムタスクは審査にパスしないと使用することができないため、カスタムタスクの定義情報を修正して再申請した。
定義ファイルの修正だったためか、あっさりパス。しかも土曜日の夜に申請して、日曜日の朝には返信がきた。どうゆうことだ?:grin:

動きはこんな感じ

パラメータが入力できるようになっているのがわかると思います。Alexa活用の幅が広がりそう。

動作確認

参考(カスタムタスク定義:単一文字列)

良く見たら、responsesdescription がいけてない・・・※修正漏れ。:sweat_smile:

{
    "openapi": "3.0.0",
    "info": {
      "title": "Task to get the campaign code",
      "version": "1",
      "x-amzn-alexa-access-scope": "public",
      "x-amzn-display-details": {
        "ja-JP": {
         "title": "キャンペーンコード",
         "description":"スキルに対して外部からキャンペーンコードを入力することができます。"
        }
      }
    },
    "tags": [{
      "name": "Campaignsc"
    }],
    "paths": {
      "/Campaigns": {
        "summary": "Campaigns Code",
        "description": "To start a campaign feature",
        "post": {
          "requestBody": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Input"
                },
                "examples": {
                  "GetCampaignsCode": {
                      "summary": "キャンペーンコードを取得",
                      "description": "キャンペーンコードを取得するためのタスク",
                      "value": {
                          "CampaignsCode": "Campaign A"
                      }
                  }
                }
              }
            }
          },
          "responses": {
            "200": {
              "description": "When the count down finishes successfully",
              "content": {
                "application/json": {
                  "schema": {
                    "$ref": "#/components/schemas/SuccessfulResponse"
                  }
                }
              }
            },
            "400": {
              "description": "When the given parameters fail validations"
            },
            "500": {
              "description": "When the count down fails"
            }
          }
        }
      }
    },
    "components": {
      "schemas": {
        "Input": {
          "type": "object",
          "properties": {
            "CampaignsCode": {
              "type": "string",
              "x-amzn-display-details":{
                "ja-JP":{
                  "name": "キャンペーンコード",
                  "description":"キャンペーンコードを入力してください。"
                }
              }
            }
          }
        },
        "SuccessfulResponse": {
          "type": "object",
          "properties": {
            "endTime": {
              "type": "string",
              "format": "date-time"
            }
          }
        }
      }
    }
 }

関連

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
1