Slide 1

Slide 1 text

5FTUJOH"MFYB4LJMM +"846(,0#&"MFYBNFFUVQ

Slide 2

Slide 2 text

H i d e t a k a O k a m o t o • Digitalcube Co. Ltd. • JAWS-UG Kyoto, Kobe • WordCamp Kyoto 2017

Slide 3

Slide 3 text

"MFYB4LJMM͍Ζ͍Ζ࡞ͬͯ·͢ʢ೔ӳʣ IUUQTEFWFMPQFSBNB[PODPNFEXIPNFIUNMTLJMMT

Slide 4

Slide 4 text

5FTU"VUPNBUJPOGPS"MFYB4LJMMT IUUQTXXXTMJEFTIBSFOFU"NB[PO8FC4FSWJDFTBMYUFTUBVUPNBUJPOGPSBMFYBTLJMMT

Slide 5

Slide 5 text

w ͳͥςετΛ΍Δ΂͖ͳͷ͔ w "MFYB4LJMMͰͷςετͷछྨ w "84-BNCEBº/PEFKTͰͷϢχοτςετ w ӡ༻؂ࢹͱͯ͠ͷςετ "HFOEB

Slide 6

Slide 6 text

w ͳͥςετΛ΍Δ΂͖ͳͷ͔ w "MFYB4LJMMͰͷςετͷछྨ w "84-BNCEBº/PEFKTͰͷϢχοτςετ w ӡ༻؂ࢹͱͯ͠ͷςετ "HFOEB

Slide 7

Slide 7 text

ެ։ͨ͠"MFYB4LJMM͸"NB[POʹܝࡌ͞ΕΔ IUUQTXXXBNB[PODPNTSFGOC@TC@OPTT VSMTFBSDIBMJBT%BMFYBTLJMMT

Slide 8

Slide 8 text

ಈ͔ͳ͍εΩϧ͸੕̍ͭʹͳΔ

Slide 9

Slide 9 text

ͪΌΜͱಈ͘͜ͱΛ อূ͍ͨ͠

Slide 10

Slide 10 text

w ͳͥςετΛ΍Δ΂͖ͳͷ͔ w "MFYB4LJMMͰͷςετͷछྨ w "84-BNCEBº/PEFKTͰͷϢχοτςετ w ӡ༻؂ࢹͱͯ͠ͷςετ "HFOEB

Slide 11

Slide 11 text

"MFYBEBUBqPX E c h o D e v i c e A u t o m a t i c S p e e c h R e c o g n i t i o n R e q u e s t h a n d l e r s AW S L a m b d a N a t u r a l L a n g u a g e U n d e r s t a n d i n g

Slide 12

Slide 12 text

&DIPTJNJP IUUQTFDIPTJNJP

Slide 13

Slide 13 text

"MFYBEBUBqPX E c h o D e v i c e A u t o m a t i c S p e e c h R e c o g n i t i o n R e q u e s t h a n d l e r s AW S L a m b d a N a t u r a l L a n g u a g e U n d e r s t a n d i n g E c h o S i m . i o AV S A P I

Slide 14

Slide 14 text

"4,$-* IUUQTEFWFMPQFSBNB[PODPNKBEPDTTNBQJBTLDMJDPNNBOESFGFSFODFIUNM

Slide 15

Slide 15 text

"MFYBEBUBqPX E c h o D e v i c e A u t o m a t i c S p e e c h R e c o g n i t i o n R e q u e s t h a n d l e r s AW S L a m b d a N a t u r a l L a n g u a g e U n d e r s t a n d i n g E c h o S i m . i o A S K C L I AV S A P I A S K S M A P I S k i l l S i m u l a t i o n A P I S k i l l I n v o c a t i o n A P I

Slide 16

Slide 16 text

4FSWJDF4JNVMBUPS IUUQTEFWFMPQFSBNB[PODPNFEXIPNFIUNM

Slide 17

Slide 17 text

5FTUJOH4JNVMBUPS CFUB IUUQTEFWFMPQFSBNB[PODPNFEXIPNFIUNM

Slide 18

Slide 18 text

"MFYBEBUBqPX E c h o D e v i c e A u t o m a t i c S p e e c h R e c o g n i t i o n R e q u e s t h a n d l e r s AW S L a m b d a N a t u r a l L a n g u a g e U n d e r s t a n d i n g E c h o S i m . i o A S K C L I S e r v i c e S i m u l a t o r AV S A P I A S K S M A P I S k i l l S i m u l a t i o n A P I S k i l l I n v o c a t i o n A P I

Slide 19

Slide 19 text

6OJUUFTUUPPMT NPDIBKFTUFUDʜ IUUQTNPDIBKTPSH

Slide 20

Slide 20 text

"MFYBEBUBqPX E c h o D e v i c e A u t o m a t i c S p e e c h R e c o g n i t i o n R e q u e s t h a n d l e r s AW S L a m b d a N a t u r a l L a n g u a g e U n d e r s t a n d i n g E c h o S i m . i o A S K C L I S e r v i c e S i m u l a t o r U n i t t e s t t o o l s AV S A P I A S K S M A P I S k i l l S i m u l a t i o n A P I S k i l l I n v o c a t i o n A P I U n i t t e s t S D K

Slide 21

Slide 21 text

ςετ͍ͨ͠ ϨΠϠʹԠͨ͡ πʔϧͷႩఆΛ

Slide 22

Slide 22 text

w ͳͥςετΛ΍Δ΂͖ͳͷ͔ w "MFYB4LJMMͰͷςετͷछྨ w "84-BNCEBº/PEFKTͰͷϢχοτςετ w ӡ༻؂ࢹͱͯ͠ͷςετ "HFOEB

Slide 23

Slide 23 text

"MFYBDPOWFSTBUJPO OQNJOTUBMMTBWFEFWBMFYBDPOWFSTBUJPO

Slide 24

Slide 24 text

"MFYBDPOWFSTBUJPOͷUFTUqPX E c h o D e v i c e A u t o m a t i c S p e e c h R e c o g n i t i o n R e q u e s t h a n d l e r s AW S L a m b d a N a t u r a l L a n g u a g e U n d e r s t a n d i n g E c h o S i m . i o A S K C L I S e r v i c e S i m u l a t o r U n i t t e s t t o o l s AV S A P I A S K S M A P I S k i l l S i m u l a t i o n A P I S k i l l I n v o c a t i o n A P I U n i t t e s t S D K

Slide 25

Slide 25 text

ϓϩδΣΫτͷηοτΞοϓ $ npm init -y $ npm install —save alexa-sdk $ npm install --save-dev alexa-conversation mocha

Slide 26

Slide 26 text

IBOEMFSΛ࣮ߦ͢Δ४උ IUUQTXQLZPUPOFUUFTUCZBMFYBDPOWFSTBUJPO // ϥΠϒϥϦͷಡΈࠐΈ const conversation = require('alexa-conversation') // ςετର৅ͷϑΝΠϧͷಡΈࠐΈ const app = require('../index.js') const opts = { name: 'Alexa Sample App', // ςετ໊ʢʣ appId: 'your-app-id', // ΞϓϦIDʢμϛʔͰOK)ʣ app: app, // ςετର৅ handler: app.handler // ࣮ߦ͢ΔϓϩύςΟ }

Slide 27

Slide 27 text

*OUFOUͱ4MPUͰςετΛॻ͍͍ͯ͘ IUUQTXQLZPUPOFUUFTUCZBMFYBDPOWFSTBUJPO conversation(opts) .userSays('LaunchRequest') .plainResponse .shouldContain('αϯϓϧεΩϧ΁Α͏ͦ͜ɻ') .userSays('SampleIntent', {slotOne: 'slotValue'}) .plainResponse .shouldContain(slotOne͸slotValueͰͨ͠ɻ') .userSays('AMAZON.StopIntent') .plainResponse .shouldContain('·ͨͷ͝ར༻Λ͓଴ͪͯ͠·͢ɻ') .end()

Slide 28

Slide 28 text

44.-΍BUUSJCVUFT΋ςετ͢Δྫ IUUQTXQLZPUPOFUUFTUBMFYBTELBQQCZNPDIBBOEQPXFSBTTFSU

Slide 29

Slide 29 text

*OUFOUͱ4MPUͰςετΛॻ͍͍ͯ͘ IUUQTXQLZPUPOFUUFTUCZBMFYBDPOWFSTBUJPO conversation(opts) .userSays('LaunchRequest') .plainResponse .shouldContain('αϯϓϧεΩϧ΁Α͏ͦ͜ɻ') .userSays('SampleIntent', {slotOne: 'slotValue'}) .plainResponse .shouldContain(slotOne͸slotValueͰͨ͠ɻ') .userSays('AMAZON.StopIntent') .plainResponse .shouldContain('·ͨͷ͝ར༻Λ͓଴ͪͯ͠·͢ɻ') .end()

Slide 30

Slide 30 text

$*αʔϏεͱ૊Έ߹Θͤͨࣗಈςετ IUUQTXQLZPUPOFUDJCZUSBWJTUPUFTUBMFYBDVTUPNTLJMM

Slide 31

Slide 31 text

ίʔσΟϯά࣌΍ σϓϩΠ࣌ʹόάΛ ະવʹ๷͙

Slide 32

Slide 32 text

࣮࣭"84-BNCEBͷςετͳͷͰɾɾɾ IUUQTTQFBLFSEFDLDPNUXBEBUFTUBCMFMBNCEBXPSLJOHF⒎FDUJWFMZXJUIMFHBDZMBNCEB

Slide 33

Slide 33 text

w ͳͥςετΛ΍Δ΂͖ͳͷ͔ w "MFYB4LJMMͰͷςετͷछྨ w "84-BNCEBº/PEFKTͰͷϢχοτςετ w ӡ༻؂ࢹͱͯ͠ͷςετ "HFOEB

Slide 34

Slide 34 text

-BNCEB$MPVE8BUDIЋͰӡ༻؂ࢹ IUUQTXXXTMJEFTIBSFOFU"NB[PO8FC4FSWJDFTBMYUFTUBVUPNBUJPOGPSBMFYBTLJMMT

Slide 35

Slide 35 text

4LJMMͷϦΫΤετΛ࠶ݱͯ͠ςετ͢Δ IUUQTXXXTMJEFTIBSFOFU"NB[PO8FC4FSWJDFTBMYUFTUBVUPNBUJPOGPSBMFYBTLJMMT

Slide 36

Slide 36 text

"MFYB4LJMMT,JU5FTUJOH'8 +BWB IUUQTHJUIVCDPN,BZ-FSDIBMFYBTLJMMTLJUUFTUFSKBWB

Slide 37

Slide 37 text

ςετ͸:".-ϑΝΠϧΛ4ʹઃஔ͢Δܗ IUUQTHJUIVCDPNBMFYBTLJMMTBNQMFOPEFKTUFTUBVUPNBUJPOCMPC NBTUFSTDSJQUTMBCZNM configuration: endpoint: type: InvocationApi region: NA locale: en-US GuessFive: &GuessFive - intent: GuessNumber - number: 5 - response.shouldEndSession == false - response.outputSpeech.ssml =~ /.*My number is higher.*/i : <> Launch: - response.shouldEndSession == false - *GuessFive

Slide 38

Slide 38 text

$MPVE'PSNBUJPOͰؙ͝ͱىಈՄೳ IUUQTHJUIVCDPNBMFYBTLJMMTBNQMFOPEFKTUFTUBVUPNBUJPOCMPCNBTUFSMBCTMBCNE

Slide 39

Slide 39 text

w "MFYB4LJMM΋ͪΌΜͱςετ͠Α͏ w ςετ͍ͨ͠ൣғʹԠͨ͡πʔϧબఆΛ w $*Ͱͷ༧๷ࡦͱ$8&4/4Ͱͷӡ༻؂ࢹ w ςετۦಈͳΒ͍͍ͪͪ&DIPʹ࿩͔͚͠ͳͯ͘΋εΩϧ࡞ΕΔΑ ·ͱΊ

Slide 40

Slide 40 text

΋ͬͱ"MFYBͷ࿩Λฉ͖͍ͨํ͸ IUUQTBMFYBEBZKBXTVHKQ

Slide 41

Slide 41 text

w 8PSLTIPQαϯϓϧɾυΩϡϝϯτҰࣜ ɹIUUQTHJUIVCDPNBMFYBTLJMMTBNQMFOPEFKTUFTUBVUPNBUJPO w ηογϣϯεϥΠυ ɹIUUQTXXXTMJEFTIBSFOFU"NB[PO8FC4FSWJDFTBMYUFTUBVUPNBUJPOGPSBMFYBTLJMMT w "MFYB4LJMMT,JUެࣜυΩϡϝϯτ ɹIUUQTEFWFMPQFSBNB[PODPNKBBMFYBTLJMMTLJU w Ұਓ"MFYB4LJMMT,JUGPS/PEFKT"EWFOU$BMFOEBS ɹIUUQTRJJUBDPNBEWFOUDBMFOEBSBMFYBTLJMMTLJUGPSOPEFKT ࢀߟࢿྉͳͲ