@Flippage said:
Hey @digitalhigh
Any update on this one?
This looks really promising, and exactly what I was hoping for when I bought the Google Home.
Any chance of getting a beta of this? Are you still working on it?
Actually, yes. I’ve been tearing through my code on this, adding, polishing, tweaking, improving. I’ve done a number of things since last checking in.
I’ve now incorporated a direct login with your plex username to the portal for configuration. You go to the page for your Phlex server, log in with your Plex credentials. I then generate some session data to associate your creds with your token and preferences, and bladow - anybody who can use your server can log into it and customize commands for their device which is tied directly to their plex account.
Additionally, I’ve got the generation and authentication mechanism in place so that once a user has logged in, they can get an API key that will allow Plex-authenticated voice commands without having to store your creds on IFTTT/etc.
For Media searching, I literally went off the deep end and back again trying to account for a bajillion different requests and phrases - stuff as complex as “I want to watch season 1 episode 2 of Game of thrones from 15 minutes and 45 seconds in”. I had trouble getting google to figure out that I was using my IFTTT command because this was so long, but typing it into the web UI works no problem, so the issue there is on Google’s end, not mine. 
But you can easily say “I want to watch Goonies from the beginning.” or “I want to watch Goonies from 1 hour 45 minutes and 33 seconds”, and it will start Goonies at 1:45:33.
I’ve done a ton of work on handling multiple results as well, whereas before I’d just kinda grab the first result, I’ve now refined it to the point of looking for the exact match first, then expanding to other results if none are found.
Similarly, while small and nuanced, I can now say “I want to watch a Bill Murray Movie” or “A movie with Bill Murray”, or really just say “Bill Murray”, or “Bill Murray” and “Movie”, etc.
What about if there are two movies with the exact same name, but you want to watch the new one that came out this year? Well then, say the name of the movie followed by the year. Because nobody wants to watch “Passengers” that was made in 2008… XD
I’ve still got a lot of work to do. Right now, the login page is ugly as sin and has zero styling or design whatsoever.
As a result of needing to check the status of the player I’m requesting to play stuff to, I figured I might as well build a little “Now Playing” bar into the WebUI. I’m currently checking the result of the “play” command, but that will return a positive result as long as the request is well-formed - it doesn’t actually tell you if what you wanted to play started playing.
Which brings me to the biggest issue I’m currently facing - which is that I can only send media for playback to my Shield currently. I have not tested with my Nexus Player, but have been working to get the same results with a copy of Plex Media Player I’ve got installed on my computer downstairs. (It’s running server 2016, so no store app). But, I really, really, really want this to be able to do anything you can do from the regular plex web app, so I’ll keep talking to people who know more about Plex than I do and see what I’m doing wrong. As of right now, I can see from the logs that my commands are making it where they need to go and they’re recognized as coming from a valid Plex device, so that’s good.
But, for those of you running an Android-based version of the Plex app, it should work right now. The rest are WIP.
Here are a couple of screenshots. I still have a lot of UI work to do…like I said, I want to add an actual poll to the designated player so you can see that commands are working all proper-like. I want the web UI to display not only the results of commands entered directly, but also fired by the API, so that any weirdness with other apps is easy to figure out. Right now, the list of clients is only updated when the page is loaded - I need to make it load every time you click the dropdown menu for the players. Same with settings - now that I’m able to scrape data directly from Plex.tv, there’s no reason to have to enter that info into Settings - just pick the main server from the dropdown and go.
And the text parsing. While a lot of it works wonderfully, the more complex commands still cause some quirky results. Or, on the programming side, it’d be better to say that not every successful command will return a successful JSON array containing any and all relevant data needed to debug unsuccessful commands. Additionally, a uniform response system would ensure that future compatibility with AI/assistants could include smarter responses.
Here's the initial screen after login.

A simple, single-title search with no modifier.

A more complex search, with series name, episode/season designator, and a starting offset
You can also see the dropdown where you can select the command set to test/send. (Media, control, fetch).

An nth-selector, asking for the most recent episode of a series

Indicate that you want to resume playback from the currently saved offset

The same query, only with a general indicator to start at the begnning

Mobile-responsive version