I added a hidden Umbraco Form on the page and used the magic string {member.id} in a hidden field, then used jQuery to grab the member ID and called .ajax() to make a GET request to my Function App.
Where Does the Data Come from?
While I was initially calling the Eventbrite API to get events, I realised I needed to query the events differently for the public and member feeds, while also keeping in mind that I’ve already experienced a lockout from my Eventbrite account due to API overuse.
Therefore, this Function App does a query to the CosmosDB collection mentioned above. I have a library for this! The coincidental side effect of this approach is that I could perform some more complex queries in the future.
Attendee Registration Notification
The session list links off to Eventbrite, and that’s where all the booking/registration occurs. So how does the Uno Member know if someone signed up to their session?
Eventbrite has webhooks, which for me meant writing an HTTP-triggered Function App to act. To test locally, I used ngrok to accept the webhook. My Function App, in this case, hits the Eventbrite API to get more info, then outputs to CosmosDB. Finally, Sendgrid is used to send a notification to the member with details about the attendee.
What's Not Possible with Uno?
Let’s recap.
It’s clear, based on my experimentation, that you can:
- Perform CRUD operations via Umbraco Forms workflows and Azure Function Apps,
- Query via javascript calls to external data feeds.
But I have almost reached the limit of what is possible via javascript, Umbraco Forms, and Function Apps.
My wish list for Uno:
- I would like to add some new properties to members, and perhaps their images, and be able to post that data via the Umbraco Forms.
- I would also really like to programmatically control content, members, and media (be able to create, edit/update, publish/unpublish, and delete Umbraco nodes).
- I would love it if the Umbraco Heartcore API was integrated into Uno.
For the last one, I created a feature request.
Final Thoughts
Umbraco Uno is a slick website experience for your end users. The backoffice follows some known structural doctype patterns, so overall it is a typical Umbraco editor experience. Changing the theme and finding my way around was quite easy. Adding content is a breeze, and the Block Widget editor really makes adding content a joy.
Complex integrations can be accomplished by pushing functionality off to external services, and I think that I have pushed Uno to the near-limit of how it can be extended. At this time, there is no way to programmatically control Umbraco content, members or media in the standard Uno setup. If this happens, then the sky’s the limit for Uno.