Office 365 Integration Strategies: Ins and Outs
Unlock the power of Office 365 integration with expert guidance from Paul Schaeflein. Explore connectors, webhooks, Adaptive Cards, developer portals, and more. Learn how to inject data into conversations, configure connectors for Teams, and leverage webhooks for seamless integration with systems like GitHub, Visual Studio Online, and more.
Download Presentation

Please find below an Image/Link to download the presentation.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.
You are allowed to download the files provided on this website for personal or commercial use, subject to the condition that they are used lawfully. All files are the property of their respective owners.
The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author.
E N D
Presentation Transcript
INS AND OUTS OF OFFICE 365 INTEGRATION STRATEGIES FOR YOUR SYSTEMS
Paul Schaeflein Enterprise Architect, DMI Developer / Mentor / Trainer Microsoft MVP Office Development Co-host Microsoft 365 Dev Podcast
Agenda Ins Connectors Outs Webhooks Question and Answer
Ins Ins Connectors Connectors
Connectors for Groups and Teams Inject data into conversations Group connector Outlook conversation Team connector Team conversation Data in cards Actionable messages Outlook connector has Connect to Office 365 capability
Adaptive Cards Fixed schema https://adaptivecards.io Content containers Column Set Fact Set Image Set Text formatted with Markdown Actions Different supported actions based on host
Demo Configure connector for Teams
Connector Developer Portal Register connector for multiple tenants Get snippet for web page Connect to Office 365 button <a href="https://outlook.office.com/connectors/Connect ?state=myAppsState &app_id=a3c4ef20-68aa-42e1-b037-f75624dacf21 &callback_url=http://localhost:3000/callback"> <img src="https://o365connectors.blob.core.windows.net/images/ConnectToO365Button.png"></img> </a> Publish to catalog (pending review)
Understanding WebHooks Understanding WebHooks
Understanding WebHooks Callbacks for the web Functionally equivalent to SharePoint Remote event Receiver
Who is using WebHooks Github Visual Studio Online Azure IFTTT Slack PayPal Many more
WebHooks flow Create a subscription Attached to a resource (typically a container) Expires must be renewed via Microsoft Graph three days minus 90 minutes (4230 mins) via SharePoint six months Provide a notification URL Must be accessible from the internet Proxy tools are your friend http://ngrok.com Must be validated
WebHooks validation Your notification url will receive a POST POST https://<host>?validationToken=<token> Return the token with a 200 response HTTP/1.1 200 OK Content-type: text/plain Content-length: ## <token>
WebHooks in Office 365 WebHooks in Office 365
WebHooks in Office 365 via Microsoft Graph: Users Messages / Events Contacts Groups / Group Conversations (Group.Read.All) Drive Root Items Consumer (requires Files.ReadWrite permission) Business (requires Files.ReadWrite.All permission) SharePoint Lists (Libraries are actually OD4B)
Notifications Each service defines a different payload Outlook Provides ID of message use that to retrieve message OneDrive Provides ID of container (folder) Use view.delta verb and store sync token SharePoint Provides ID of web / list Call GetChanges() and store change token
Notification Payload (Outlook) { "value":[ { "id":"7f105c7d-2dc5-4530-97cd-4e7ae6534c07", "expirationDateTime":"2015-11-20T18:23:45.9356913Z", "clientState":"subscription-identifier", "changeType":"Created", "resource":"Users/<id>/messages/<id>=", "resourceData":{ "@odata.type":"#Microsoft.Graph.Message", "@odata.id":"Users/<id>/messages/<id>=", "@odata.etag":"W/<etag>", "Id":"<id>=" } } ] }
Demo Create Subscription and show notification https://github.com/microsoftgraph/aspnet-webhooks-rest-sample
Notification Payload (SharePoint) { "value":[ { "subscriptionId":"91779246-afe9-4525-b122-6c199ae89211", "clientState":"00000000-0000-0000-0000-000000000000", "expirationDateTime":"2016-04-30T17:27:00.0000000Z", "resource":"b9f6f714-9df8-470b-b22e-653855e1c181", "tenantId":"00000000-0000-0000-0000-000000000000", "siteUrl":"/", "webId":"dbc5a806-e4d4-46e5-951c-6344d70b62fa" } ] }
Reading the SharePoint ChangeLog Get changes for container List.GetChanges Store change token Use change token on call to GetChanges
Demo Reading changelog from CSOM https://github.com/pschaeflein/CSOMChangeLog
Resources http://scon.link/spc18-io-resources WebHooks in Microsoft Graph WebHooks in OneDrive WebHooks in SharePoint Change Log processing @paulschaeflein https://www.schaeflein.net paul@schaeflein.net