pmyers88 / dc-metro-echo Goto Github PK
View Code? Open in Web Editor NEWEcho app to tell a user when the next train is arriving at a given metro station.
License: MIT License
Echo app to tell a user when the next train is arriving at a given metro station.
License: MIT License
Whenever I attempt to call the GetStationDestination
intent, Alexa performs calls the GetServiceAdvisories
intent instead. I think this may be because our sample utterances for GetStationDestination
and GetServiceAdvisories
are both one word.
We should be able to use custom slots to replicate the enumeration of words we currently accept for advisory intents. Hopefully this would prevent confusion.
From the certification feedback:
When invoking the "GetStation" intent with no value provided for the "station" slot, the skill responds “There was a problem with the requested skill's response” and “Requested Identifier” is displayed in the home card. Please see [test case 4.11](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-voice-interface-and-user-experience-testing?ref_=pe_679090_102923190#4.11. Error Handling) from our Submission Checklist for guidance on error handling.
We are missing documentation for:
@pmyers88 what is needed in order to make this available publicly?
Currently, npm test points to a non-existent file, so Travis CI always fails.
We should decide what kind of testing we want to do with Travism and then make it green.
Now that we're using npm scripts for some of the testing stuff, I think it could be good to switch to npm for consistency and as a learning experience.
Here's a reference on using npm scripts.
"ask metro transit when the next train is leaving ballston" causes a GetStation intent with undefined station slot
Comment to document corrections that should be made.
Lambda now supports Node 4.3. We should specify engines
in package.json
and ensure we're developing against Node 4.3.
In addition to the number of minutes until the next train, the WMATA api also returns abbreviations for "boarding now" and "arriving". Determine what these abbreviations are and replace them with the whole word.
While looking for environment variable support, I found that AWS Lambda supports Node v0.10.36. We should verify that node 4 is supported as well or write tests and run CI using node v0.10.36.
Since no travis file is found, it is defaulting to something that is not meant for this project. This causes it to fail. Maybe we should add back in a basic Node Travis file, since that seemed to npm install, fail to find test cases and label the PR as a pass.
This is how the Amazon samples do it. See here. Makes the code more modular, seems like a best practice.
From the certification feedback:
The help prompt must end with a question for users and leave the stream open to receive a response or guide users on how to explore the skill’s functionality after the help prompt. Please see [test case 4.12](https://developer.amazon.com/public/solutions/alexa/alexa-skills-kit/docs/alexa-skills-kit-voice-interface-and-user-experience-testing?ref_=pe_679090_102923190#4.12. Intent %28Help%29) from our Submission Checklist for guidance on the help intent.
Replace all occurrences of "Metro Transit" with "Capital Transit".
View logs to see which utterances are getting misinterpreted. This will be an ongoing ticket.
Top level directory is too crowded
I think everyone has a name for their stop that is not what the API returns. We should take a look at what people call their stops and then implement matchers, so we not only match speech correctly to the stop but also announce the stop in a more casual way.
For instance, "Wiehle Reston East" could be asked for as "Reston" or "Wiehle." We want to understand both, but also, we probably want to just announce it as "Reston" when the echo says it.
When it's close to closing, there may only be 1 train arriving at the requested station. This is how the current voice interface works:
When is the next train arriving at Ballston?
Are you going to Vienna?
Yes.
Sorry, there was a problem with the requested skills response.
Maybe switch to:
When is the next train arriving at Ballston?
The next train from Ballston to Vienna arrives in 8 minutes. There are no other trains arriving at Ballston in the next 20 minutes.
The exception is thrown for any GetStation
request. Full info:
{
"errorMessage": "Cannot call method 'call' of undefined",
"errorType": "TypeError",
"stackTrace": [
"AlexaSkill.requestHandlers.IntentRequest (/var/task/vendor/AlexaSkill.js:32:37)",
"AlexaSkill.execute (/var/task/vendor/AlexaSkill.js:110:24)",
"exports.handler (/var/task/index.js:8:7)"
]
}
@pmyers88 the package.json says MIT license, but there is an Apache LICENSE.md. What's going on?
No real demand yet, but it is a possible addition.
Now that we're re-prompting when we can't find a station, we need to implement these intents so that they're able to quit. Otherwise we just keep re-prompting them.
Service advisories use "btw" instead of "between". Fix this and check for other abbreviations.
Some of our responses are missing cards. Make sure we have cards for responses that end an interaction with the user.
If you do a Launch Request after the Metro is closed it will still give you the normal message. Let's not waste the user's time.
GetStation
requests do give an appropriate message when the Metro is closed.
The titleize library does not work for stations we have already corrected. For example:
titleize('Foggy Bottom-GWU') = 'Foggy Bottom-Gwu'
Use a titleize function that will titleize user inputs that need titleization (i.e. takoma, silver spring) and not mess with station names that we've already corrected.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.