Это бэкэнд для чата Google Hangouts (https://chat.google.com) для Errbot (https://errbot.io).
Это позволяет вам использовать Errbot для создания ботов, но, как всегда, это работа в процессе.
git clone https://github.com/cloudflare/GHC-Errbot
а потом
BACKEND = 'Google-Hangouts-Chat'
BOT_EXTRA_BACKEND_DIR = '/path/to/where/you/cloned/the/repo/'
к вашему config.py
Создайте Google Pub/Sub Topic в проекте GCE
Создайте подписчика по этой теме и предоставьте разрешения подписчика вашей учетной записи бота
Создайте creds.json для вашего бота
Создайте приложение с errbot init
, а затем создайте блок BOT_IDENTITY
в вашем config.py со следующей информацией:
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>',
}
Установите BOT_PREFIX на имя бота, включая упоминание ( @
)
(Необязательно) Чтобы включить метрики Prometheus, установить metrics_port на целое число. Это будет порт, который вы хотите открыть для метрик.
Этот бэкэнд поддерживает вложения в событиях сообщений. Чтобы загрузить вложение загрузки чата Google, нам нужно использовать API GetAttachment API и HTTP GET с аутентификацией носителя . Поскольку бэкэнд уже аутентифицирован, мы оппортунистически предоставляем готовый к использованию объект загрузчика с контекстом сообщения, чтобы плагины Errbot могли использовать его для непосредственной загрузки вложений, не требуется дополнительных шагов.
Вот пример кода о том, как использовать помощника загрузчика в плагине Errbot:
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'])
Код в markdownconverter.py
от https://github.com/dr-beat/errbot-backend-hangoutschat. Это лицензировано MIT.
Лицензирован по лицензии BSD 3.