Create a custom React hook to mimic class component's setState behaviour
I have been playing around with react hooks recently, and slowly wrapping my head around how they work. Hooks are a great way to create reusable functionality, but there are some instances where I...
View ArticleUsing the Microsoft Search API (preview) to query SharePoint content
The new Microsoft Search API (preview) has been available in the Graph beta endpoint for a while now. If you haven't had a chance to look at the API yet, the docs explain it quite nicely: "The...
View ArticleUsing .NET Standard CSOM and MSAL.NET for App-Only auth in SharePoint Online
So after long last, the .NET Standard version of SharePoint Online CSOM was released yesterday! The official announcement can be found here:...
View ArticleMicrosoft Teams Bot Framework: Mention a user in an Adaptive Card
Microsoft Teams announced support for Adaptive Cards 1.2 recently. With that, a nifty feature to allow mentioning users in Adaptive Cards posted in Teams was also introduced. This allows us the ability...
View ArticleMicrosoft Teams messaging extensions using SPFx: Getting the message data...
With SPFx 1.11, one of the things possible now is that SharePoint Framework web parts can be exposed as Microsoft Teams messaging extensions. So what are messaging extensions exactly? According to the...
View ArticleMicrosoft 365 multi-tenant apps: Working with application permissions in...
Creating multi-tenant (SaaS) apps in Microsoft 365 has been possible for a while now. Azure AD multi tenant apps allow us to host our custom applications in an Azure AD/M365 "home" tenant while...
View ArticleBuilding a Microsoft Teams bot for AppSource: Posting an Adaptive Card...
In November 2020, I was happy to release my side project "Snooze Bot" as a free app on the Microsoft Teams store: https://appsource.microsoft.com/en-us/product/office/WA200002297 I had been working...
View ArticleWorking with Adaptive Card Universal Actions in a Microsoft Teams Bot
Universal Actions for Adaptive cards are a mechanism to handle user interactions uniformly no matter where the user is accessing the Adaptive Card from. It allows Bot developers to send the same...
View ArticleWorking with MSAL and multiple Azure AD accounts in a React SPA
I came across an interesting scenario recently: I was working with a React SPA which used Azure AD for authenticating users, and it needed to work with multiple accounts logged in simultaneously....
View ArticleBuilding a Microsoft Teams Bot: Deep linking to a Teams message from an...
This is the second article in my "Building a Microsoft Teams Bot" series. In this series, I am planning to write down some interesting things I came across while creating a Microsoft Teams Bot app...
View ArticleInteractively authenticate Microsoft Graph .NET SDK with Azure Identity library
In this post, we will have a look at the new recommended way of using the Azure Identity library to authenticate to the Microsoft Graph .NET SDK. Specifically, we will have a look at Interactive...
View ArticleBuilding a Microsoft Teams bot: Sending custom data from an adaptive card...
This is the third article in my "Building a Microsoft Teams Bot" series. In this series, I have written down some interesting things I came across while creating a Microsoft Teams Bot app which is now...
View ArticleWorking with Apps for Microsoft Teams meetings
Microsoft Teams meetings extensions or "Apps for Teams meetings" are the newest entry in the Microsoft Teams extensibility story. They can be used to build custom experiences right into the meeting...
View ArticleWorking with the Microsoft Graph communications API in a Microsoft Teams...
Following up on my previous post about Microsoft Teams meeting apps, let's now have a look at how we can invoke the Microsoft Graph in our meeting app. Specifically, we will be using the Microsoft...
View ArticlePartially update documents in Azure Cosmos DB
I have been working with Cosmos DB for a while now and until recently, there was one thing which always annoyed me: When updating a JSON document stored in a container, there was no way to only modify...
View ArticleBuilding a custom Microsoft Teams tab: Show a native loading indicator
When building a custom Microsoft Teams tab with Teams manifest v1.7+, there is an option to natively show a loading indicator in Teams before our app loads. This can be helpful if your app needs to...
View ArticleBuilding a Microsoft Teams app: Posting a message to Teams on behalf of the...
If you are building a Teams app and want to integrate with Teams channel messages, this post will be helpful to you. Specifically, we will be looking at posting a Teams channel message, from the app,...
View ArticleChat with your user directory using OpenAI functions and Microsoft Graph
Ever since OpenAI function calling was released, I have been incredibly fascinated by it. To me, it is as big a game changer as ChatGPT itself. With function calling, we are no longer limited by the...
View ArticleConnect an OpenAI chat bot to the internet using Bing Search API
In the previous post, we saw what is OpenAI function calling and how to use it to chat with your organization's user directory using Microsoft Graph. Please have a look at the article here: Chat with...
View ArticleTeams tab fails to load in the new Microsoft Teams Desktop client
The new Microsoft Teams Desktop client was made generally available for Windows and Mac recently. The good news is that the new client provides feature parity for 3rd party apps like Focusworks AI...
View ArticleManage Azure OpenAI Service using the Azure CLI
I was working on a project recently where we were using the Azure OpenAI service quite heavily. As part of creating the DevOps pipelines for the project, we had to look into automating the management...
View ArticleUsing Microsoft Tokenizer to count Azure OpenAI model tokens
If you have been working with OpenAI APIs, you will have come across the term "tokens". Tokens are a way in which these APIs process and output text. Various versions of the OpenAI APIs have different...
View ArticleGet structured JSON data back from GPT-4-Turbo
With the latest gpt-4-turbo model out recently, there is one very helpful feature which came with it: The JSON mode option. Using JSON mode, we are able to predictably get responses back from OpenAI...
View ArticleGenerate images using Azure OpenAI DALL·E 3 in SPFx
Dall E 3 is the latest AI image generation model coming out of OpenAI. It is leaps and bounds ahead of the previous model Dall E 2. Having explored both, the image quality as well as the adherence to...
View ArticleCreate a Microsoft 365 Copilot plugin: Extend Microsoft 365 Copilot's knowledge
Microsoft 365 Copilot is an enterprise AI tool that is already trained on your Microsoft 365 data. If you want to "talk" to data such as your emails, Teams chats or SharePoint documents, then all of...
View Article