Created
January 9, 2018 12:19
-
-
Save masanobuimai/c460308ff333aef6a6bb38eb8028abe2 to your computer and use it in GitHub Desktop.
どこバス(AWS Lambda)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
var Alexa = require('alexa-sdk'); | |
//========================================================================================================================================= | |
//TODO: このコメント行より下の項目に注目してください。 | |
//========================================================================================================================================= | |
//Replace with your app ID (OPTIONAL). You can find this value at the top of your skill's page on http://developer.amazon.com. | |
//Make sure to enclose your value in quotes, like this: var APP_ID = "amzn1.ask.skill.bb4045e6-b3e8-4133-b650-72923c5980f1"; | |
var APP_ID = undefined; | |
var SKILL_NAME = "どこバス"; | |
var HELP_MESSAGE = "バス情報を知りたい時は「バスどこ」と、終わりたい時は「おしまい」と言ってください。どうしますか?"; | |
var HELP_REPROMPT = "どうしますか?"; | |
var STOP_MESSAGE = "さようなら"; | |
//========================================================================================================================================= | |
//この行から下のコードに変更を加えると、スキルが動作しなくなるかもしれません。わかる人のみ変更を加えてください。 | |
//========================================================================================================================================= | |
exports.handler = function(event, context, callback) { | |
var alexa = Alexa.handler(event, context); | |
alexa.APP_ID = APP_ID; | |
alexa.registerHandlers(handlers); | |
alexa.execute(); | |
}; | |
const handlers = { | |
'LaunchRequest': function () { | |
this.emit('GetNewFactIntent'); | |
}, | |
'GetNewFactIntent': function () { | |
var that = this; | |
var speechOutput = ''; | |
getBusInfo(function(sekins) { | |
if (sekins.length == 0) { | |
speechOutput = 'バス情報は見つかりませんでした。'; | |
} else { | |
//speechOutput += 'バス情報は全部で' + sekins.length + '件あります。'; | |
for (var i = 0; i < sekins.length; i++) { | |
var jikoku = sekins[i].teiryujojikoku; | |
var unko = sekins[i].unkojokyo; | |
if (jikoku == '') { | |
speechOutput += '当面発着予定がないか運行しておりません。'; | |
break; | |
} | |
if (unko == '*') { | |
speechOutput += jikoku + 'のバスは、まだわかりません。'; | |
var remain = sekins.length - i - 1; | |
if (remain > 0) { | |
speechOutput += '残りの' + remain + '件は省略します。'; | |
break; | |
} | |
} else { | |
speechOutput += jikoku + 'のバスは、' + unko + '。'; | |
} | |
} | |
} | |
that.emit(':tellWithCard', speechOutput, SKILL_NAME, speechOutput); | |
}); | |
}, | |
'AMAZON.HelpIntent': function () { | |
var speechOutput = HELP_MESSAGE; | |
var reprompt = HELP_REPROMPT; | |
this.emit(':ask', speechOutput, reprompt); | |
}, | |
'AMAZON.CancelIntent': function () { | |
this.emit(':tell', STOP_MESSAGE); | |
}, | |
'AMAZON.StopIntent': function () { | |
this.emit(':tell', STOP_MESSAGE); | |
} | |
}; | |
function getBusInfo(callback) { | |
const BUSAPI = { | |
host: 'dokobus.info', | |
path: '/search.php?depStr=%E6%98%8E%E7%9F%B3%E5%8D%97%E4%BA%8C%E4%B8%81%E7%9B%AE&arrStr=%E6%B3%89%E4%B8%AD%E5%A4%AE%E9%A7%85&depKey=668&arrKey=224&_=1514763441462', | |
medhot: 'GET' | |
}; | |
var req = require('http').request(BUSAPI, function(res) { | |
res.setEncoding('utf8'); | |
var data = ''; | |
res.on('data', function(chunk) { data += chunk; }); | |
res.on('end', function() { | |
var json = JSON.parse(data); | |
callback(json['sekins']); | |
}); | |
}).on('error', function(e) { callback([]); }).end(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment