Alexaスキル内課金サンプルを使って既存のスキルを課金付きスキルにする方法

Alexaスキル内課金サンプルを使って、既存のスキルを課金付きスキルにする方法について考えてみた。

スキル内課金のサンプルには、シンプルハローワールドを利用する。

シンプルハローワールドのハンドラ利用
  • WhatCanIBuyIntentHandler(何が買えるという発話を受ける、発話でBuyEnglishPackIntentHandlerにつなげる)
  • BuyEnglishPackIntentHandler(直接の購入希望・説明希望の発話を受ける(buy))
  • SayEnglishHelloIntentHandler(関連する発話を受ける(upsell))
  • BuyResponseHandler(BuyEnglishPackIntentHandler, SayEnglishHelloIntentHandlerから自動接続される、説明+購入確認する)

以上のハンドラは台詞を変更するだけで、改変することなく利用する。

  • SayHelloHandlerについてはパーツを既存スキルのMainHandlerに組み込む必要がある
MainHandlerにSayHelloHandlerの課金の仕組みを組み込む

const locale =
handlerInput.requestEnvelope.request.locale;
const ms = handlerInput.serviceClientFactory.getMonetizationServiceClient();

  • SayHelloHandlerに対する親returnはms.getInSkillProductにする

return ms.getInSkillProduct(locale, SKILL_PACK_ID)
.then(function (product) {
console.log("PRODUCT=" + JSON.stringify(product));

  • ms.getInSkillProductの内の一番上に購入有無の確認を置く(追加条件を設定することで、無料でプレイ出来る範囲を確保する方法もある)

if (product.entitled === "NOT_ENTITLED" && something) {未購入なら買ってね}

  • その下に購入時に実行したい元スキルのMainHandlerのコード群を挿入する

return handlerInput.responseBuilder
.speak(speechText)
.reprompt(repromptText)
.getResponse();
}); ←ここでms.getInSkillProductが閉じられる

コメントを残す