{"id":20505,"date":"2024-04-15T11:27:17","date_gmt":"2024-04-15T18:27:17","guid":{"rendered":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/?p=20505"},"modified":"2024-04-16T09:26:45","modified_gmt":"2024-04-16T16:26:45","slug":"expand-your-apps-capabilities-and-reach-on-microsoft-teams-using-api-based-message-extensions","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/expand-your-apps-capabilities-and-reach-on-microsoft-teams-using-api-based-message-extensions\/","title":{"rendered":"Expand your app\u2019s capabilities and reach on Microsoft Teams using API-based message extensions"},"content":{"rendered":"<p>Users love your Teams app and now you\u2019re eager to accelerate its growth and broaden its reach. We\u2019re excited to announce the general availability of API-based message extensions, offering the easiest way to integrate your app into Microsoft Teams. W<span class=\"ui-provider avu avv avw avx avy avz awa awb awc awd awe awf awg awh awi awj awk awl awm awn awo awp awq awr aws awt awu awv aww awx awy awz axa axb axc\" dir=\"ltr\">ith a short development time<\/span> and by utilizing your existing APIs, your app connects to over 320 million users on Teams in the flow of their work.<\/p>\n<p>With API and bot-based message extensions now available, let\u2019s quickly walk-through which message extension is right for your app and how you can expand the reach and capabilities of your app today!<\/p>\n<p style=\"text-align: center;\"><em><iframe src=\"\/\/www.youtube.com\/embed\/ubVl_SKAwAk\" width=\"560\" height=\"314\" allowfullscreen=\"allowfullscreen\"><\/iframe><\/em><\/p>\n<p style=\"text-align: center;\"><em>Create API-based Message Extensions with Teams Toolkit or via Teams Developer Portal<\/em><\/p>\n<h2>What is a message extension?<\/h2>\n<p>Message extensions enhance the functionality of your app in Teams by enabling users to easily search for information, perform actions, capture data, and enrich your app\u2019s experience in the Teams client. The results of these interactions can be returned within Teams as a richly formatted card.<\/p>\n<p>There are now two types of message extensions to choose from:<\/p>\n<p><strong>API-based message extensions:<\/strong> Utilizes your existing APIs and OpenAPI description document to quickly produce a low maintenance message extension currently supporting search commands. Action commands, card actions, and auth support are all coming soon.<\/p>\n<p><strong>Bot-based message extensions:<\/strong> Uses the Bot framework to create one-on-one conversational experiences with the ability to manage complex logic, communicate with multiple services, and support action commands, search commands, and link unfurling for the ultimate message extension experience.<\/p>\n<p><em><span class=\"ui-provider bhi bhj bbd bhk bhl bhm bhn bho bhp bhq bhr bhs bht bhu bhv bhw bhx bhy bhz bia bib bic bid bie bif big bih bii bij bik bil bim bin bio bip\" dir=\"ltr\">Disclaimer: API-based message extensions won&#8217;t be supported as plugins for Copilot at this time. Stay tuned at Build for more news on how to bring your APIs to Copilot. Learn how to build plugins for Copilot <a href=\"https:\/\/learn.microsoft.com\/microsoftteams\/platform\/messaging-extensions\/build-bot-based-plugin?tabs=visual-studio-code&amp;wt.mc_id=developermscom\">here<\/a>.<\/span><\/em><\/p>\n<h3>API-based message extensions vs bot-based message extensions<\/h3>\n<p>API messages extensions are the fastest and easiest way to extend your app to Teams, and if you are looking for additional functionality, bot-based message extensions are an excellent option. Let\u2019s look at when to use API or bot-based message extensions.<\/p>\n<h3>Use API-based message extensions as the fastest and easiest way to extend your app<\/h3>\n<p>Use an API-based message extension if your message extension only needs to communicate with a web service without any complex logic. If your users only need access information from your app via search commands in Teams, then API-based message extensions will be faster to create and easier to maintain than bot-based message extensions. Additionally, API-based message extensions are preferred when traffic must be privatized as it does not rely on Azure\u2019s bot infrastructure, which is a benefit for certain regulated environments.<\/p>\n<p><img decoding=\"async\" width=\"1920\" height=\"1080\" class=\"wp-image-20507 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2024\/04\/a-screenshot-of-a-computer-description-automatica.gif\" alt=\"A screenshot of a computer Description automatically generated\" \/><\/p>\n<p style=\"text-align: center;\"><em>API-based Message Extension Search Command<\/em><\/p>\n<p>The above example demonstrates an API message search command where a Teams user can quickly access information and content from your app and share it to other users in Teams as rich cards. The fun example lightens the mood with some holiday jokes. The versatile card can be used to securely share updated status on work items from a project management tool, data from a CRM, and other information from your app within the flow of the conversation on Teams. With a small investment of time, your app extends its functionality, expands its access to Teams users, and simplifies collaboration with your app.<\/p>\n<h3>Use bot-based message extensions to leverage the full capabilities of a bot<\/h3>\n<p>For additional functionality, a bot-based message extension is an excellent option capable of leveraging the full capabilities of a bot, communicating with multiple services, managing complex logic or user interactions, action commands, adaptive cards, and link unfurling. If you are already planning to build a conversational experience, a bot-based message extension is an easy addition to create using the bot framework SDK.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-20508 alignnone\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2024\/04\/a-screenshot-of-a-computer-description-automatica-1.gif\" alt=\"Bot-Based Message Extension in Copilot with Action Commands\" width=\"1920\" height=\"1080\" \/><\/p>\n<p style=\"text-align: center;\"><em>Bot-Based Message Extension in Copilot with Action Commands<\/em><\/p>\n<p>In addition to search commands, bot-based message extensions can utilize action commands enabling users to trigger actions and process external services from your app within Teams.<\/p>\n<p><img decoding=\"async\" class=\"wp-image-20509 aligncenter\" src=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2024\/04\/screenshot-of-link-unfurling-example-for-azure-dev.png\" alt=\"Screenshot of link unfurling example for Azure Dev Ops links pasted in teams compose message area.\" width=\"762\" height=\"392\" srcset=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2024\/04\/screenshot-of-link-unfurling-example-for-azure-dev.png 762w, https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-content\/uploads\/sites\/73\/2024\/04\/screenshot-of-link-unfurling-example-for-azure-dev-300x154.png 300w\" sizes=\"(max-width: 762px) 100vw, 762px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Link Unfurling Adds Additional Information and Context to Links Shared in Teams<\/em><\/p>\n<p>If users are often sharing links to your app, link unfurling is a bot-based message extension capability that provides a preview of the URL. This upgrade in the design shows other users\u2019 information within the link adding rich context to the conversation. Currently, link unfurling is only available via bot-based message extensions.<\/p>\n<h2>Takeaways<\/h2>\n<p>Both API and bot-based message extensions are easy to build and highly recommended to expand your app\u2019s reach. Choosing between API and bot-based message extensions hinges on your app&#8217;s specific needs.<\/p>\n<p>API-based message extensions are ideal for straightforward communication with a web service using search-command tasks, offering a quick and easy solution with minimal maintenance. API-based message extension\u2019s capabilities are being greatly expanded soon.<\/p>\n<p>For more complex interactions, bot-based message extensions provide a richer, more engaging user experience, handling sophisticated logic and a variety of commands.<\/p>\n<p>Both options allow you to enhance your app&#8217;s capabilities and significantly expand its reach within Teams, ensuring your app remains a vital part of the evolving digital workspace. Get started now and build a message extension today!<\/p>\n<h2>Get started<\/h2>\n<p><strong>API-based Message Extensions<\/strong>: Bring your existing OpenAPI Definition document and\u00a0<a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/messaging-extensions\/build-api-based-message-extension?tabs=visual-studio-code%2Cnew-api\">get started in the Developer Portal for Teams or by using Teams Toolkit today!<\/a><\/p>\n<p><strong>Bot-based Message Extensions<\/strong>: <a href=\"https:\/\/learn.microsoft.com\/en-us\/microsoftteams\/platform\/messaging-extensions\/build-bot-based-message-extension?tabs=search-commands\">Try building message extensions using the bot framework.<\/a><\/p>\n<p><strong>Additional Information on API Message Extensions: <\/strong><a href=\"https:\/\/devblogs.microsoft.com\/microsoft365dev\/introducing-api-based-message-extensions-in-microsoft-teams-developer-portal\/\">API-based message extensions in Teams Developer Portal (microsoft.com)<\/a><\/p>\n<p><em>Follow us on <a href=\"http:\/\/twitter.com\/microsoft365dev\">X (Twitter) \/ @Microsoft365Dev<\/a>, <a href=\"https:\/\/www.linkedin.com\/showcase\/microsoft365dev\/\">LinkedIn<\/a>, and subscribe to our <a href=\"https:\/\/www.youtube.com\/microsoft365developer\">YouTube channel<\/a> to stay up to date on the latest developer news and announcements.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>We\u2019re excited to announce the general availability of API-based message extensions, offering the easiest way to integrate your app into Microsoft Teams.<\/p>\n","protected":false},"author":103201,"featured_media":20518,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[128],"tags":[279,311,241],"class_list":["post-20505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-microsoft-teams","tag-api-message-extensions","tag-bot-based-message-extensions","tag-message-extensions"],"acf":[],"blog_post_summary":"<p>We\u2019re excited to announce the general availability of API-based message extensions, offering the easiest way to integrate your app into Microsoft Teams.<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/20505","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/users\/103201"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/comments?post=20505"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/posts\/20505\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media\/20518"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/media?parent=20505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/categories?post=20505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/microsoft365dev\/wp-json\/wp\/v2\/tags?post=20505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}