Expose Calendar APIs in Alexa SDK
Expose Calendar APIs in Alexa SDK. We are building a voice enabled assistant for real estate agents. We would like the skill SDK to expose calendar-related api's. We are assuming you must have such an API internally to abstract support for multiple calendar providers.
We really like the built-in calendar support that is provided using your direct calendar linking feature. However, we can't use it. We chose to build our own calendar access into our skill to access google calendar API's programmatically, rather than using Alexa's built in calendar linking. The reasons we took this approach are:
1) We integrate calendar appointment information with other data from backend system api calls into one intent. An example is our Start My Day intent, which summarizes, the real estate agent's appointments, then summarizes the number of active listings, # of pending closings, etc.
2) We want consistency with our VUI. With direct calendar linking, they would simply speak to Alexa directly rather than using our invocation name. We don't want to frustrate the agent with a game of simon-says by forcing them to sometimes have to say the invocation name and sometimes not.
The downside of our approach is as follows:
1) As we add support for other calendars e.g. Outlook/Office 365, Apple, Amazon WorkMail we will have to implement a new api each time. If you exposed a single calendar API abstraction to the SDK then we could code it into our skill once and then let the right calendar get invoked based on what is linked.
2) The built-in Echo Show display support for a direct-linked calendar is pretty compelling. We could not emulate that UI with previous versions of the SDK, for example we couldn't do that particular layout with the dates on the left column and scrolling text in the center with the highlight that follows the text as it is spoken. We could build all that ourselves with APL, but we would rather leverage the support that's already there than build it ourselves. if there were a way to hook into the calendar API through your SDK and let the built-in layout manager take care of the rendering and scrolling.
Alternatively, if there were a way for our skill to delegate an utterance to the default alexa calendar processor, then our users could still use our invocation name for consistency's sake, but in our appointment handler if we could hand that off to Alexa for the calendar that's already linked directly that would be awesome.
Caleb Gates commented
Calendars are hot but duplicating development efforts is not. We tried to train users to just not say our invocation name if they want to use the calendar but that only confuses them because they don't have the same grasp on the "levels" of Alexa ("Alexa Core", "In a skill", "Native features", "Custom Development Features"). If we could access their linked calendars within our skill we could avoid custom account linking, a separate account linking website for our skill, and loads of confusion on the part of our user. This would allow us to spend our time and money improving the voice eco system in other ways.