josephschmitt / alexa-libby Goto Github PK
View Code? Open in Web Editor NEWA skill to ask Alexa about your Movie and TV Show library queues.
Home Page: https://josephschmitt.github.io/alexa-libby/
License: MIT License
A skill to ask Alexa about your Movie and TV Show library queues.
Home Page: https://josephschmitt.github.io/alexa-libby/
License: MIT License
Hi,
First thanks for sharing the code. I have another app running in port 8080, so can I change the port to a different one?
Hi! I configured your older version for couch potato with ease (if I remember correctly) but I am not having any luck this time around. I believe it may be because Amazon changed their web layout and your instructions don't match the new layout. An update to the wiki for newbies like myself would be appreciated. Thanks!
hi,
im wanting to set this up but i get the following error, which is why i think the beta builder didnt work
Error: There was a problem with your request: the slot type "AMAZON.Movie"are not currently available for en_GB
is there anyway around this?
I've attempted to set this up, and I know the instructions are outdated, however I think I got it all squared away - except it isn't working.
When I test the skill, I get the error 'An exception occurred while dispatching the request to the skill'. I believe the issue is with the Lambda function itself, and I noticed the following in the logs:
Unable to import module 'index': Error
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)
Any thoughts?
If I ask: is the show silicon valley on the list
The response is "Couldn't find the show silicon valley queued for download. No show found for the show silicon valley"
It's being caught by : "is the {movieName} on the list",
If i ask "is show silicon valley on the list", it works and find the show.
Adding a movie to the Radarr list doesn't automatically download. Adding this to radarr.js line 75 makes it start downloading when added:
addOptions: {
searchForMovie: true
}
I'm getting the following response when I invoke the skill: Request Identifier: amzn1.echo-api.request.572a6d44-e55f-46a5-a08b-b955591aac77
Here's the default.json changes I made (quality profile and tmdb apikey updates):
{
"alexa-libby": {
"server": {
"hostname": "http://server.com"
},
"movies": {
"provider": "radarr",
"server": {
"apiKey": "dkekdkejdkejdke123345",
"port": 7878
},
"quality": "All"
},
"shows": {
"provider": "sonarr",
"server": {
"apiKey": "dkekdkejdkejdke123345",
"port": 8989
},
"quality": "All"
},
"artwork": {
"tmdbApiKey": "dkekdkejdkejdke123345"
}
}
}
The most peculiar part is the very first request I made downloaded a show off of sonarr but then I started getting this error again over and over.
Testing the skill in the Alexa Skills Kit returns a "the remote endpoint could not be reached" but I can access my ports for Sonarr and Radarr via Chrome, so I'm not sure what the issue is. Any thoughts?
OverDrive has made a library app called Libby, does this repo have anything to do with that or is the Libby in the name irrelevant?
followed instructions, ran into a wall when trying to add region kept giving me an error about 45 characters, solved it by not selecting region however now I'm stuck at the testing phase, I'm not getting any response and I know I set my couchpotato api and host info all correctly. would anyone mind going over what ive done so far and help me complete it we can remote desktop with teamviewer, ill paypal a cool 20
Hi! Is it possible for someone to update the toturial on how to make this skill? There are some big changes in AWS and the "old" tutorial dont match. :)
Connections to Radarr return:
From the Radarr Log
18-3-8 19:00:13.1|Debug|Api|[GET] /api/movies/lookup?term=Zulu: 404.NotFound (0 ms)
From the Alexa Skill Log
{
"body": {
"version": "1.0",
"response": {
"outputSpeech": {
"type": "SSML",
"ssml": "An error occured: Error: NotFound"
},
"directives": [],
"shouldEndSession": true
},
"sessionAttributes": {}
}
}
From what I have gathered is that the Radarr project has been updated and been distanced from Sonarr somewhat. So the API call to 'movies/lookup' or rather just the api command 'movies' no longer exists. The command is now just 'movie' (no s), and as far as I can tell, 'lookup' is also gone.
I am using your walkthrough, which is very well documented may I add, yet i'm getting the 'failure invoking your skill with text input' error.
steps I followed:
it's worth noting that if I type "start libby" as the invocation word, I get a successful response with the help text from libby.
is there anything else you need from me?
I used the radarr.js file provided in the following link to fix the Radarr issues:
Downloading works as it should, really well! However, when asking if a movie is on the list I get an error:
"There was a problem with the requested skill's response"
I cannot figure out why this is happening, any ideas?
Hi Joseph,
I'm hitting an issue when I test my skill that the lambda response is "Remote endpoint could not be called, or the response it returned was invalid.
This was my utterance "Alexa, ask libby if the movie The Dark Knight is on the list" which yielded the lambda request:
{
"session": {
"sessionId": "SessionId.b33d6c7d-e5a5-4ceb-b86b-8f5c8ef02784",
"application": {
"applicationId": "amzn1.ask.skill.c7eb1e7e-9483-4c50-b4e0-386084becab1"
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account.AEVVZKWG4RPCQ47NKA7C34GR5H2RV2DGBHXHPMYXZDBCVVKKEADUTQEFWA7B7GY7ZMDXV3RV2PRF4UMEQ2JOXEJTFI37ONFL6OKDRAO3VF7F7U2PPTKAG3JNV4YSZZS5MMJZRBB6BHKBN6ZPML3EKFCYQ3VWX27KJ5B5D5E5BZRX2ZQLJRU2TRTMZ6KPPCKV4SOPMQRNJFPGMWQ"
},
"new": true
},
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.023f81ce-0ab3-4d46-86fa-c6d089bf45cb",
"locale": "en-US",
"timestamp": "2017-06-28T20:27:40Z",
"intent": {
"name": "FindMovie",
"slots": {
"releaseDate": {
"name": "releaseDate"
},
"movieName": {
"name": "movieName",
"value": "the dark knight"
}
}
}
},
"version": "1.0"
}
Meanwhile, I tried a few different default.json configs - my setup is the same ddns hostname and the standard Sonarr and Radarr ports (8989 and 7878 respectively). I created a new lambda function from the console and uploaded the .zip with the updated default.json. Any insights into what the issue might be?
{
"alexa-libby": {
"server": {
"hostname": "http://my-pvr-server.com"
},
"movies": {
"provider": "radarr",
"server": {
"apiKey": "abcdefghijklmnopqrstuvwxyz123456",
"port": 7878
}
},
"shows": {
"provider": "sonarr",
"server": {
"apiKey": "abcdefghijklmnopqrstuvwxyz123456",
"port": 8989
}
}
}
}
{
"alexa-libby": {
"server": {
"hostname": "http://my-pvr-server.com"
},
"movies": {
"provider": "radarr",
"server": {
"apiKey": "abcdefghijklmnopqrstuvwxyz123456",
"port": 7878
}
},
"shows": {
"provider": "sonarr",
"server": {
"apiKey": "abcdefghijklmnopqrstuvwxyz123456",
"port": 8989
}
}
}
}
Love the idea of this, but the instructions to set up lambda do not match the current AWS. Can you please update so we can figure out how to get this running? thanks!
Please add support for Ombi's swagger API. https://github.com/tidusjar/Ombi/wiki
I cannot find this in the built in skills library.
There are not clear instructions on how to post this as a skill?
I am a bit confused. Does this have to be complicated?
Seems all API calls are working just fine. I just cant add movies to Radarr or shows to Sonarr. Alexa speaks an error to me, "There was a problem with the requested skill's response." Let me walk you though my voice instructions I'm giving to Alexa-Libby:
"session": {
"new": true,
"sessionId": "SessionId.e1461ba7-5bfxxxxxx0290260d1",
"application": {
"applicationId": "amzn1.ask.skill.80adexxxxe77095cc9c"
},
"attributes": {},
"user": {
"userId": "amzn1.ask.account.AH25FKBTxxxxxxxLSRS4LV32WIKOXXKEDDEG3BZUSVF2U5KVHFBV63SI"
}
},
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.abc661xxxx-490fb7988689",
"intent": {
"name": "AddMovie",
"slots": {
"releaseDate": {
"name": "releaseDate"
},
"movieName": {
"name": "movieName",
"value": "meet the parents"
}
}
},
"locale": "en-US",
"timestamp": "2017-11-20T01:33:28Z"
},
"context": {
"AudioPlayer": {
"playerActivity": "IDLE"
},
"System": {
"application": {
"applicationId": "amzn1.ask.skill.80ade47f-21xxxxx-cfe77095cc9c"
},
"user": {
"userId": "amzn1.ask.account.AH25FKBTCCLY46FBNxxxxxxxB4LSRS4LV32WIKOXXKEDDEG3BZUSVF2U5KVHFBV63SI"
},
"device": {
"supportedInterfaces": {}
}
}
},
"version": "1.0"
}
17-11-19 22:26:39.5|Debug|Parser|Parsing string 'meet the parents'
17-11-19 22:26:39.5|Debug|Parser|Unable to parse meet the parents
17-11-19 22:26:39.6|Debug|Api|[GET] /api/movies/lookup?term=meet%20the%20parents: 200.OK (70 ms)
{
"version": "1.0",
"response": {
"outputSpeech": {
"ssml": "<speak>Add Meet the Parents (2000) to your list?</speak>",
"type": "SSML"
},
"speechletResponse": {
"outputSpeech": {
"ssml": "<speak>Add Meet the Parents (2000) to your list?</speak>"
},
"directives": [],
"shouldEndSession": false
}
},
"sessionAttributes": {
"promptData": {
"searchResults": [
{
"title": "Meet the Parents",
"slug": "meet-the-parents-1597",
"year": 2000,
"tmdbId": 1597,
"images": [
{
"coverType": "poster",
"url": "http://image.tmdb.org/t/p/original/wVjtQtzv9IcNRGnOOdcK797Sdxx.jpg"
}
],
"status": "released",
"quality": "Clusterbox Quality"
},
{
"title": "Meet the Parents",
"slug": "meet-the-parents-236405",
"year": 1992,
"tmdbId": 236405,
"images": [
{
"coverType": "poster",
"url": "http://image.tmdb.org/t/p/original/7v6HbhAlHFBe7e4ZCG9YhqfR0Wa.jpg"
}
],
"status": "released",
"quality": "Clusterbox Quality"
},
{
"title": "Meet the Fockers",
"slug": "meet-the-fockers-693",
"year": 2004,
"tmdbId": 693,
"images": [
{
"coverType": "poster",
"url": "http://image.tmdb.org/t/p/original/xHAqB06iL5D6HyOS6QpgyKkRQHD.jpg"
}
],
"status": "released",
"quality": "Clusterbox Quality"
},
{
"title": "Little Fockers",
"slug": "little-fockers-39451",
"year": 2010,
"tmdbId": 39451,
"images": [
{
"coverType": "poster",
"url": "http://image.tmdb.org/t/p/original/qixmjH8fLD9IkboPO7FKxAqzwRJ.jpg"
}
],
"status": "released",
"quality": "Clusterbox Quality"
}
],
"providerType": "movies",
"yesAction": "addMedia",
"yesResponse": "Added Meet the Parents (2000) to your wanted list.",
"noAction": "suggestNext",
"noResponse": "Ok, did you mean Meet the Parents (1992)?"
}
}
}
{
"session": {
"new": false,
"sessionId": "SessionId.e1461baxxxxx-8220290260d1",
"application": {
"applicationId": "amzn1.ask.skill.80ade47f-2xxxxx-cfe77095cc9c"
},
"attributes": {
"promptData": {
"searchResults": [
{
"title": "Meet the Parents",
"slug": "meet-the-parents-1597",
"year": 2000,
"tmdbId": 1597,
"images": [
{
"coverType": "poster",
"url": "http://image.tmdb.org/t/p/original/wVjtQtzv9IcNRGnOOdcK797Sdxx.jpg"
}
],
"status": "released",
"quality": "Clusterbox Quality"
},
{
"title": "Meet the Parents",
"slug": "meet-the-parents-236405",
"year": 1992,
"tmdbId": 236405,
"images": [
{
"coverType": "poster",
"url": "http://image.tmdb.org/t/p/original/7v6HbhAlHFBe7e4ZCG9YhqfR0Wa.jpg"
}
],
"status": "released",
"quality": "Clusterbox Quality"
},
{
"title": "Meet the Fockers",
"slug": "meet-the-fockers-693",
"year": 2004,
"tmdbId": 693,
"images": [
{
"coverType": "poster",
"url": "http://image.tmdb.org/t/p/original/xHAqB06iL5D6HyOS6QpgyKkRQHD.jpg"
}
],
"status": "released",
"quality": "Clusterbox Quality"
},
{
"title": "Little Fockers",
"slug": "little-fockers-39451",
"year": 2010,
"tmdbId": 39451,
"images": [
{
"coverType": "poster",
"url": "http://image.tmdb.org/t/p/original/qixmjH8fLD9IkboPO7FKxAqzwRJ.jpg"
}
],
"status": "released",
"quality": "Clusterbox Quality"
}
],
"providerType": "movies",
"yesAction": "addMedia",
"yesResponse": "Added Meet the Parents (2000) to your wanted list.",
"noAction": "suggestNext",
"noResponse": "Ok, did you mean Meet the Parents (1992)?"
}
},
"user": {
"userId": "amzn1.ask.account.AH25FKBTCCLY46FBNHMxxxxxxxx4LSRS4LV32WIKOXXKEDDEG3BZUSVF2U5KVHFBV63SI"
}
},
"request": {
"type": "IntentRequest",
"requestId": "EdwRequestId.9ebbxxxxx631de93b5eac",
"intent": {
"name": "AMAZON.YesIntent",
"slots": {}
},
"locale": "en-US",
"timestamp": "2017-11-20T01:34:36Z"
},
"context": {
"AudioPlayer": {
"playerActivity": "IDLE"
},
"System": {
"application": {
"applicationId": "amzn1.ask.skill.80ade47f-xxxxxxx-cfe77095cc9c"
},
"user": {
"userId": "amzn1.ask.account.AH25FKBTCCLY46FBNHM5xxxxxxxSRS4LV32WIKOXXKEDDEG3BZUSVF2U5KVHFBV63SI"
},
"device": {
"supportedInterfaces": {}
}
}
},
"version": "1.0"
}
The remote endpoint could not be called, or the response it returned was invalid.
17-11-19 22:26:49.0|Debug|RootFolderService|Generating list of unmapped folders
17-11-19 22:26:49.1|Debug|RootFolderService|0 unmapped folders detected.
17-11-19 22:26:49.1|Debug|Api|[GET] /api/rootfolder: 200.OK (126 ms)
{
"alexa-libby": {
"server": {},
"movies": {
"provider": "radarr",
"server": {
"apiKey": "3f30573xxxxxxxxxxxxxx7794",
"hostname": "https://radarr.mydomain.net",
"urlBase": "movie",
"port": 80
},
"quality": "Clusterbox Quality"
},
"shows": {
"provider": "sonarr",
"server": {
"apiKey": "6850715exxxxxxxxxxx19d3aac",
"hostname": "https://sonarr.mydomain.net",
"urlBase": "tv",
"port": 80
},
"quality": "ClusterBox Quality"
}
},
"artwork": {
"tmdbApiKey": "adb078xxxxxxxxxxxxxxbe4d6c85"
}
}
Radar Version: 0.2.0.870
Sonarr Version: 2.0.0.5054
Great project! Got this up and running and I love it. Would it be possible to also initiate a search for the media after adding it? I took a look at the Sonarr and Radarr API docs and it looks like it's possible.
The qualityProfileId is always 1 (Any) and currently you have to hard code it to different ID in radarr.js line 74, it would be nice to specify the human readable profile in the config.
Hi,
Firstly, thanks for working on this fabulous Skill for Alexa.
Secondly, I'm a complete noob when it comes to Alexa Skills having not gone through the process before.
My problem is, I can't get it to work on my Echo Dot.
I'm based in the UK and hosted the Lambda function in the US and set the language of my skill to US too (for the Amazon slot types to work), so not sure if this is causing the issue.
When I test with Service Simulator in my browser with the text string "if the series Jessica Jones is on the list" it seems to work. But when I go and test it on my Echo Dot, I just get the "failure" noise. Looking at under the History in the Alexa App, shows that is recognised what I said almost perfectly...
"ask my video library the series jessica james's on the list"
It only missed the "if" out of the middle. Also, I set the invocation phrase to "my video library" because it kept hearing "libby" as "livy" and enabling the random skill.
At a bit of a loss as to how to debug this any further and wondering if you could help please?
FYI - I couldn't get this working with SSL, I believe it is due to my using self-signed certificates and Node.JS not liking them. For the moment, I thought I'd get it working without and worry about re-enabling SSL afterwards.
I might say these are my favorite types of errors! Whenever I request something, I get the response below.
My config has both SSL enabled on sonarr and radarr, different hostnames.
#####Error response#####
{
"version": "1.0",
"response": {
"outputSpeech": {
"type": "SSML",
"ssml": "An error occured: Error"
},
"speechletResponse": {
"outputSpeech": {
"ssml": "An error occured: Error"
},
"directives": [],
"shouldEndSession": true
}
},
"sessionAttributes": {}
}
#####default.json#######
{
"alexa-libby": {
"server": {},
"movies": {
"provider": "radarr",
"server": {
"apiKey": "API string",
"hostname": "https://movies.domain.xyz",
"port": 443
}
"quality": "HD-720p"
},
"shows": {
"provider": "sonarr",
"server": {
"apiKey": "API string",
"hostname": "https://tv.domain.xyz",
"port": 443
}
"quality": "HDTV-720p"
}
}
}
There seem to be a lot of people hanging....waiting....
I went searching for an Alexa skill for Couch Potato, and found this. But like several of the others mentioned, the docs are outdated.
Hey,
I'm trying to set this up for the first time, and when testing the function either through the alexa developer console or directly in the lambda console using the test phrase in the wiki docs ("is The Dark Knight on the list") I receive the below response:
{
"version": "1.0",
"response": {
"outputSpeech": {
"type": "SSML",
"ssml": "<speak>An error occured: {\"error\":\"JSON expected\"}</speak>"
},
"speechletResponse": {
"outputSpeech": {
"ssml": "<speak>An error occured: {\"error\":\"JSON expected\"}</speak>"
},
"directives": [],
"shouldEndSession": true
}
},
"sessionAttributes": {}
}
The local.json
file is the only change I made (other than a small script to generate it using stored secrets for api keys that sits in the root). The local.json
file without keys can be seen here: https://github.com/justin8/alexa-libby/blob/master/local_template.json
jq
reports the local.json
file as valid json as well.
I have been unable to get this to work.. I keep getting this error
Service Response:
The remote endpoint could not be called, or the response it returned was invalid.
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.