MsTeamsHermes

Like Hermes, the messenger of the greek gods, this gem helps you sending messages to your Microsoft Teams channels. With autonomy to create your own layouts, like UI kits such as React, Flutter, SwiftUI (and some others), you will be able to customize it with the objects representations of Microsoft's adaptive cards.

Installation

Add this line to your application's Gemfile:

gem 'msteams_hermes'

And then execute:

$ bundle install

Or install it yourself as:

$ gem install msteams_hermes

Usage

First of all, you need a Webhook URL, which is responsible to identify which channel should receive the messages we are about to send. To generate one, follow Microsoft's instructions.

Your first message

A default Hello World! message could be sent by simply:

require "msteams_hermes/components/adaptive_card"
require "msteams_hermes/components/text_block"
require "msteams_hermes/message"

content = MsTeamsHermes::Components::AdaptiveCard.new(
  body: [
    MsTeamsHermes::Components::TextBlock.new(
      text: "Hello World!",
    )
  ]
)

MsTeamsHermes::Message.new(webhook_url: <YOUR_WEBHOOK_URL>, content: content).deliver
  • You can provide the webhook_url by either sending it as a param or setting it as an environment variable, but it must not be nil.
  • content must always be an AdaptiveCard, which is the top component for Microsoft's webhook messages.

Each component, each style, each action is a 1:1 representation from Microsoft's adaptive cards.

If you want a more elaborated example on how to create message with complex layouts, check out this example.

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/xing/msteams_hermes. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the code of conduct.

Adding new components, styles and actions

Every new component, style or action must implement the to_hash method, which serializes the object into a hash object to be sent to the webhook_url. When implementing the to_hash method, pay attention to the JSON structure of the given object, usually described on the Example section of its documentation on adaptivecards.io.

License

The gem is available as open source under the terms of the MIT License.

Code of Conduct

Everyone interacting in the MsTeamsHermes project's codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.