LoginSignup
4
2

More than 3 years have passed since last update.

Alexaで動画再生スキルをつくってみる

Posted at

はじめに

せっかくEcho Show 5を買ったわけなので画面を生かすスキルを練習がてらつくってみました。導入はとても簡単でした。

セットアップ

せっかく前回自分用のテンプレートをつくってみたわけなので、それを使います。

ask new --url https://asktemplatesstack-bucket83908e77-x9vhv4xdr8m4.s3-ap-northeast-1.amazonaws.com/templates.json

上記を実行したらテンプレートの選択画面に移るので、「Hello TS」を選びます。今回は多言語対応はしないので余計なファイルは鬱陶しいので消します(本当はどっちでもいいですが)。

ビデオテスト再生を有効化する

カスタムスキルでビデオ再生をするにはスキルマニフェストCustomInterfaceというインターフェースの列挙値を定義します。テンプレートをベースにこんな感じで書き換えました。

video-skill-test/skill.json
{
  "manifest": {
    "publishingInformation": {
      "locales": {
        "ja-JP": {
          "name": "ビデオテスト",
          "summary": "ビデオテスト",
          "description": "ビデオテスト",
          "examplePhrases": [
            "アレクサ、ビデオテストを開いて",
            "再生",
            "ヘルプ"
          ],
          "keywords": []
        }
      },
      "isAvailableWorldwide": false,
      "testingInstructions": "Sample Testing Instructions.",
      "category": "KNOWLEDGE_AND_TRIVIA",
      "distributionCountries": []
    },
    "apis": {
      "custom": {
        "endpoint": {
          "sourceDir": "lambda/custom",
          "uri": "ask-custom-video-skill-test-default"
        },
        "interfaces": [
          {
            "type": "VIDEO_APP"
          }
        ]
      }
    },
    "manifestVersion": "1.0"
  }
}

下の方にinterfacesの中にVIDEO_APPが呼び出されています。この宣言によってカスタムスキルでビデオ再生を有効化することができます。

動画を再生するAPIを呼び出す

コーディングのところですが、これが一番簡単でした。addVideoAppLaunchDirective(url, title)という関数を呼び出すだけです。この関数を用いたPlayVideoIntentHandlerをこんな感じで実装すれば最低限の動画再生程度を行うことができます。

const PlayVideoIntentHandler: Alexa.RequestHandler = {
  canHandle(handlerInput) {
    return (
      handlerInput.requestEnvelope.request.type === 'IntentRequest' &&
      handlerInput.requestEnvelope.request.intent.name === 'PlayVideoIntent'
    )
  },
  handle(handlerInput) {
    const speakOutput = '動画を再生します。'
    return handlerInput.responseBuilder
      .speak(speakOutput)
      .addVideoAppLaunchDirective('https://example.mp4', 'title')
      .getResponse()
  },
}

ビデオの形式など詳しい情報はこちらに記載されています。

さいごに

全体的なコードはここで公開しています。ただ、このビデオAPIの問題点として、画面がない端末でビデオを再生するAPIを実装すると「ターゲットの端末では、指定されたディレクティブがサポートされていません。」という音声を返します。本格的に開発するのであれば、このへんの対策が必要になりそうです。

4
2
0

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
  3. You can use dark theme
What you can do with signing up
4
2