Skip to main content

Welcome TADHackers!

SignalWire Hackathon Dev Guide


Event Details


TADHack Open 2024 took place on March 23-24 of 2024 on the West Campus of Valencia College, and worldwide through remote entries.

🎉Thanks for participating!

TADHack Open 2024 was a blast. Congratulations to Team Jazz for their winning submission, Jazz Health Assistant!

Learn more about the hackathon, including runners up and project details, in this post on the TADHack Blog. Then, watch the hack presentations in this YouTube Playlist.


1. Get started with WireStarter


WireStarter is a Docker container which sets up the SignalWire SDKs and builds a development and testing environment for new developers.

Before following the below steps, please complete the following prerequisites:

The script we run in step 3 will ask for your SignalWire Space ID, SignalWire Project ID, SignalWire Project Token, ngrok Token, and ngrok Args (optional - mostly for custom domains), so make sure you have that information handy by opening the SignalWire 'tokens' page and the ngrok 'Your Authtoken' page.

Repeat these instructions anytime you need to start WireStarter again.

1. Start Docker Desktop

Docker must be running at the start of the process.

2. Download and install WireStarter

WireStarter has been updated recently. If you've used WireStarter before, be sure to delete the previous version and reinstall the latest version of the container.

docker run -it -d --rm --name wirestarter briankwest/wirestarter

This Docker command downloads and installs WireStarter (if it isn't already installed). It then runs the container in the background and automatically removes it on exit.

3. Configure WireStarter with SWSH

This command starts a terminal UI which will prompt you for relevant IDs and tokens. It will walk you through configuring the development and testing environment so you can quickly deploy and test our example applications. It then automatically enters SWSH (SignalWire Shell), the official SignalWire CLI.

docker exec -ti wirestarter bash 
A screenshot of the WireStarter interface. The user is prompted to enter their SignalWire Space domain.
WireStarter guides you through setting up a local development environment.

When prompted, select your preferred editor: nano, vim, or emacs. We recommend nano for beginners.

Copy the SignalWire Space ID, Project ID, and Project token from the API pane of your SignalWire Dashboard. Copy the ngrok Token from the Your Authtoken ngrok page. ngrok Args are optional and only needed if you want to use a custom ngrok domain name. If not, leave the text field blank and proceed.

4. Buy and set up a phone number

After entering the SignalWire and ngrok information in the previous step, you will enter the SWSH CLI.

A screenshot of the SWSH terminal.

Purchase and configure a phone number using the phone_number command.

Enter help or help -v to view more options for SWSH.

You can also purchase a phone number in the Web UI in your SignalWire Space.

Screenshot of a purchased phone number.
Viewing purchased phone numbers in the SignalWire Dashboard.
Name your numbers!

Phone numbers purchased in the Dashboard UI must be named before being assigned to these demos. Any name will work — just edit and save the populated number as its own name. Numbers purchased in SWSH are not affected by this limitation.

Once WireStarter is successfully configured, enter the exit command, or press ctrl-C once, to exit SWSH.

5. Run setup.sh

From the same bash prompt, run setup.sh and select a demo.

Follow the instructions to assign a phone number and finish setup.

If you encounter any problems using WireStarter, please let us know by reporting an issue on its GitHub repo.

You can also get live support in the Community Slack, or by emailing devex@signalwire.com.

Screen recording of the setup script.
Starting setup.sh from SWSH.



2. Try out a demo


SignalWire's AI Agents are excellent customer interfaces for systems that involve creating and managing reservations, appointments, and calendar items. Consider the following potential applications, and then go create something even cooler!

Serverless

Try out the following serverless examples in the Dashboard of your SignalWire Space. Navigate to the Relay/SWML sidebar item and the SWML Scripts tab, and follow these instructions to link your preferred SignalWire number to the demo.

These examples are written in Perl.

💐 Flo's Flowers 1.0 Low-Code

  • Send an SMS e-card with an image url to a user's phone number. Flo will give four flower options to choose from to send. The user can include a message with the flower image.

☎️ Thermal Thrillers Moderate

  • An interactive digital employee capable of taking messages and performing related tasks after hours at an HVAC firm.

☔️ Weather Bot Low-Code

  • Uses the OpenStreetMap API to fetch longitude and latitude values based on the provided city and state. The bot then uses these coordinates and the Weather.gov API to retrieve the requested weather details.

Server

The examples listed here are written in Perl. The AI-cal demo is available in both Perl and Node.js versions.

📅 AI-cal Moderate

  • AI-cal is an AI phone assistant that integrates with the Google Calendar API to add events to your Google Calendar. AI-cal uses Google Calendar's API to manage calendar entries based on user input, and OAuth2 for authentication with Google services.
  • The freebusy function checks calendar availability, and the events function schedules events.
  • The application is structured around the PSGI specification, employing Plack::Builder to route HTTP requests to the appropriate handlers. This enables basic authentication, and managing user sessions and database connections for storing OAuth tokens and user information.

🌡️ ESP8266 Temperature & Humidity Sensor Bot Advanced

  • Ziggy is a digital employee that can interact with a ESP32 and DHT11 temperature sensor to give the temperature and humidity values from the ThingSpeak API.

🍽️ Bobby's Table Advanced

  • Bobby is a digital employee who performs comprehensive reservation management tasks for a busy virtual restaurant. Bobby can check for available dates and create a reservation based on date, time and party size.
    Bobby is also capable of moving, cancelling, and altering reservations. This example also uses the SignalWire MFA API to send a 6 digit code via SMS.

💐 Flo's Flowers 2.0 Moderate

  • Flo's Flowers 2.0 can send an SMS e-card with an image of any type of flower now. Just tell Flo what kind of flowers to send.

🔐 MFA Moderate

  • This digital employee is able to send a 6 digit code via SMS, and verify the 6 digit code with SignalWire's MFA API.

🤵 RoomieServe Advanced

  • Roomie Serve is a digital assistant designed for use in hotels and hospitals, aimed at enhancing the efficiency and accuracy of room service orders. Roomie Serve interfaces with a menu inventory database to facilitate the creation of room service orders.

🌐 Zen Advanced

  • Zen is a digital employee for a mock cable company who performs Tier 1 support for cable modems. Zen can authenticate a customer using their account number and CPNI (Customer Proprietary Network Information). Zen can also give speed test results, swap a modem, and give modem levels with mock data from a database connection.


3. Build the next big thing


Cash Prize! 💰

$2000 for the best hackathon application built with SignalWire products


SignalWire will evaluate all TADHack Open 2024 entries and select one winner, who will recieve a $2000 cash prize.

Rules

  • Participants must follow all hackathon rules relating to participation, teams, and submission.
  • Entries must be original and participants must be able to demonstrate that the project was completed within hackathon time constraints.
  • Entries must use at least one of SignalWire's core products:
🤖 AI 💬 Chat 📱 Messaging 🔐 MFA 🧑‍💻 Video 📞 Voice 📄 SWML 📠 or even Fax!

Contact

Have questions for SignalWire? Find us at the hackathon, visit us at Enterprise Connect, join the Community Slack, or drop us a line at devex@signalwire.com.



4. See you at Enterprise Connect!


Find the SignalWire booth (number 208) in the AI Innovation Zone at Enterprise Connect at Gaylord Palms in Orlando, Florida.

Map showing the SignalWire team in booth number 208 in the 'AI Innovation Zone' at Enterprise Connect.
Map showing the SignalWire team in booth number 208 in the 'AI Innovation Zone' at Enterprise Connect.

Made with ❤️ by SignalWire's DevEx team

Have feedback on this site? Drop us a line at devex@signalwire.com or say hi on the Community Slack.