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.
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.
For this project, I've gone with an entirely serverless workflow as outlined below:
- 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]
- Create pinpoint project with dedicated number for two-way SMS
- Install SAM
- Create SAMUser IAM User with Admin permissions
- Add AWS Credentials for SAM
- Run:
./gradlew shadowJar
sam deploy --guided --parameter-overrides PinpointAppIdParameter=<App Id> PinpointDedicatedNumberParameter=<number> PinpointKeywordParameter=<keyword>
- Add the SMS Topic as an event source for Pinpoint SMS
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.