-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
84 lines (69 loc) · 2.67 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
const Directive = require('./directive');
const Response = require('./response');
module.exports = class Nugu {
constructor(req) {
this.authorization = req.headers.authorization.split(' ')[1];
this.version = req.body.version;
this.actionName = req.body.action.actionName;
this.parameters = req.body.action.parameters;
this.event = req.body.event;
this.context = req.body.context;
this.accessToken = req.body.context.session.accessToken;
this.sessionId = req.body.context.session.id;
this.isNew = req.body.context.session.isNew;
this.isPlayBuilderRequest = req.body.context.session.isPlayBuilderRequest;
this.deviceType = req.body.context.device.type;
this.deviceState = req.body.context.device.state;
this.response = new Response(this.version);
if (Object.keys(req.body.context.supportedInterfaces).length !== 0) {
this.audioPlayer = req.body.context.supportedInterfaces.AudioPlayer;
if(this.audioPlayer){
this.audioPlayerActivity = this.audioPlayer.playerActivity;
this.audioToken = this.audioPlayer.token;
this.audioOffset = this.audioPlayer.offsetInMilliseconds;
}
}
}
set output(output) {
this.response.output = output;
}
set resultCode(resultCode) {
this.response.resultCode = resultCode;
}
set directiveType(type) {
this.response.directives[0].type = type;
}
set directiveUrl(url) {
this.response.directives[0].audioItem.stream.url = url;
}
set directiveOffset(offset) {
this.response.directives[0].audioItem.stream.offsetInMilliseconds = offset;
}
set directiveDelay(delay) {
this.response.directives[0].audioItem.stream.progressReport.progressReportDelayInMilliseconds = delay;
}
set directiveInterval(interval) {
this.response.directives[0].audioItem.stream.progressReport.progressReportIntervalInMilliseconds = interval;
}
set directiveToken(token) {
this.response.directives[0].audioItem.stream.token = token;
}
set directivePreviousToken(previousToken) {
this.response.directives[0].audioItem.stream.expectedPreviousToken = previousToken;
}
addDirective(){
this.response.addDirective(new Directive());
}
getValue(value) {
if (this.parameters[value] === undefined) {
return undefined
}
return this.parameters[value].value;
}
getValueType(value) {
if (this.parameters[value] === undefined) {
return undefined
}
return this.parameters[value].type;
}
}