 Hello, Peoria. Thanks, y'all, for sticking around. We got mine and then the Drupal session after this. I'm pretty excited for as well, so we're gonna hope to end on a high note. Although, I will say I was not warned of the humor of my predecessors, so I do not have as many jokes as they did, but hopefully we'll keep it interesting for you. So yeah, my name's Keenan, I'm in from Chicago, so I always loved visiting Central Illinois. I went to school at Wesleyan in Bloomington, so know the area and I always liked being back. And today we're gonna talk about voice interfaces and how they're a little bit different from keyboard and mouse or webpage on a phone, webpage on mobile, and how they're kind of becoming the future in a lot of ways. So shout out to my parents for giving me a very unique name. I have this handle on almost every platform online. Otherwise, I check my email way too often and you can get in contact with me there. And similar to some of the other talks, I don't want people having to take notes and all those things, so any of the links or sources for things or links to GitHub for those of you who like looking at code are all on this last URL right here. So it's a little bit shorter, easier to remember, so you don't have to take copious notes. The professor was the lecturer before mine, not me, so. Cool, so in terms of voice, here's basically where we are. Today, 35 million Americans, so now it's a little less than 10% of the population. We'll use a voice activated assistant device at least once per month. So that includes some of these devices that I have up here that I can't say the names of, otherwise they'll turn on. It includes people who have Siri in their pocket or Google Assistant in their pocket and things like that. So that's a pretty big number already. But com score also estimates then in the future, 50% of all searches will be voice searches. So that begs the question, like why is that? And in my opinion, this is backed up by some research as well. Similar to when you used to use Google, a long time ago for those that remember, there were always those two buttons. You could Google search and there was this button just that I'm feeling lucky, right? And what that would do is Google would pick what it thought was the top result and it would just take you straight there instead of you having to do the search results page. So a very similar idea with voice. When you ask a voice question, you basically get one answer. You don't have to worry about filtering through pages and pages of search results. You ask a question and you get an answer. It's very conversational and people like that and that we'll discuss kind of pros and cons of that a little bit later. Because that's definitely, for those of us that aren't always the number one search result on Google, these interfaces can be kind of daunting for that reason. But it's very easy and it's an interface that people have been using since a little after they were born, their voice, right? So it's very familiar. So how do we get started? With any new technology, there's kind of different levels of adoption that you can take. You can do like a very base level and if you're not super technical, that could work but you can go all the way up to, we're gonna make a full voice application which is very difficult and we won't be doing that in the scope of this talk unless you wanna stay for like three hours. So we're gonna look at three different ways that you can integrate your WordPress content into this kind of voice interface. So the first, like we said, we're gonna start simple and get more complicated as we go. So the first option we're gonna look at is if you have a bunch of post content and you don't care, you want people to interact with it in the browser in the same way but you just want it to be audio instead of text. So now there are automated ways to do that that are getting better every day that basically can turn your existing post content or your news content or whatever you have on your site into audio. So we're gonna take a look at that. Secondly, we're gonna look at, okay now that your post content is audio, how can you bring that content to these connected devices? So to the Google and Amazon devices and in people's pockets as well. And third, we're gonna say, okay we want to actually customize how this content comes onto these devices and customize interactions that people could have and give the ability for people to actually have a conversation with the device and then get some of our content as a result. So like we said, kind of stair stepping the other way up the complexity ladder. So first let's just start with we have a bunch of content on our site and we want to turn it into audio so people can listen to it or consume it on the go. So Amazon Web Services in combination with WP Engine recently released a plugin called AWS Poly. Poly is Amazon's text to speech service. So what the plugin basically does is it puts a nice interface on Poly and gives you basically a one click, yes I wanna turn this into audio and then converts your posts into audio. It embeds a nice little MP3 player right at the top of your post. So when someone hits the page, they can say I either wanna listen to this content or they can scroll down and read it just like they normally would. So really pretty seamless. And one of the great features about this is once you have your post content as audio, if a delivery format that your audience is used to is podcast, you can deliver it in that way as well without a ton of extra setup work because the conversion of text to speech is done on the back end for you. And services like this have been around for a long time but one thing that Amazon's Poly does better than a lot of them is it uses deep learning to figure out the kind of the meaning behind what you're writing. So on its face, ignore the contraction but these two sentences as text essentially look the same. We live in Peoria and we're live in Peoria. So live and live to old text to speech engines would be the same. So you would get we're live in Peoria or we live in Peoria, right? And so there's a bunch of things like that in the English language to completely not even talk about other languages yet but even just in English that are very difficult to parse for a computer. So they've fed it a bunch of text and looked at the results and how it speaks it out and tweak the model and this is what they've gotten. So Poly is continually learning and it's getting better all the time which we all can benefit from if we use this tool. And so because it's learning and they can give it a bunch of text, they've given it a bunch of different voices as well as languages. So I think in English you can choose between like 12 or 15 voices. We'll look at those in a second. And like a lot of Amazon technologies they have a pretty generous free tier of this. So you can convert up to five million characters a month and there's not many people who use WordPress that I know that are writing more than that in a given month. Unless you're like a very hard core publisher, things like that. But even after that it's relatively cheap to use as well. So let's take a look at how this works. So we'll jump over here. Here's the plugin on the plugins repository. So it's just Amazon Poly for WordPress. And then this description is basically what I just shared with you. So let's look at actually how it works though. So, we need to post you. So here's on our side a sample post that my business partner wrote. You can see it's quite lengthy, maybe a lot to read. So let's see how we can go about getting that turned into some audio. So you can see here I've already activated the plugin and I have the Poly item in the admin. So like I said, Poly is part of Amazon Web Services. So they can count how many characters you're using towards your free tier or to actually pay for it at some point. You have to set up an Amazon Web Services account and put in kind of your account credentials here. And you can pick things like which region you wanna do and stuff like that. Which is a little bit beyond the scope of this talk. But what we wanna look at is the text to speech area. So the big important one is enable text to speech support, otherwise the rest of this is pointless. The sample rate for those of you audio nerds out there you can customize this value, but it sets pretty good defaults for you. Again, so here we can pick all of our different voices. You can see if we want Australian English, we have Nicole and Russell ready to help us out. British English, we've got Emma, Brian, Amy, Ravina and Aditi. And then US English, we have a whole host of people as well as our one Welsh English voice. So we can just stick with Matthew for now. Some of these I will confess are a little creepy. So kind of just like experiment to find one that you like, I can't remember who it was. I think it was Joanna I tried, like the night before I gave this talk previously. Now is my plan was to use Joanna in the talk and turned out that that was not possible because I was getting creeped out myself. Another thing that goes along with the deep learning is it probably knows where people breathe if someone was actually speaking this, they can do automated breathing. So that's usually a good setting to have enabled. And then if you want to do 125%, so it speaks it a little faster or slower if it's really technical, things like that. So all these settings you can kind of just mess with here. This one is probably the last important one. This is where the actual audio player will show up. So right now we have it set to before the post because we want, when someone hits the page, we want them to know right away that there's audio. You can either do it after or you can just convert it to speech on the back end and not show the player at all. But we'll just leave it up before post for now. So I don't think we actually changed anything. So we don't have to save settings here. So now when we're over in this post, if we scroll all the way down, you can see we've got, if this box goes away, we've got this little meta box down here. It says Amazon Poly and then it says enable text to speech and we want Matthew there. So we'll enable text to speech and we'll keep Matthew picked and then we'll just go ahead and hit update. And so what this should do now is it should generate. So basically it's calling out to Amazon Web Services. It's feeding it all of our post content. Amazon Web Services is turning it into speech and then it's kicking it back. So let's take a look. Fingers crossed. Cool. So got this MP3 player up here at the top now. And you can see it says voice by Amazon Poly. Over here I can download it, which is really handy. So if I'm on my phone and I see a really long post that I don't want to read, but I know I'm going to be on the train or something for the next half hour, you can just right click and download it straight to your phone. And then it'll actually read it out. So let's see if we can do that. Scoping digital projects. Earlier this month I spoke at a conference where I can have presentation titled Scoping Digital Projects as a non-developer. Slots from my presentation available here. So you can see that Matthew handles things like the parenthetical where it was a slight pause before and then the parenthetical and then a slight pause after because it was the end of a sentence and the automated breast that we talked about and easy things like that. So you can see the whole recording is about nine and a half minutes. So like for most people it would be quicker to read. But that nine and a half minute recording was generated and I don't know if anyone was counting probably five or six seconds just while we were hitting update. So and again, if you updated the post content next time you hit update, we'd call back to Polly, regenerate the audio and then drop it in the MP3 player. So this is a really pretty simple to get started way just to make your content a little more accessible because it's just a completely different interface. So if for some reason someone is having trouble reading your text, whether it's the font or the contrast or something like that, this is just another way for people to consume your content and with certain content types it actually ends up working a lot better and people like it a lot more. So yeah, so that's Polly. It's pretty much a drop in solution which is why we started with it and now I'm gonna go disable it so that it doesn't hang out there. But yeah, so that's if you wanna just kind of get started with voice and kind of going from text to speech, Amazon and WP Engine basically have all your bases covered for you which is really nice. So that's all well and good but a lot of this kind of voice revolution is happening on these different devices that aren't someone's computer or their web browser on their mobile phone. It's an actual internet of things I suppose, device that can exist separately from a larger computer or machine. So how do we get kind of our content from WordPress onto these other devices? So out of the box, both the Amazon and the Google devices ship with a certain set of skills that they can do. No Liam Neeson reference intended there but they ship with some skills that they already have. They can do things like weather, they can pull news, they can, I think Jeopardy is one that's enabled by default or you can enable it. But other than that, they don't really know how to do anything custom. So developers and organizations and other people have been creating what's known as skills and these are programmed as to way that they can help these devices perform more diverse tasks than they can out of the box. So these skills are backed by either a template which basically means your skill falls under the category of something that Amazon or Google predicted that you'd wanna do. We'll talk a little bit more about that later or it can be backed by any API. So an API that you build, I built a skill for I could ask it what was the last episode of a certain TV series that aired to know if I had watched it or if I needed to catch up on something that I was, and that was using like a TV episode API that wasn't mine but you can back it up with basically anything. So how this flow kinda works is the skill takes in the audio and it determines what's called the intent. So if it's a skill that has a bunch of different possibilities for you can say basically it has to determine what is this person who's speaking to the skill actually asking me. From there it's transformed, each intent is kind of mapped to a separate functioning code and then the function does whatever it wants to do based on when you asked it and then returns the response which is spoken out to you. We have a little bit of a diagram a little later that we'll show this better. So like we said, so a skill template basically, Amazon in particular has decided that lots of people like making trivia skills. So if you wanna make a trivia skill you don't have to build your own API or anything like that. You can say I wanna make a trivia skill and then it'll say great, give me all your questions and give me all the answers and then it will handle parsing the text, picking the question, reading out the answer, saying if it's correct, all that stuff. That's an example of a skill template. So like fun facts about whatever, fun facts about Peoria if I wanted to make that a skill there's already a template for that that Amazon has built. So those are a little bit easier because you don't necessarily have to do all of the code and everything but those also don't pull content from WordPress. So we're getting there. If you wanna do just kind of a little more complicated things but you don't necessarily wanna run your own web server or things like that, AWS Lambda which is the serverless offering from Amazon and Firebase from Google which is essentially the same thing. You can build functions in either of these platforms and say okay, when the voice comes in and it's a certain intent, map it to this skill and then return the response. So we'll look at that too. And then completely custom APN, API endpoints like say you run a WordPress site. Cool, we'll look at that too. So one of the big ways this is being used especially by publishers who are on WordPress is if they're a news site, one of the templates besides the trivia and the facts and things like that is what's called a flash briefing. So this is nice because you can set up the flash briefing and like we said with templates there's no need to do any code or anything. All Amazon wants is an RSS feed. So you can just paste the URL of your RSS feed in there and then your news content is available as a flash briefing. And what that means is myself as a user when I get an Amazon device I can set up what news sources I want in my flash briefing. So then when I wake up in the morning I can ask what's the news and it just goes through all the sources I've set up and reads me out the articles from the different sources. So once you have an RSS feed which you get with WordPress you can paste that into a template and then your content is available in people's flash briefings. So let's see what one of those is. I'm pretty sure Wall Street Journal is the one that I have on my flash briefing. So let's ask Alexa, what's in the news? In Wall Street Journal Minute Briefing. Your U.S. index has ended. So this is a clip that they pre-recorded assuming for Friday. And then they uploaded this. So this is the audio feed option that we're talking about in there. They uploaded this. Alexa, stop. Thank you. So they uploaded that as an audio clip on Friday but also with that same text-to-speech technology that we just saw, if you give it an RSS feed it will turn that into audio on the fly when people request it from their device. So these skill templates make getting a skill up and running very easy but they're really only applicable if you do news or publishing or something like that where it's very straightforward. Your content's going on every once in a while it's getting updated and that's it. So what if we want to do something a little bit more custom? What if we don't do news? So like we touched on a little bit earlier you can write skills yourself with some coding knowledge and a bunch of time spent reading documentation. I've told the documentation has gotten better since I first did it but when I went through it the first time this was basically me. Yeah. So our friends at Ally Interactive, they're a WordPress shop. Anybody from Ally here? I think there are a lot of publishing conferences we can. Yeah, so Ally has built a plugin called VoiceWP which basically takes a lot of this, lets you make a custom skill with custom responses and things but it brings that whole interface into WordPress. So we're going to take a look at a quick demo for that. We're not actually going to create a skill today because we only have 20 minutes or so. Cool, so again it's just a plugin. We're just going to look this up. So they originally built this because they were doing a lot of this kind of custom voice work for their clients and you see some of these here that you'll probably recognize. And so they said, hey, this should really be available to anyone so we're just going to make a plugin for it which is really cool. So under tools, no, under, where did I go? I'm on the wrong side. Side note, always color code your WordPress admin so you can tell when you're not on the site you think you are, it's very helpful. So under tools, Alexa skills settings. We're going to zoom this a little bit because I imagine it's a little hard to see. So these are all the things you can define. So with skill templates or like the flash briefings or things like that, you can't really define the custom responses like I can't say her name otherwise she'll activate. Alexa basically handles those for you but if you want to do something custom this is kind of the interface to do it. So you can set up your skill, you can say what people say when they are welcome so that they just activate the skill without telling it what they want it to do. It gives a generic welcome message. If they activate the skill and then don't ask for something or ask for something that is incorrect or something you can give a help message. And then various prompts to kind of work them through the skill. So basically what it does is it generates all of this for you which then you can feed back to Amazon to tell them how you want your skills. So you don't have to, normally this would be me or some developer that you know writing, putting this together in an editor and then shipping it off to Amazon. But with this you can just really easily put together a skill. So it's up here like a, like a custom post type would be and you can see you can add, you can add more of these outside of fact quote but you can then just in here just drop down and keep adding these. And really do all of that prep work that normally happens inside Amazon web services in your WordPress site, which also means people who are not the administrator of the site. So editors or whoever you give permission to can make changes to this stuff inside WordPress rather than also have a given that permission to your Amazon account, which is really handy. So if you're interested in this, I'm happy to talk more about it. I've messed around with it a little, although I've done more with the stuff where I write all the code myself because I don't know. I just, that's how I roll. But yeah, happy to discuss it more. And if this is something you're interested in doing inside WordPress, this is a really easy way to do it. And they've taken care of a lot of the busy work and stuff that had me digging through documentation the first time. So it's really great. So that was me after I was like, yes, okay, we got this, this is great. Cool, so there's always some people who I still see with skeptical phases because the examples I've shown are relatively boxed in. So yes, like this will work for this set of people or this will work if you do news or this will work if you wanna customize things within one of these three parameters in a dropdown in WP Admin. But I started this talk by saying that you could do basically anything you wanted to. And so I wanna make good on that promise to you all because I don't wanna end this talk being a liar. So what we're gonna do now is look at how we can create an entirely custom skill in for Google Home. So we're gonna make it pretty simple because we have a lot to go over still and I'm only about 15 minutes or so. But WordPress since version 4.7 has come with a REST API, which means you can hit a certain URL path and instead of rendering all the templates that you normally see with your WordPress site, it just gives you a text based output in a format called JSON. So we've set up here a custom endpoint and all I want is to get out of WordPress this value that I'm calling the quote of the day. So I created a little section in the settings to set the quote of the day and then set up a way for it to output as an endpoint to quote of the day. So we'll get back to that a little bit later but that's the WordPress REST API. Super useful for like integrating other systems with WordPress which is exactly what we're doing here and that's why we're using it. So kinda the overview of how this works is that the user, so myself or I guess if anyone else wants to volunteer they can come up but gives a command to one of these devices, the device will process the command and listen to the speech that I give it and turn it into text. So another one of those JSON objects which passes it to a tool called Firebase which is just a way to run some JavaScript on demand. So that takes, it says, okay, what is this person trying to do? In our case it's gonna be, this person is trying to get the quote of the day and then the Firebase itself knows to look at WordPress. So it goes to ask WordPress, hey, what's the quote of the day? Gets the quote back. It prepares the response. The response needs to be a very specific format for the device to be able to speak it. So it passes that formatted response back to the device which then speaks it out and we'll all hear it. So 100% understanding of what we're about to do, right? Great, good. It'll make more sense as we go through. So in each of these, each of this flow, so Google the Firebase to the WordPress REST API, back to Firebase, back to Google Home, we're gonna explore what each of the pieces does. So kinda like what we said, Google, inside Google you have to create the skill and set up the intents. So the intents, like I said, are what is the person actually trying to do when they've asked me a question or given me a speech input. So our skill is gonna be very simple. It's only gonna have one intent because all we wanna do is get the quote of the day. But for example, if you wanted to, you could build on their intent to say, give me the latest post or if you run a root commerce store, what are the items that are on sale? And then it would go hit the REST API and find items that were tagged on sale. Things like that. So you can have, if you're building on a more complicated skill, you can have multiple intents. And so Google is the one that handles turning what the person said into an actual text form of this is the intent, this is what they're trying to do. And once it does all that parsing, it passes it to Firebase Functions. Firebase Functions looks at the intents, it's okay, here's the intent, what code do I need to run? And in our case, it decides it needs to run the code that calls out to WordPress to get the quote of the day. You can pass other parameters with this. So in the example where I was looking for the last episode of a TV show, the actual series name of the TV series was a parameter. With the quote, we're not having anything in our speech that makes the response dependent on that. We're just asking for the quote. So we're not gonna have any additional parameters in this case. And then a bunch of code runs on the WordPress side, which we're gonna kind of gloss over. But what it does basically is sets up that endpoint where Firebase can look for the quote of the day and then take that back and start to prepare the response. So Firebase, once it calls out to WordPress, it waits for WordPress to respond with whatever information it's gonna give it back. And then it packages it up into a format that the device can actually understand and speak back out to us. So like I said, these devices are getting a lot better at kind of understanding how human speech works and speaking in a way that sounds closer to a human. If you just give it unformatted text. But if you need to speak in a certain way or with certain inflections or things, you can use what's called speech synthesis markup language, SSML. And it helps with things like cadence or interpretation. So it's very similar to XML where you can tag around words or items in your text to determine how the item's spoken out to the user. So for example, this is a block of SSML up here. And so if you just put one, two, three, four, five and had the device speak that out, it would speak out 12,345. But if you wanted to have it speak out the actual numbers individually, you can wrap it in this kind of say as tag and kind of modify the output. Same thing here. So this is maybe if you were coding a meditation skill or something like that, the device by default just reads it sentence after sentence after sentence and that's just how it is. But if you wanted to use it to take a deep breath, you can see then it will then pause reading for 200 milliseconds, which you can play with that timing there. And then it would read exhale and it would read step three right away. And then you see breath strength week, which means there'll be a little bit less of a space than a normal breath would be in there. And then it will say exhale again. So you can get like super granular with how you do these. This is one that I really like. This actually is a really creepy effect. We'll paste this into the browser so you can hear it. But effect whispered is one. So you can actually make with these devices whisper, which is really creepy. We're just gonna actually look at that real quick because every time it gets me. So we're just gonna take that. I still have this open up here somewhere. I'm pretty sure I closed it. Yeah, so. Yeah, so this is pretty cool. So because Polly can convert text speech, you can also just like do it live basically. So we're gonna put our ssml on here. And we're gonna see what she thinks about this. I want to tell you a secret. I am not a real human. Can you believe it? So super creepy. Would not recommend you use the whisper tag, but it's possible. And it's again, you know, you're controlling the inflection, you're controlling just how the speech is delivered to give it a more, I won't say human quality because that definitely wasn't that, but more variation we'll go with. Yeah, this is actually my favorite. You can wrap a word in an expletive tag and like it just like getting censored on TV, it will just insert the beep even though the word is still there. So you can say expletives without actually saying them. I don't know why you would do that. I haven't actually thought of a good use case for that, but the fact that it exists, I'm sure some developer was just having fun with that and eventually got pushed out to production. So we can try, let's try. You know, I should have expected somebody to ask me that. So let's go in here and we'll just say word, camp, Peoria has been right. And so then we got a, what do we have to do? Wrap this in a like that. Is that how you close it? How did I do that before? I think that's right. Let's see how we do. Word, camp, Peoria has been awesome. So there you go. That's an example of the expletive tag, which again, you could just insert a beep rather than having to force it to cover up a word, but you can do that if you want to. And you can see why it's one of my favorites because it's just kind of frivolous and fun. So let's look at a final demo. So over here we've got this WordPress site set up. We're calling it the daily profit because I'm a big Harry Potter fan. And in general settings, well this is huge, in general settings we have this quote of the day field, which basically we can just update. And when we update it and click save changes, our endpoint here, once we refresh it, will actually capture our changes. So that's all happening live. And the Google device is looking at that endpoint to determine the quote of the day that it reads out. So like we said, there are two ways to kind of invoke a skill. You can just invoke it by name without specifying an action, in which case it will read you out the welcome message that you've defined. And you can also, this would be helpful if there were slides behind me still, you can also open it and just right away give it something to do. So we're gonna try both of those and we're gonna cross our fingers once again because this was at lunch not working, so I was in here debugging. So we're gonna say, hey Google, open Daily Prophet. All right, getting the test version of Daily Prophet. Welcome to the Daily Prophet. You can ask me for the quote of the day by saying, what is the quote of the day? What is the quote of the day? It's thinking about it. Daily Prophet isn't responding right now. Try again soon. All right, we will try again soon. So that, so you can see that when I invoked it without a specific intent, it was actually, it gave me the welcome message that I had defined for that. But now let's try to invoke it with an intent. So, hey Google, ask Daily Prophet, what is the quote of the day? Can y'all see this? Oh, you can see this. Daily Prophet isn't responding right now. Try again soon. So I'm a little concerned as to why it's not responding, but we can dig into that in a little bit I suppose. So not as impressive as I'd hoped, but basically what it would do is it would respond with the actual quote that we were pulling from WordPress. I'm not gonna take a super long time to look at this right now because I don't think it's as exciting for you as it is for me, but we're gonna see why it doesn't think it's responding. Any questions while we're pulling this up? We've got a little more to look at, but. So the question was, is there a difference between creating something like this for Google versus Alexa? Yeah, stop. Thank you. So Siri in my experience has not been as open as far as allowing it to develop applications for it, which is a little frustrating because I feel like more people have access to that in their pocket than either of these. But Google and Alexa, basically the variance is in what languages they support. So if you use Lambda as the back end for it, it's JavaScript, Python, I think they support C sharp and Java as well. Google, we can actually look here. So you can, Lambda and Firebase are Amazon and Google respectively's serverless offerings. So you can use Firebase to back up Alexa skill if you want it to, just how we're passing a custom API to it. But the settings in here that we're setting up, they make it one click to use their product, you know what I mean? So it's just easier to link that sort of stuff if that's what you're trying to do. So yeah, so you can see here that Google supports node six, node eight, and then Python, but those are basically your options. Lambda supports a lot more than that. This is three, seven beta, which seems like not what I would have expected. Yeah, so, but yeah, again, you don't have to use any of these serverless things. If you're running a web server, you can just have the thing go straight to the web server and then that's it. So that's all it is, but yeah. Yes, question the back. Yeah. Yeah. So Amazon and Google handle that a little bit differently. The question was, what about kind of like namespacing? So if I have a same skill as named the same thing as someone else, especially with the term I want to use to invoke it. So Google at the moment just has everything in kind of a global namespace. So for example, when this skill at lunch wasn't working, I made a new skill. And of course I wanted to use the same name and it said no, like there's another skill that already uses this invocation. So that's a little bit weird. Like there's been, they haven't really figured out what to do with that yet. It's kind of just like kind of like domain names were in the early internet days and still aren't actually. But Alexa, for example, so if I want to put a new skill on Alexa, I have to go to the app in my phone and like enable it. So you can have five skills about cat facts and only the one that's actually enabled on your device will be the one that's triggered. So they do a little bit better. They make you go through the extra step of enabling a skill but it also prevents against kind of that naming collision a little bit because they don't validate the naming but you can only enable on your device like you can choose what you enable. So you can reduce collisions that way. Amazon puts it a little bit more on the user. Google just kind of says, no, we're not going to let you if someone's already done it that way. Yeah, anything else? I've gotten to the past the first step of debugging which is figuring out the problem. The problem is that I'm calling a library that it doesn't think it has access to which it did this morning. So yeah, so I don't know that we're going to be able to get this working but I'm happy to take other questions that we, yeah. Sure. Yeah, once you set up the link between WordPress and the actual skill itself then yeah, you can specify like if so, is that a custom post type or is that a tag or how is that kind of differentiated on the site? On the site. Right, okay. So you would have to differentiate it somehow. Yeah, so you can set up the skill to say, yeah, give me the last post that's tagged quarter of the day or give me the last post of this post type or whatever. And then once you set up the endpoint to show that post in this kind of JSON format, then yeah, you could feed it into a skill and it would work exactly like this one was supposed to. Or I can just create those. Yep, yeah. So then that would get a little more complex in the skill because when you were defining it, you would have to set up like, it would have to capture some of those words like rain from the person's input. But similar to the example that I was saying with like the TV shows, you can set up capture rules like that, absolutely. And say like, these are the key words I need to pull out and then in the skill itself say, okay, if you know rain is in there, then pull me posts that have been tagged rain or whatever, stuff like that. Yeah, absolutely. Or rain has been inspired I'm going to say. Right. And it could integrate with my salon software and know what they're going to do. Depending on what interface your salon software provides like to get data out of it. If there's an API to it, then yeah. But if it needs you to like go and log in and do all that. So that's going to be a, yeah, right. No, that's going to be a little bit harder. Yeah, yeah, yeah. Yeah, I mean to me it seems possible, which I know is arrogant to me to say with so little knowledge. But yeah, I mean, it seems like, you know, stuff like that with anything that basically has API access or can get data out in this format can be fed into the skill and parsed and things like that. So yeah, yeah, absolutely. And the example that I used in this same talk another time I gave it was we had a, like I said, we had a WooCommerce store. And so the two intents were, what are the items that are on sale? And then we assumed they had a physical store. So we said, what are the store hours? And then again, store hours was just a setting in WordPress that you could configure and then that was accessible through the device. Yes, sir. Sure. English spoken by someone in London, someone in Perth, someone in Mumbai. Yep, correct. So with the question is how does it deal with accents? So Google provides you an interface when you set up the device that you can train it against your voice in particular. So you can, you basically speak sample of text or certain phrases or certain sentences and that basically learns how to pick up like intricacies in your speech in particular. So that would help obviously a little bit. With Amazon, it's just that they've run it against so much speech that's not been all the same that it's kind of the model is generalized enough that it's pretty good to pick it up. So again, because it's not, it didn't ship on this device, the model's running in the cloud, like they're always making it better. And they're also adding support for more languages. The language support that's not English is pretty thin at the moment, but because they run it and manage it, they're adding support for all that sort of stuff. So yeah, yes. Yeah, so the question was, is this similar to what a chatbot would use? Yes, in the fact that a lot of that communication is capturing intent and keywords from a string and then passing it to some backend API and returning a specific response. The biggest difference is with a chatbot, you have to parse text instead of speech. And with these, you have to parse speech. But yeah, I wouldn't say that you could just take the code that I wrote for this and paste it into something else and make a chatbot, but the simulator tools that you use to test these skills inside Google and inside Amazon basically it shows like a smartphone you put in the text instead of speaking it out loud. So the interface is there, like the simulator itself is essentially a chatbot. And then once you are done simulating it, it goes to the device. Yeah, cool, so yes. Is there a way that you set it to where it'll let you know when something, when the sales change or a new sale is on so that I'm worthy? Because I might not know that sales have changed Sure. Sure. It's possible, I'm not, I haven't really thought about how like push notifications basically work with a system like this. What I would say is that what you could probably do is set up a flash briefing. So set up yourself as a source of news and then put out a post saying like, here's our new sales if you did it like once a week or something. And so then when you asked it what's in the news and say, oh, here's your flash briefing from and then whatever store you were you were and then that could be in there. And if you didn't have new sales, you just wouldn't put out a new post and it wouldn't update the feed and it would have the current old sales in there. But that's how I would try to do it at least like to get a version of it up and running. And then I would maybe have to explore how you would do push like push style notifications because I don't think there's an interface for that right now just because they don't want it to be like super invasive where anyone can like paying into anyone's house at any time just like say information about their business. So it's a little bit more difficult. Cool. So there's no other questions. We're going to try this again. I think I think, oh yeah, go ahead. Sorry. Sure. Yep. Yeah. So the question was right. So the question was the these devices can also store other information and even detect who is speaking to it. So if you have multiple people in your house you can train in on this is what my voice sounds like. This is what my husband or wife's voice sounds like. This is what my child's voice sounds like and then it can know. So for example, like Google will, if you ask like what items are on my calendar it will think about who said the request and then only give you your calendar items. So yes, if you have that extra kind of metadata set up that's also available when Alexa turns the speech into text. Like all that information is also in the object and if you write code to deal with that, then you can. My very simple example just drops all of that and just focus on what the intent is. But all of that metadata is there for sure. Yeah. Yes. Yeah. I don't know if the question was if you have a child who would you train Google's on that child's voice and then they grow up and their voice changes. How does that work? I don't know that these devices have been around long enough that anyone's tested that but I would assume at a certain point if it was a major difference you would just have to retrain it with whatever they sounded like at the time. Cause I know that it will accept some variance but like going through teenage years I don't think it will accept that much variance especially if it's a big difference. But yeah, I think maybe in five years that question will be better answered cause people will have gone through that and then we'll have actual data about what happens when a child grows up with one of these. Yeah. Yeah. Yeah. So I think they're just still too new to that for that to have been a solved problem but yeah. Cool. We're gonna cross our fingers again. Hey Google, ask the daily profit what's the quote of the day? Sure. Here's the test version of daily profit. The quote of the day is welcome to WordCamp Peoria 2018. Keenan Kappenhover. So Google doesn't play super nice with my last name but you can see that that's actually. Look at that. Oh. Can you see that? Stop. Thank you. Also a quick tip, when Google is done talking make sure you tell it that this conversation is over so it doesn't do that. So this is kind of a bland quote. Let's put up something a little more a little more inspirational. This is the daily profit after all. Need some Dumbledore quotes going on. Let's see. Anyone have a favorite? Any Harry Potter fans out there? On this where I am, I'm gonna go with, yeah. Ah, okay, sure. That's fine, we'll do that. So we'll go in here. Oh no. Oh, all right. Nice. Y'all are getting some insight into my work process here. Is there a that in there or no? And then who are we attributing this to? I can't remember. I'm revealing my not true fandom. Huh? You guys are giving me a lot of spelling challenges here today. Maronners map. Right? Right? Okay, we're gonna see how it deals with that and see how we did. So we see that as soon as we update the setting and the page actually refreshes then we have the new quote here on the API side. So then we can ask again, hey Google, ask Daily Profit what's the quote of the day? Okay, let's get the test version of Daily Profit. The quote of the day as I solemnly swear I am up to no good. Maronners map. That was pretty good. And so you can see that it takes the speech, turns it into text, passes it to where we determine the intent, which then hits WordPress and it comes all the way back up the chain and you get the quote of the day. Stop. The quote of the day. It's gonna parse that whole thing. Hey Google. Stop. And that's the talk, thank you very much. Thank you.