Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Alexa-SDK-V2基礎講座@大阪

46e8de7d6e95be6327e8c49bf3b0c028?s=47 chao2suke
October 19, 2018

 Alexa-SDK-V2基礎講座@大阪

2018/10/17 Alexa Salon vol.3@大阪 登壇資料

46e8de7d6e95be6327e8c49bf3b0c028?s=128

chao2suke

October 19, 2018
Tweet

Transcript

  1. Alexa-SDK V2 基礎講座 Alexa-SDK V2 Training course 1 Classmethod, Inc.

    せーの
  2. #AlexaSalon 2

  3. !3 ( ) A I A l e x a

    & V U I / O /
  4. ί ϛ ϡ χ ς Ο [ A l e

    x a S a l o n ] ओ ࠵ A m a z o n ެ ࣜ ϋ ϯ ζ Φ ϯ τ Ϩ ʔ χ ϯ ά ς Ϋ χ Χ ϧ α ϙ ʔ τ A m a z o n ެ ࣜ τ Ϩ ʔ χ ϯ άϖ ʔ δ ੍ ࡞ A l e x a S k i l l A w a r d s ެ ࣜ ϋ ο Χ ι ϯ : ς Ϋ χ Χ ϧ α ϙ ʔ τ ܾ উ ৹ ࠪ һ ॳ ৺ ऀ ޲ ͚ A l e x a ຊ ࣥ ච !4
  5. Agenda • コードブロック概要 • Skill Builderについて • インストール⽅法 • Handlerについて

    • Response Builderについて • Attribute Managerについて 5
  6. コードブロック概要 6

  7. Hello World 7 const MyHandler = { canHandle(handlerInput) { return

    true; }, handle(handlerInput) { return handlerInput.responseBuilder .speak('͜Μʹͪ͸') .getResponse(); } };
  8. 8

  9. 9

  10. 10

  11. Skill Builder 11

  12. 12 Skill Builderとは Skillインスタンスを作るもの

  13. 13 Skill Builder Standard Custom

  14. 14 Skill Builder Standard Custom 全部⼊り 欲しいところだけ

  15. 15 Skill Builder(Custom) Core 基本機能だけ動けばいい Model

  16. 16 Skill Builder(Custom) Core DB使いたい Model Persistant Adapter

  17. 17 Skill Builder(Custom) Core DBとAPI使いたい Model Persistant Adapter APIClient

  18. 18 Skill Builder(Custom) Customコンポーネント Core 基本機能 Model 定義情報 Dynamodb-persistance-adapter DynamoDBによる永続化

    S3-peresistance-adapter S3による永続化 Api-client AlexaサービスAPIの使⽤
  19. インストール 19

  20. インストール 20 $ npm install --save ask-sdk

  21. インストール(Coreのみ) 21 $ npm install --save ask-sdk-model $ npm install

    --save ask-sdk-core
  22. Customビルダーでの宣⾔ 22 ライブラリのインストール コード冒頭でrequired Skill Builderにメソッド追加

  23. Ex.CustomでDynamoDBを使う 23 ライブラリのインストール $ npm install --save ask-sdk-dynamodb- persistence-adapter $

    npm install --save ask-sdk-model $ npm install --save ask-sdk-core
  24. Ex.CustomでDynamoDBを使う 24 'use strict'; const aws = require('aws-sdk-core'); const Adapter

    = require('ask-sdk-dynamodb- persistence-adapter'); コード冒頭でrequired
  25. Ex.CustomでDynamoDBを使う 25 const config = {tableName: 'alexa-salon-vol3', createTable: true}; const

    DynamoDBAdapter = new Adapter.DynamoDbPersistenceAdapter(config); Skill Builderにメソッド追加
  26. Ex.CustomでDynamoDBを使う 26 const skillBuilder = Alexa.SkillBuilders.custom(); exports.handler = skillBuilder .addRequestHandlers(

    LaunchRequestHandler, ) .withPersistenceAdapter(DynamoDBAdapter) .addErrorHandlers(ErrorHandler) .lambda(); Skill Builderにメソッド追加
  27. Handler 27

  28. 28 Handler CanHandle Handle

  29. canHandle 29 このHandlerはどのIntentを処理するか True / False

  30. canHandle • このハンドラーはどのIntentを処理するか 30 canHandle(handlerInput) { return handlerInput.requestEnvelope.request.type === 'IntentRequest'

    && handlerInput.requestEnvelope.request.intent.name === 'MenuIntent'; },
  31. 31 CanHandle Tips Handlerは登録した順番でCanHandleする exports.handler = skillBuilder .addRequestHandlers( LaunchRequestHandler, OrderProgressIntentHandler,

    OrderCompletedIntentHandler, HelpIntentHandler, CancelAndStopIntentHandler, SessionEndedRequestHandler )
  32. handle • 実際の処理内容 32 handle(handlerInput) { return setMenu(handlerInput, null); }

  33. 33 Handler Tips Handler-A: 郵便番号がSlotに⼊っている Handler-B: 住所がSlotに⼊っている Handler-C: 何も⼊っていない 近くの店舗をお知らせする

    郵便番号を調べて確認する 郵便番号を聞く
  34. Slotのとり⽅ 34 handlerInput.requestEnvelope.request.intent.slots.hand.value

  35. 35 Slot Tips requestまでは⼀緒なので変数化する handlerInput.requestEnvelope.request.intent.slots.hand.value var request = handlerInput.requestEnvelope.request; var

    slot = request.intent.slots.hand.value;
  36. Response 36

  37. 37 Response Builder Tips ResponseBuilderはチェーンで書く return handlerInput.responseBuilder .speak('͢Έ·ͤΜɺΑ͘ฉ͖औΕ·ͤΜͰͨ͠ɻ΋͏Ұ౓ݴͬͯ ΋Β͑·͔͢?') .reprompt('΋͏Ұ౓ݴͬͯ΋Β͑·͔͢?')

    .getResponse();
  38. Response Builder 38 ଟ͗͢Δ

  39. カテゴリに分けてみる。 39

  40. Response Builder 40

  41. Response Builder 41 発話系 speak/response カード系 withXXXcard Dialog Model系 delegate/ElicitXXX/addConfirmXXX

    AudioPlayer系 addAudioPlayerXXX Display系 addRenderTemplateDirective Video系 addVideoAppLaunchDirective セッション管理系 withShouldEndSession
  42. Ex.BodyTemplate 42 handlerInput.responseBuilder .speak(speechText) .reprompt(speechText) .addRenderTemplateDirective({ type: 'ListTemplate1', backButton: 'HIDDEN',

    backgroundImage: logoImage, listItems: listitems, title: 'ϝχϡʔ', token : gToken, }) .getResponse();
  43. 43 Response Builder Tips ResponseBuilderはバラバラに書いて良い

  44. 44 Response Builder Tips handlerInput.responseBuilder .speak(‘͜Ε͚ͩͩͱ࿩͚ͩ͢’); if (canReprompt) { .reprompt(‘͜Ε͕ೖΔͱ໰͍͔͚ʹͳΔ’);

    } handlerInput.responseBuilder.getResponse();
  45. Response Builder Tips • じゃんけんであいこの時だけ
 もう⼀度聞き直す • ディスプレイのついているデバイスからの リクエストのみDisplayRenderをつける 45

  46. Attribute Manager 46

  47. 47 Alexa-SDK V2Ͱͷηογϣϯ؅ཧ AttributeManager RequestAttributes SessionAttributes PersistentAttributes

  48. ࢖͍ํ let attributes = await handlerInput.attributesManager.getPersistentAttributes() handlerInput.attributesManager.setPersistentAttributes(a ttributes); await handlerInput.attributesManager.savePersistentAttributes(

    );
  49. ࢖͍ํ

  50. ࢖͍ํ

  51. None