Amazon AlexaAWS

alexa-sdkでslotの値を取り扱う

この記事は一人Alexa Skills Kit for Node.js Advent Calendar 2017の15日目の記事です。 Alexa Skillでは、ユーザー発話の変数部分をSlotという形で処理します。 […]

広告ここから
広告ここまで

この記事は一人Alexa Skills Kit for Node.js Advent Calendar 2017の15日目の記事です。

Alexa Skillでは、ユーザー発話の変数部分をSlotという形で処理します。

Alexa SkillからトリガーされたLambdaやAPIでは、以下のような形でSlotが送られてきます。

exports.event = {
  'session': {},
  'version': '1.0',
  'request': {
    'intent': {
      'slots': {
        '{SLOT_NAME}': {
          'name': '{SLOT_NAME}',
          'value': '{SLOT_VALUE}'
        }
      }
    },
  }
...

alexa-sdkを使っている場合は、this.event.request.intent.slots[{SLOT_NAME}].value{SLOT_VALUE}にアクセスできます。

Slotはthis.event.request.intent.slotsの下にオブジェクトとして登録されていく仕様です。

slots: {
  slot1: {
    name: 'slot1',
    value: ''
  },
  slot2: {
    name: 'slot2',
    value: ''
  }
}

ですので、以下のようなヘルパー関数を作っておくと便利です。

function getSlots (event) {
  const { request } = event
  if (!request) return {}
  const { intent } = request
  if (!intent) return {}
  const { slots } = intent
  return slots
}

function getSlotByName(event, name) {
  const slots = getSlots(event)
  if (!slots[name]) return {}
  return slots[name]
}

ブックマークや限定記事(予定)など

WP Kyotoサポーター募集中

WordPressやフロントエンドアプリのホスティング、Algolia・AWSなどのサービス利用料を支援する「WP Kyotoサポーター」を募集しています。
月額または年額の有料プランを契約すると、ブックマーク機能などのサポーター限定機能がご利用いただけます。

14日間のトライアルも用意しておりますので、「このサイトよく見るな」という方はぜひご検討ください。

広告ここから
広告ここまで

Related Category posts