Alexa課題

  • 課金システム導入
  • スキル英語化
  • Tensorflow.js実装
  • python実装
  • 紹介youtube動画の充実
  • 動作確認・撮影用にechoshow5
  • api接続スキル
  • alexa-hosted スキルにて S3をDBとして使う

Alexa ISP関連コード:getMonetizationServiceClient()

課金に関わるインテント内に記載されるもの。

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

const WhatCanIBuyHandler
return ms.getInSkillProducts(locale).then(function fetchPurchasableProducts(result)

const ProductDetailHandler
return ms.getInSkillProducts(locale).then(function fetchProductDetails(result)

const BuyHandler
return ms.getInSkillProducts(locale).then(function initiatePurchase(result)

const BuyResponseHandle
return ms.getInSkillProducts(locale).then(function handlePurchaseResponse(result)

const CancelSubscriptionHandler
return ms.getInSkillProducts(locale).then(function initiateCancel(result)

const CancelResponseHandler
return ms.getInSkillProducts(locale).then(function handleCancelResponse(result)

alexaisp

Alexa ISP関連コード:購入済み商品リスト

Alexaのスキル内課金(ISP)スキルのコード考察。
inSkillProductリストをフィルタリングして購入済み商品のリスト(entitledProductList)を取得

function getAllEntitledProducts(inSkillProductList) {
  const entitledProductList = inSkillProductList.filter(record => record.entitled === 'ENTITLED');
  return entitledProductList;
}

買い切り型商品リスト(entitleProductsList)から、商品名発話可能リスト(SpeakableList)を返す

function getSpeakableListOfProducts(entitleProductsList) {
  const productNameList = entitleProductsList.map(item => item.name);
  let productListSpeech = productNameList.join(', '); 

cf. filter関数の使い方

var words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
# 条件を満たす要素を抽出する

cf. map関数の使い方

const array = [1,2,3,4,3,6,4,5];
const result = array.map(item => item ===3);
console.log(result);
# 全要素について結果を表示する