FrancisBaileyH / HiveSessionAgent

An SMS Chatbot for receiving alerts about newly available climbing sessions at the Hive

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Hive Session Agent

*New Announcement

Base5 climbing gyms are now supported. The codebase has been refactored to support multiple facilities and includes a new ListLocations command as well as more enhanced error responses.

About

The Hive is a popular set of climbing gyms located in the greater Vancouver area. Since COVID-19 started, all climbing sessions must be reserved through a booking system. Often times, the more popular gym sessions will book up immediately or require you to monitor for a session to open up.

As a result, I've create the "Hive Session Agent". It's a basic SMS chatbot that enables you to create alerts for climbing sessions at the Hive. When you create an alert, you'll be notified within 10 minutes if an opening appears. It can also be used to set a reminder for future climbing sessions that aren't available for booking yet.

snapshot

Architecture

For this project, I've gone with an entirely serverless workflow as outlined below: snapshot

Milestones

  • Hive Schedule Polling [DONE]
  • Hive Session Notification [DONE]
  • Hive Session SMS Alert Creation [DONE]
  • Hive Session SMS Allow List [DONE]
  • Add ListLocations command [DONE]
  • Support Base5 climbing gyms [DONE]

Setup

Pinpoint

  1. Create pinpoint project with dedicated number for two-way SMS

Infrastructure

  1. Install SAM
  2. Create SAMUser IAM User with Admin permissions
  3. Add AWS Credentials for SAM
  4. Run:
./gradlew shadowJar
sam deploy --guided --parameter-overrides PinpointAppIdParameter=<App Id> PinpointDedicatedNumberParameter=<number> PinpointKeywordParameter=<keyword>
  1. Add the SMS Topic as an event source for Pinpoint SMS

Allow Listing

By default allow listing is enabled for SMS. Allow list numbers by adding them to the SMSAllowList DDB table or adding an environment variable: SESSION_AGENT_ALLOW_LIST_ENABLED to false for class SmsResponderBotLambda.

About

An SMS Chatbot for receiving alerts about newly available climbing sessions at the Hive


Languages

Language:Kotlin 100.0%