UNPKG

2.03 kBJavaScriptView Raw
1'use strict';
2const _ = require('lodash');
3
4/**
5 * Creates simple Alexa request
6 */
7const 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
32module.exports = {
33 /**
34 * Creates LaunchRequest
35 * @param {Object} attrs - Session attributes
36 * @param {String} [appId] - Application id
37 */
38 launchRequest: (attrs, appId) => {
39 return requestBuilder('LaunchRequest', null, true, attrs, appId);
40 },
41
42 /**
43 * Creates SessionEndedRequest
44 * @param {Object} attrs - Session attributes
45 * @param {String} [appId] - Application id
46 */
47 sessionEndedRequest: (attrs, appId) => {
48 return requestBuilder('SessionEndedRequest', null, false, attrs, appId);
49 },
50
51 /**
52 * Creates IntentRequest
53 * @param {String} name - Name of the intent to be invoked
54 * @param {Object} [slots] - Slots in simplified key:value schema. Defaults to {}
55 * @param {Object} [attrs] - Session attributes. Defaults to {}
56 * @param {boolean} [isNew] - Whether session is new. Defaults to false
57 * @param {String} [appId] - Application id
58 */
59 intentRequest: (name, slots, attrs, isNew, appId) => {
60
61 // Transform slots from minimal schema into slot schema sent by Amazon
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};