Microsoft’s latest update to Teams adds new ways of linking chat to your apps and services via the Bot Framework Credit: Thinkstock Encouraging collaboration is increasingly important in enterprises, with applications like Slack and Stride (Atlassian’s replacement for its own HipChat) getting ground-up adoption. Microsoft has its own Teams collaboration tool shipping as part of Office 365 Enterprise. (Microsoft also plans on folding Skype for Business conferencing client into Teams.) Since its formal release about a year ago, Teams has added more integration features and a command line-like approach to application control. That encourages a move to self-service devops procedures using Teams as a host of what’s become known as chatops. It’s a model that uses platform integration to bring apps directly into team conversations, via bots and other chat-based tools. That is, you can talk directly with apps, one-to-one or as part of a team conversation. Instead of triggering a build, for example, in an IDE or a continuous-integration server, a development team can review test results in a Teams room. The resulting collective go/no-go decision becomes a visible action, launching a build and a deployment, with results appearing in the chat so team members see what otherwise would be an opaque process. For the chatops approach to work, apps need to be able to publish content directly into team conversations, so users won’t need to switch among apps. As a result, the information you need is in the same thread as your team discussion, making it easier to share important information and to make appropriate decisions. Introducing Teams messaging extensions Microsoft calls these interactions messaging extensions. They are cloud-hosted services that link existing applications, whether on-premises or in the public cloud, with Teams via existing channels. Originally developed for use with chatbots, they’re built on top of the existing Microsoft Bot Framework using its card UI metaphor. Originally called compose extensions, messaging extensions have been in beta for the last few months. Teams users will already be familiar with how to use them, because the tools used to build them also deliver Teams’s emoji and GIF support. You start by registering a bot, which gives you the ID and endpoints needed to link your code to Teams. You also need to create an app manifest for your bot that adds support for compose extensions. You can scope messaging extensions to individuals or a team, using commandIDs to handle routing queries to the appropriate code, generating cards in response that then display in a Teams chat for individual applications or in a team room for team-level applications. Currently, there’s support for only one command in a messaging extension, though you can use parameters to refine the output. For example, the messaging extension offered by the Wrike project management service searches for work items, displaying the item you select as a card. Building your first messaging extension Once you’ve declared a composeExtension (Microsoft uses the old name here for compatibility with apps developed during the beta) in your bot’s JSON manifest, you construct a command object to handle interactions. This contains the text that describes your action, along with any parameters sent to and from Teams. A declarative approach like this makes a lot of sense, because you’re constructing a conversation between an application and Teams, one that’s structured through a RESTful API. Like most interactive bot-based applications, messaging extensions are event-driven. You use the onQuery event to work with users in Teams, responding to messages. Microsoft provides sample C# and Node.js code for working with messaging extensions, though if you’re already building bots you shouldn’t find it hard to add messaging extension support to your existing code. One thing to note, there’s a five-second response window for response from the remote service, with results to be sent in a JSON object that’s parsed by Teams and displayed in a card. Probably the biggest difference between building an app that works with Teams and most other development models is that Teams provides minimal control over the user interface. Instead, you’re constrained to delivering a response that must fit inside one of Teams’ card types. Of course, there’s always of the option of responding with a link to a webpage or into a UWP application, though that doesn’t really fit into the idea that messaging extensions don’t break user flow. Making messages into actions One useful feature is the option of using an Office 365 Connector Card, for example, to assign a task to a user or to add an item to a calendar. By including actions in a messaging extension response, you’re building work elements into an ongoing conversation or into a meeting. Because requests include ID data, it’s easy to attach actions to an authenticated user. Other card options let you deliver links that take a user to additional information, so a work item card might include a link to a project plan or to a Kanban board. That link might be to a tab in Teams or to an external application. However, there should be enough information in the card to let decisions be made without leaving Teams, leaving links as a way of getting extra information outside a chat or a team meeting. Applications offering messaging extensions are listed in the Office Store, via a filtered view in the Teams app itself. Once such an application is installed, you call a messaging extension from the More Options button on the message compose box. Another new feature in Teams replicates Slack’s familiar slash commands (themselves a derivative of the command model used by that old favorite, IRC). Applications using this feature trigger from shortcuts typed directly into Teams’ new command box, to quickly launch actions both inside and outside Teams. For example, you could set a status or switch between tabs and pages. Microsoft hasn’t yet detailed how apps can add their own slash commands, but it isn’t hard to guess that it’s likely to be via the Bot Framework as well. Related content feature 14 great preprocessors for developers who love to code Sometimes it seems like the rules of programming are designed to make coding a chore. Here are 14 ways preprocessors can help make software development fun again. By Peter Wayner Nov 18, 2024 10 mins Development Tools Software Development feature Designing the APIs that accidentally power businesses Well-designed APIs, even those often-neglected internal APIs, make developers more productive and businesses more agile. By Jean Yang Nov 18, 2024 6 mins APIs Software Development news Spin 3.0 supports polyglot development using Wasm components Fermyon’s open source framework for building server-side WebAssembly apps allows developers to compose apps from components created with different languages. By Paul Krill Nov 18, 2024 2 mins Microservices Serverless Computing Development Libraries and Frameworks news Go language evolving for future hardware, AI workloads The Go team is working to adapt Go to large multicore systems, the latest hardware instructions, and the needs of developers of large-scale AI systems. By Paul Krill Nov 15, 2024 3 mins Google Go Generative AI Programming Languages Resources Videos