Photo of Cinderella Castle 50th Anniversary, Magic Kingdom by Craig Walls
Photo of Cinderella Castle 50th Anniversary, Magic Kingdom by Craig Walls

Alexa Goes to the Magic Kingdom

Testing the MouseGuests Skill Inside the Park

Craig Walls
5 min readJul 18, 2022

--

https://pragprog.com/newsletter/

As many of you already know, I’m a big fan of Disney parks and try to visit Disneyland and Walt Disney World at least once every year. And, as you most likely also know, I’m a big proponent of developing voice applications, especially for the Alexa platform. Let me tell you how I’ve brought these two very different interests together.

I recently returned from a trip to Disney World where, among other things, I had a chance to do a “boots on the ground” test of an Alexa skill that I’ve been working on for nearly two years. The skill, called Mouseguests, aims to give useful and interesting information about the U.S. Disney parks, including:

  • Park hours
  • Current attraction wait times
  • Countdown until your next Disneyland or Disney World trip
  • Food and drink locations
  • Park services locations (like first aid, ATMs, and restrooms)
  • Lightning Lane availability (formerly known as FastPass)

You can use it to ask questions like “Alexa, ask MouseGuests what is the wait for Haunted Mansion?” or “Alexa, ask MouseGuests what time does Epcot open tomorrow?” If you are actually in a Disney park, you can ask questions like “Alexa, ask Mouse Guests where is the nearest restroom?” or “Alexa, ask Mouse Guests where can I get a churro?”

One of my original goals when developing this skill was to create a useful voice application that works great anywhere, whether you’re at home or actually in a Disney Park. Of course, nobody is going to be carrying an Echo Dot with them to the parks, so it showcases the value of on-the-go devices such as Echo Buds, Echo Loop, Echo Frames, TalkSocket, the Voice in a Can app, or just the Alexa app on iPhone or Android.

For my test, I used the Alexa app on my iPhone 13 Pro, with the Alexa widget on the home screen for easy access. I was hoping to have a TalkSocket before my trip, but sadly those are still delayed (fingers crossed for my next trip, though). I could have also used the wonderful Voice in a Can app on my Apple Watch, but I’ve noticed that sometimes my watch goes to sleep mid-response (I don’t think it’s the app’s fault, but just the behavior of the 3rd generation of Apple Watch).

So, how did this on-the-ground test go? I’m pleased to report that it went remarkably well. Even in high noise areas where I had trouble hearing what Alexa said in response to my queries, Alexa had virtually no trouble understanding what I was asking. Even when I couldn’t hear Alexa, I was still able to read the responses from cards pushed from my skill into the Alexa app. Here are a few examples of those cards and how they displayed on my phone:

What’s more is that I actually found it useful for real questions I needed answered, including:

  • “Where can I get a bottled water?”
  • “Where can I get a Powerade?”
  • “Where is the nearest churro?”
  • “Where is the nearest restroom?”
  • “What is the wait for Slinky Dog?”

But were there any problems? Admittedly, there were a few problems…

  • Location. The skill uses geo proximity to find locations nearest to the user. This method is fine in most cases, but isn’t ideal in others. For example, while standing near Carousel of Progress in Tomorrowland, I asked where I could get a Powerade. The skill recommended a location in the Town Square area near the entrance to the park. If you know your way around the Magic Kingdom, you realize that although that is technically correct “as the crow flies”, it’s not the nearest location “as the user walks”. I knew this might be an issue when I developed it, but geo-proximity is a much easier problem to solve than path-based proximity, so I punted on it.
  • Special characters. In the displayed cards, ampersands were showing in their escaped form. For example, “Storybook Circus Popcorn & Ice Cream Cart” was displayed as “Storybook Circus Popcorn & Ice Cream Cart.” I’m pretty sure that this will be an easy fix.
  • Answer precision. On one occasion, I asked about bottled sodas and it directed me to a location that serves only fountain sodas. This is a simple data fix that will be super-easy to correct.
  • Similar-sounding words. On one (and only one) occasion, I asked about the nearest restroom and the skill offered me the nearest restaurant. Just a simple misunderstanding. To account for this, I have other utterances to cover that case more specifically such as saying “I need to pee” which will also find the nearest restroom.
  • Gift shops. With regard to bottled sodas and water, I also realized that many of the souvenir and gift locations offer cold bottled drinks, but aren’t included among the food locations in my data. I need to add those locations to the data.

All in all, this was a great test of my Alexa skill in the environment where it provides the most value. I’ve still got a bit more work to do to tidy up some of the loose ends and gotchas listed above, but I hope to push a new version soon for a broader audience to use.

🔊 Although this article hasn’t been very technical, there are a lot of interesting technical details that went into creating this Alexa skill. I’m thinking about creating a series of videos showing how I did it. If you’d like to see videos about the making of the skill, let me know by leaving a comment or pinging me on Twitter (@habuma). I’ll use your feedback as motivational fuel as I create the videos.

Be sure to pick up my book, Build Talking Apps for Alexa, which covers a lot of the stuff that went into the development of the MouseGuests skill. And please share this with anyone you know who might find it interesting.

If you enjoyed this post, you might also enjoy Build Talking Apps for Alexa by Craig Walls, now available in beta from The Pragmatic Bookshelf:

In honor of the Alexa Live 2022 event, you can use promo code ALEXALIVE2022 at checkout to save 35% on the ebook through July 22nd.

--

--