1 | 'use strict';
|
2 | const _ = require('lodash');
|
3 |
|
4 |
|
5 |
|
6 |
|
7 | const requestBuilder = (requestType, intent, isNew, attrs, appId) => {
|
8 |
|
9 | const request = {
|
10 | session: {
|
11 | attributes: attrs || {},
|
12 | sessionId: 'SessionId.357a6s7',
|
13 | application: {
|
14 | applicationId: appId || 'amzn1.echo-sdk-123456'
|
15 | },
|
16 | user: {
|
17 | userId: 'amzn1.account.abc123'
|
18 | },
|
19 | new: isNew || false
|
20 | },
|
21 | request: {
|
22 | type: requestType,
|
23 | requestId: 'EdwRequestId.abc123456',
|
24 | timestamp: '2016-06-16T14:38:46Z',
|
25 | intent: intent
|
26 | }
|
27 | };
|
28 |
|
29 | return request;
|
30 | };
|
31 |
|
32 | module.exports = {
|
33 | |
34 |
|
35 |
|
36 |
|
37 |
|
38 | launchRequest: (attrs, appId) => {
|
39 | return requestBuilder('LaunchRequest', null, true, attrs, appId);
|
40 | },
|
41 |
|
42 | |
43 |
|
44 |
|
45 |
|
46 |
|
47 | sessionEndedRequest: (attrs, appId) => {
|
48 | return requestBuilder('SessionEndedRequest', null, false, attrs, appId);
|
49 | },
|
50 |
|
51 | |
52 |
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 | intentRequest: (name, slots, attrs, isNew, appId) => {
|
60 |
|
61 |
|
62 | let transformedSlots = _.transform(slots, (result, key, value) => {
|
63 | result[key] = {
|
64 | name: value,
|
65 | value: key
|
66 | };
|
67 | }, {});
|
68 |
|
69 | return requestBuilder('IntentRequest', {
|
70 | name: name,
|
71 | slots: slots ? transformedSlots : undefined
|
72 | }, isNew, attrs, appId);
|
73 | }
|
74 | };
|