-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.js
108 lines (98 loc) · 5.41 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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const alexaSDK = require('alexa-sdk');
const awsSDK = require('aws-sdk');
const fetch = require('fetch');
const appId = '##################################################';
const instructions = 'Benvenuto. Per conoscere gli orari dell\'autobus che vuoi prendere, dimmi il numero della fermata e la linea che cerchi. Oppure dimmi: "aiuto" per altre informazioni.';
const aiutami ='Questa è la skill non ufficiale della <say-as interpret-as="characters">GTT</say-as>. Ti permette di conoscere quando passerà l\'autobus che vuoi prendere dalla fermata da cui vuoi salire. Per esempio puoi chiedermi: "quando passa il 56 dalla fermata numero <say-as interpret-as="digits">3279</say-as>?". Oppure per fare prima mi puoi svegliare dicendo: "Alexa, chiedi a <say-as interpret-as="characters">GTT</say-as> quando passa il 56 da <say-as interpret-as="digits">3279</say-as>." Se vuoi uscire basta che mi dici: "annulla".';
const handlers = {
'LaunchRequest'() {
this.emit(':ask', instructions);
},
'Unhandled'() {
console.error('problem', this.event);
this.emit(':tell', 'Si è verficato un errore!');
},
'AMAZON.HelpIntent'() {
this.emit(':ask', aiutami);
},
'FermataIntent'() {
const { slots } = this.event.request.intent;
var x = this;
if (!slots.numero.value || slots.numero.value < 3) {
const slotToElicit = 'numero';
const speechOutput = 'Dimmi il numero della fermata.';
return this.emit(':elicitSlot', slotToElicit, speechOutput);
} else{
var palina = slots.numero.value;
if (palina > 3600)
this.emit(':tell', 'La fermata che mi hai chiesto non esiste!');
else {
if (!slots.linea.value) {
const slotToElicit = 'linea';
const speechOutput = 'Quale linea cerchi?';
return this.emit(':elicitSlot', slotToElicit, speechOutput);
} else
{
const linean = slots.linea.value;
lettura = new String('il ' + linean);
orari = new Array();
fetch.fetchUrl("https://gpa.madbob.org/query.php?stop=" + palina, leggiapi);
function leggiapi(error, meta, body){
var risp = JSON.parse(body.toString());
var i = 2, j = 0;
while (i != 0 && risp[j] != undefined){
if (risp[j].line == linean){
i--;
orari.push(j);
}
j++;
}
if (i == 2) lettura += ' non passa da questa fermata';
else if (i == 1) {
if ( risp[orari[0]].hour.indexOf(":")== -1)
lettura += ' passerà domani';
else{
if (risp[orari[0]].realtime == 'true')
lettura += ' passerà alle<break strength="weak"/> ' + risp[orari[0]].hour;
else
lettura += ' è programmato alle<break strength="weak"/> ' + risp[orari[0]].hour;
}
}
else {
if ( risp[orari[0]].hour.indexOf(":")== -1)
lettura += ' passerà: domani';
else{
if (risp[orari[0]].realtime == 'true'){
lettura += ' passerà alle<break strength="weak"/> ' + risp[orari[0]].hour;
if (risp[orari[1]].realtime == 'true')
lettura += '<break strength="weak"/> e alle<break strength="weak"/> ' + risp[orari[1]].hour;
else
lettura += '<break strength="weak"/> ed è programmato alle<break strength="weak"/> ' + risp[orari[1]].hour;
}
else
{
lettura += ' è programmato alle<break strength="weak"/> ' + risp[orari[0]].hour;
if (risp[orari[1]].realtime == 'true')
lettura += '<break strength="weak"/> e passerà alle<break strength="weak"/> ' + risp[orari[1]].hour;
else
lettura += '<break strength="weak"/> e alle<break strength="weak"/> ' + risp[orari[1]].hour;
}
}
}
lettura += '.';
x.emit(':tell', lettura);
}
}
}
}
},
'AMAZON.StopIntent'() {
this.emit(':tell', '<say-as interpret-as="interjection">buon viaggio</say-as><break strength="weak"/><audio src=\'soundbank://soundlibrary/transportation/amzn_sfx_bus_drive_past_01\'/>');
}
};
exports.handler = function handler(event, context) {
const alexa = alexaSDK.handler(event, context);
alexa.APP_ID = appId;
alexa.registerHandlers(handlers);
alexa.execute();
};