This is a backend for Google Hangouts Chat (https://chat.google.com) for Errbot(https://errbot.io).
It allows you to use errbot to create bots, but as always, it's a work in progress.
git clone https://github.com/cloudflare/GHC-Errbot
and then
BACKEND = 'Google-Hangouts-Chat'
BOT_EXTRA_BACKEND_DIR = '/path/to/where/you/cloned/the/repo/'
to your config.py
-
Create a Google Pub/Sub topic in a GCE project
-
Create a Subscriber on that topic and grant your bot account Subscriber permissions
-
Generate a creds.json for your bot
-
Create an application with
errbot init
, and then create aBOT_IDENTITY
block in your config.py with the following information:
BOT_IDENTITY = {
'GOOGLE_CREDS_FILE': '/path/to/bot/creds.json',
'GOOGLE_CLOUD_ENGINE_PROJECT': '<your project name>',
'GOOGLE_CLOUD_ENGINE_PUBSUB_TOPIC': '<your pub/sub topic>',
'GOOGLE_CLOUD_ENGINE_PUBSUB_SUBSCRIPTION': '<your pub/sub subscription name>',
}
-
Set BOT_PREFIX to the name of the bot, including the mention(
@
) -
(optional) To enable prometheus metrics, set METRICS_PORT to an integer. This will be the port you want to open for metrics.
This backend supports attachments in message events. To download a Google Chat upload attachment, we need to use the GetAttachment API and HTTP GET request with Bearer authentication. Since the backend is already authenticated, we opportunistically provide a ready-to-use downloader object with the message context, so that errbot plugins can use it to directly download the attachments, no extra steps required.
Here's a code example on how to use the downloader helper in a errbot plugin:
from io import BytesIO
from errbot import BotPlugin, botcmd
@botcmd(split_args_with=None)
def upload(self, msg, args):
attachments = msg._extras.get('attachment', [])
for attachment in attachments:
if attachment['source'] == 'UPLOADED_CONTENT':
url = f"""https://chat.googleapis.com/v1/media/{ attachment['attachmentDataRef']['resourceName'] }?alt=media"""
downloader = msg._extras.get('downloader')
content = downloader(url)
if content != None:
d = BytesIO()
d.write(content)
# jira.add_attachment(issue=issue, attachment=d, filename=attachment['contentName'])
The code in markdownconverter.py
is from https://github.com/dr-BEat/errbot-backend-hangoutschat. It is MIT licensed.
Licensed under the BSD 3 License.