@@ -23,16 +23,14 @@ const { actionssdk, SimpleResponse } = require('actions-on-google');
23
23
const functions = require ( 'firebase-functions' ) ;
24
24
const shiritori = require ( './shiritori' ) ;
25
25
const admin = require ( 'firebase-admin' ) ;
26
- admin . initializeApp ( functions . config ( ) . firebase ) ;
26
+ admin . initializeApp ( ) ;
27
27
28
28
const corpus = 'noun' ;
29
29
30
- const dict = k => {
31
- return admin . database ( )
32
- . ref ( corpus ) . child ( k )
33
- . once ( 'value' )
34
- . then ( snap => snap . val ( ) ) ;
35
- } ;
30
+ const dict = k => admin . database ( )
31
+ . ref ( corpus ) . child ( k )
32
+ . once ( 'value' )
33
+ . then ( snap => snap . val ( ) ) ;
36
34
37
35
const app = actionssdk ( {
38
36
// リクエストとレスポンスをロギングする。
@@ -45,35 +43,31 @@ const app = actionssdk({
45
43
} )
46
44
} ) ;
47
45
48
- app . intent ( 'actions.intent.MAIN' , ( conv ) => {
46
+ app . intent ( 'actions.intent.MAIN' , conv => {
49
47
conv . ask ( 'どうぞ、始めて下さい' ) ;
50
48
} ) ;
51
49
52
- app . intent ( 'actions.intent.TEXT' , ( conv , input ) => {
53
- return shiritori . loaded . then ( ( ) => {
54
- return shiritori . interact ( dict , input , conv . data . used )
55
- . then ( result => {
56
- conv . data . used . unshift ( input ) ;
57
- conv . data . used . unshift ( result . word ) ;
58
- conv . ask ( new SimpleResponse ( {
59
- speech : result . word ,
60
- text : `${ result . word } [${ result . kana } ]`
61
- } ) ) ;
62
- } )
63
- . catch ( result => {
64
- if ( result . win ) {
65
- if ( result . word ) {
66
- conv . close ( `${ result . word } [${ result . kana } ]` ) ;
67
- } else {
68
- conv . close ( 'すごい!あなたの勝ちです。' ) ;
69
- }
70
- } else if ( result . loose ) {
71
- conv . close ( 'ざんねん。あなたの負けです。' ) ;
72
- } else {
73
- throw result ;
74
- }
75
- } ) ;
76
- } ) ;
50
+ app . intent ( 'actions.intent.TEXT' , async ( conv , input ) => {
51
+ const result = await shiritori . interact ( dict , input , conv . data . used ) ;
52
+ switch ( result . state ) {
53
+ case shiritori . state . CONTINUE :
54
+ conv . data . used . unshift ( input ) ;
55
+ conv . data . used . unshift ( result . word ) ;
56
+ conv . ask ( new SimpleResponse ( {
57
+ speech : result . word ,
58
+ text : `${ result . word } [${ result . kana } ]`
59
+ } ) ) ;
60
+ break ;
61
+ case shiritori . state . LOSE_N :
62
+ case shiritori . state . LOSE_USED :
63
+ case shiritori . state . LOSE_CHAIN :
64
+ conv . close ( 'ざんねん。あなたの負けです。' ) ;
65
+ break ;
66
+ case shiritori . state . WIN_N :
67
+ case shiritori . state . WIN_USED :
68
+ conv . close ( 'すごい!あなたの勝ちです。' ) ;
69
+ break ;
70
+ }
77
71
} ) ;
78
72
79
73
exports . shiritoriV3 = functions . https . onRequest ( app ) ;
0 commit comments