Check out the Issue Explorer
Looking to fund some work? You can submit a new Funded Issue here.
Commissulator has a CalendarEvent model that is a pipeline for syncing various agent calendars from Calendly and Follow Up Boss to Microsoft and Google, respectively. Microsoft and Google are then synced by a flow from Microsoft Flow, which has its own limitations.
The Follow Up Boss connection was built with Watir to drive a Chrome browser, interact with forms and autocompletes, and either scrape or submit events. However, an API endpoint was discovered that made this system obsolete for now. The app connects to that API, the Google Calendar API, and has a partially-working OAuth client for the Microsoft Office 365 API. That client is getting auth tokens and refresh tokens, but the access tokens haven't worked for me yet to view the calendar data.
I haven't yet implemented the Calendly API and don't know if or when we'll need to, since Calendly drops events in Outlook and I have title parsing in effect that makes them compatible with our client list in Follow Up Boss. We don't currently have client lists in Microsoft or Google. The Calendly API functions through webhooks, and seems fundamentally read-only, but it will communicate with Microsoft to prevent double-booking as long as we can keep Outlook in sync.
The goal is to get Follow Up Boss in sync with Office 365 and Google. When an event is created in one it should appear in the other (this currently works), and when an event is updated, the updates should be propogated across (this is not currently built but I have primary keys for each event from both APIs, Google and Follow Up Boss, that are currently implemented).
Note, Events in the Follow Up Boss API are a different model related to client touchpoints. The events we're adding to calendars are in their undocumented endpoint called Appointments. They also add Tasks to the calendar in a similar fashion. I received the signature for attributes on this endpoint by analyzing Ajax requests made by my browser while accessing and editing the calendar on their site, which I think is React.
To summarize what I think this job will take, you will start by reviewing my OAuth code for Microsoft's Graph API and getting that to deliver data instead of auth errors. Then implement a way for events to notice when they are changed or deleted, and callbacks to send those updates to the other two calendars.
The task will involve you setting up a staging account with Microsoft, one with Follow Up Boss (they give 14 day trials), and one with Google (you'll be able to specify a calendar by id for each agent in the system, those can all live on any Google account you like). You'll also use Heroku to test the cron jobs that keep everything in sync, although that might be just pushing to an instance that I already have running for QA.