We were inspired by the Google Home technology made available to us by the hardware lab. We found it very fun and intriguing, and thus decided to make use of it in our hack. Our hack was a logical outcome of the capabilities of Google Home, namely its voice-to-text and voice commands, as well as the data made available by Hamilton Opendata.

What it does

Hamilton of Fun is a Google Home assistant tool and website which enables users to quickly learn about nearby locations of interest in Hamilton. Using the Hamilton Opendata database, Hamilton of Fun is able to formulate a list of nearby attractions, provide descriptions of these locations, tell the user how far away they are, as well as provide them with the addresses. By being both a website and a Google Home assistant tool, it is able to provide both easy online access, as well as being able to respond to voice commands.

How we built it

The Google Home component of Hamilton of Fun was made with use of Google's Firebase Cloud functions. It allows us to run our run code on the cloud without use of a local server and deploy code to the Google Assistant using webhooks. It is the most integral part of our app's functionality. Actions For Google, Dialogflow, and Firebase Cloud Functions form the core of the Google Assistant app. Firebase Cloud Functions allows us to deploy node.js/Javascript code, which Dialogflow uses for Fulfillment. Dialogflow handles the voice recognition and communication through intents and conversation. The website component of Hamilton of Fun was made using HTML, JavaScript, and CSS. Javascript was used to process the JSON data regarding locations of interest in Hamilton from Opendata. By using the Navigator geolocation services, we were able to find the location of the user and determine the nearby attractions. On the Google Home, the location can easily be found if location services are turned on and Google Home is given the permissions.

Challenges we ran into

Some challenges we ran into include:

  1. Finding an appropriate task that used Google Home. As it was our first time using Google Home, the task had to interesting but relatively simple. We chose to make a location finder because we wanted a simple hands-free way of finding nearby locations.
  2. Getting Google Home to work. Google Home has many connectivity issues with the public wifi. Interpreting the documentation and learning how to use some of its functionality was difficult. We ended up using a laptop hotspot to connect Google Home to the internet (although it is still unreliable)
  3. Giving the Google Home the data was also difficult. We used both firebase and github to store programs and data, and communication between the two proved to be challenging. To solve the problem, stopped using firebase databases (but still used other firebase functionality), instead using a fetch request on a JSON present on our Github.
  4. The multipart nature of Google Assistant made troubleshooting and debugging difficult. Errors in the testing simulator for Google Actions were often vague and often required refreshing and reading Firebase logs in order to identify issues, and each new deployment, even for the smallest changes, would take a couple minutes.

Accomplishments that we're proud of

We are very happy that we were able to use Google Home for the first time! Learning to use voice commands was frustrating but also very rewarding. Reading the data between Github and firebase let us learn how difficult it can be to transfer data between databases. Additionally, formatting the website using css was very satisfying.

What we learned

We learned:

  • How to use Google Home and develop custom actions for it
  • How to use css and javascript to make a website interactive and organized
  • How to access data structures like JSON using Javascript

What's next for Hamilton of Fun

  • Multilingual. Many visitors may not have English as their first language. Making it multilingual will improve accessibility to many people
  • Expansion to other cities. Many cities have some sort of database but no simple access to it.
  • Using services like Google Maps to provide directions to points of interest.

Built With

Share this project: