Alexa Skill
Control Momo by voice using Amazon Alexa. Add tasks, check your Daily Quest, browse your task list, and fill your wishlist — hands-free.
Voice Commands
| What you say | What happens |
|---|---|
| “Alexa, open Momo” | Start the skill |
| “Add dentist appointment” | Creates task “dentist appointment” |
| “Add milk to the shopping list” | Adds “milk” to your wishlist |
| “What is my quest?” | Reads your current Daily Quest aloud |
| “List my tasks” | Reads up to 5 open tasks |
| “Help” | Lists all available commands |
| “Stop” / “Cancel” | Closes the skill |
Momo supports German (
de-DE) and English (en-US) — the skill responds in the language your Echo is set to.
How Account Linking Works
Alexa needs to know which Momo account to use. This is handled via Account Linking:
- You tap “Link Account” in the Alexa app
- Momo’s login page opens in your browser
- You log in with your existing Momo account
- Momo automatically creates an API key called “Alexa” for your account
- Alexa stores the key — done
The key is visible under Settings → API Keys in Momo and can be revoked at any time to disconnect the skill.
Architecture
You (voice)
↓
Amazon Echo / Alexa App
↓
Alexa Skills Kit → AWS Lambda (Node.js 20)
↓
POST/GET https://your-momo-instance/api/...
Authorization: Bearer <your-api-key>
The Lambda function is stateless — it receives the Alexa request, calls the Momo API, and returns the spoken response. No data is stored in Lambda.
Prerequisites
- A regular Amazon account
- An Amazon Echo device or the Alexa app on your phone
- A running Momo instance with API Keys enabled
- A free AWS account for the Lambda function
- A free Amazon Developer account for the Alexa skill
Time to set up: ~30 minutes.
Step-by-Step Setup
Part 1 — AWS Lambda
1.1 Create an AWS Account
- Go to aws.amazon.com and click Create a Free Account
- Sign in with your existing Amazon account or create a new one
- Enter a credit card (required for verification — Lambda stays free within the Free Tier)
- Complete phone verification
- Choose the Basic (Free) plan
- Wait for the activation email (~1–2 minutes)
Lambda is permanently free within the AWS Free Tier: 1 million requests/month. A personal Alexa skill will never exceed this limit.
1.2 Create the Lambda Function
- Go to the AWS Management Console
- Search for Lambda in the top search bar
- Make sure the region in the top right is set to Europe (Frankfurt) eu-central-1 — or choose a region close to you
- Click Create function
- Select Author from scratch
- Fill in:
- Function name:
momo-alexa-skill - Runtime:
Node.js 20.x - Architecture:
x86_64
- Function name:
- Click Create function
1.3 Upload the Skill Code
- In your Lambda function, scroll to the Code section
- Click Upload from → .zip file
- Upload
alexa-skill/deploy.zipfrom the Momo repository- If you don’t have the file yet: run
npm run zipinside thealexa-skill/directory
- If you don’t have the file yet: run
- Click Save
Verify that the Handler is set to index.handler (under Runtime settings → Edit).
1.4 Set the Environment Variable
- Click Configuration → Environment variables in the left sidebar
- Click Edit → Add environment variable
- Enter:
- Key:
MOMO_API_BASE_URL - Value:
https://your-momo-instance.com(your Momo URL)
- Key:
- Click Save
1.5 Copy the Lambda ARN
In the top right of the Lambda console you’ll see your function’s ARN:
arn:aws:lambda:eu-central-1:123456789012:function:momo-alexa-skill
Copy this ARN — you’ll need it in Part 3.
Part 2 — Amazon Developer Account
- Go to developer.amazon.com
- Click Sign in in the top right and log in with your Amazon account
- Accept the terms of service (one-time)
- The Developer Portal opens — no further details required
Part 3 — Create the Alexa Skill
3.1 Create a New Skill
- Go to the Alexa Developer Console
- Click Create Skill
- Fill in:
- Skill name:
Momo - Primary locale:
English (US)— orGerman (DE)if you prefer
- Skill name:
- Click Next
- Choose model: Other → Custom
- Click Next
- Choose hosting: Provision your own
- Click Next → Start from Scratch → Create Skill
3.2 Import the Interaction Model
- In the left sidebar, click Interaction Model → JSON Editor
- Delete all existing content
- Open
alexa-skill/models/en-US.json(orde-DE.json) from the Momo repository - Paste the full contents into the JSON editor
- Click Save Model → then Build Model
- Wait for the build to complete (~1–2 minutes, green success message)
3.3 Configure the Endpoint
- In the left sidebar, click Endpoint
- Select AWS Lambda ARN
- Paste the Lambda ARN from Step 1.5 into the Default Region field:
arn:aws:lambda:eu-central-1:123456789012:function:momo-alexa-skill - Click Save Endpoints
- Copy the Skill ID shown at the top of the page — it starts with
amzn1.ask.skill.
3.4 Add the Alexa Trigger in Lambda
Back in the AWS Lambda console:
- Click + Add trigger
- Select Alexa Skills Kit
- Under Skill ID verification: choose Enable and enter your Skill ID
- Click Add
Part 4 — Account Linking
4.1 Configure Account Linking in Alexa
In the Alexa Developer Console → your skill → left sidebar → Account Linking:
- Enable the toggle “Do you allow users to create an account or link to an existing account with you?”
- Set Authorization Grant Type: Implicit Grant
- Fill in:
- Authorization URI:
https://your-momo-instance.com/api/alexa/auth - Client ID:
momo-alexa - Scope: leave empty
- Domain List: leave empty
- Authorization URI:
- Click Save
How it works for all users: When a user taps “Link Account” in the Alexa app, Alexa opens your Momo instance’s
/api/alexa/authendpoint. If the user isn’t logged in, they’re redirected to the Momo login page. After login, Momo automatically creates an API key named “Alexa” for that user and hands the token to Alexa. The key is visible under Settings → API Keys and can be revoked there at any time.
4.2 Link Your Account in the Alexa App
- Open the Alexa app on your phone
- Go to More → Skills & Games → Your Skills → Dev
- Tap Momo
- Tap Link Account / Enable to use
- A browser opens with your Momo instance
- Log in — Momo creates the API key automatically
- Alexa confirms “Account successfully linked”
Part 5 — Test the Skill
In the browser (no Echo required)
- In the Alexa Developer Console → Test (top menu)
- Set Skill testing is enabled in: to Development
- Type or say:
open momoadd dentist appointmentwhat is my questlist my tasks
On an Echo device
Make sure your Echo and the Alexa app are connected to the same Amazon account, then say:
“Alexa, open Momo”
Supported Intents
| Intent | Example utterances |
|---|---|
AddTaskIntent |
“Add dentist”, “New task groceries”, “Note call mom” |
AddWishlistItemIntent |
“Add milk to the shopping list”, “Put Nintendo Switch on my wishlist” |
GetQuestIntent |
“What is my quest?”, “What’s today’s mission?”, “What should I do today?” |
ListTasksIntent |
“List my tasks”, “What do I have to do?”, “My open tasks” |
AMAZON.HelpIntent |
“Help” |
AMAZON.StopIntent |
“Stop”, “Cancel”, “Quit” |
Sharing the Skill with Others
By default, the skill is in Development mode — only accessible to the developer account. To let others use it:
- Beta Testing — Invite up to 500 users by Amazon account email in the Alexa Developer Console → Beta Testing. No certification required.
- Public Skill Store — Submit the skill for Amazon’s certification process to publish it publicly.
Troubleshooting
| Problem | Solution |
|---|---|
| “There was a problem with the requested skill’s response” | Re-upload deploy.zip — the Lambda may have old code. Check CloudWatch Logs: Lambda → Monitor → View CloudWatch Logs |
| “Your account is not linked” | Open Alexa app → More → Skills → Dev Skills → Momo → Link Account |
| Lambda timeout | Set timeout to 10 seconds: Lambda → Configuration → General Configuration → Timeout |
| Skill not found on Echo device | Make sure the skill is enabled in the Alexa app and your Echo uses the same Amazon account |
| Build errors | Inside alexa-skill/: run npm install && npm run zip again |