0.38
No commit activity in last 3 years
No release in over 3 years
Send messages to G Suite Hangouts Chat rooms using incoming webhooks and Net::HTTP::Post
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 12
<= 0.54.0
~> 0.9, > 0.9.11
 Project Readme

Gem Version Build Status Maintainability Inline docs

Hangouts Chat gem

Send messages to Hangouts Chat rooms using incoming webhooks.

Installation

$ gem install hangouts-chat

or add to your Gemfile

gem 'hangouts-chat'

Usage

require 'hangouts_chat'

Simple Text Message

Simple messages that appear inline as if typed by a user. Details and format: Simple Text Messages

sender = HangoutsChat::Sender.new 'webhook_URL'
sender.simple 'text'

Card Message

More complex messages that have UI elements with actions and HTML support. Details and format: Card messages

sender = HangoutsChat::Sender.new 'webhook_URL'
header = { title: 'Pizza Bot Customer Support',
           subtitle: 'pizzabot@example.com',
           imageUrl: 'https://goo.gl/aeDtrS' }
sections = [{ widgets: [{ keyValue: { topLabel: 'Order No.', content: '12345' } },
                        { keyValue: { topLabel: 'Status', content: 'In Delivery' } }] }]

sender.card(header, sections)

Message to thread

# Create new thread
sender = HangoutsChat::Sender.new 'webhook_URL'
res = sender.simple 'text'

# Response parse
res_json = JSON.parse(res.body)
thread_name = res_json.dig("thread", "name") #=> "spaces/SPACES_ID/threads/THREADS_ID"

# Send to thread (simple)
sender.simple('res message', thread: thread_name)

# Send to thread (card)
header = {...}
sections = {...}
sender.card(header, sections, thread: thread_name)

How to get Webhook URL

  1. Open channel to which you want to send messages
  2. Click on the channel name in top bar and select 'Configure webhooks'
  3. Click on 'Add webhook' and fill name for bot, that will be display messages
  4. Click on 'Save' and copy 'Webhook URL'

Details: Setting up an incoming webhook

Contributing

Please feel free to contribute any changes, that you want too see in this gem. Feature requests are also accepted.

Before Pull Request submitting please check

  • Changed or added code has tests and YARD documentation
  • All tests are pass
  • rubocop doesn't report any offenses

Tests

All tests are use usual Minitest assert syntax. To run tests execute rake tests.

Changelog

Changelog is available here.