微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 python 向谷歌环聊发送消息? 答案:附加信息:使用 Hangouts Chat API:要记住的事情:使用网络钩子:参考:

如何解决如何使用 python 向谷歌环聊发送消息? 答案:附加信息:使用 Hangouts Chat API:要记住的事情:使用网络钩子:参考:

我正在尝试为谷歌环聊创建一个简单的“聊天机器人”,在聊天中发送常规消息。我找到了 this documentation,但我发现它非常复杂。

它包含一个“完整示例”,但我不确定如何为现有的谷歌环聊找到“空间”ID。这是无处解释的。如何找到现有谷歌聊天的“空间”ID?

此外:是否有简单(!!!)文档,如何简单地向现有聊天发布消息?

解决方法

答案:

您可以使用 spaces.list 获取机器人所属的空间列表,然后使用 spaces.get 获取有关空间的其他信息,或者设置特定于房间的 Webhook .

附加信息:

  • 要在没有响应触发器的情况下向房间发送消息,您必须使用 service account
  • 可以在 here 中找到机器人发起的消息文档。

重要说明: 只有拥有 Google Workspace 帐户才能使用 Google Hangouts Chat API - 它不能单独用于 Gmail。第二种解决方案使用 Webhook,需要访问 https://chat.google.com,它仅适用于 Google Workspace 域。不幸的是,使用消费者 @gmail.com 帐户根本无法做到这一点。

使用 Hangouts Chat API:

设置服务帐户 as per Step 1 on this page 后,您可以通过点击服务帐户右侧的 按钮从 Google Cloud Project UI 下载服务帐户的凭据名称,然后按 Create key 按钮并选择 JSON 作为密钥类型。 请务必妥善保存此文件,因为此密钥只有一个副本。

下载此 JSON 文件后,您可以在 Python 代码中使用它作为设置服务对象时的凭据:

from httplib2 import Http
from oauth2client.service_account import ServiceAccountCredentials
from apiclient.discovery import build

scopes = 'https://www.googleapis.com/auth/chat.bot'
credentials = ServiceAccountCredentials.from_json_keyfile_name(
    'credentials.json',scopes)

chat_service = build('chat','v1',http=credentials.authorize(Http()))

要发出 spaces.list 请求,您可以使用这个新构建的 chat_service,并从响应中提取空格列表:

def extract(n):
    return n['name']

spaces_list = chat_service.spaces().list().execute()
all_spaces = map(extract,spaces_list['spaces'])

然后您可以使用这些空格之一从 python 程序发送消息:

response = chat_service.spaces().messages().create(
    parent=all_spaces[0],body={'text': 'Test message'}).execute()
print(response)

要记住的事情:

  • 确保在 https://console.cloud.google.com 为您的项目启用 Hangouts Chat API
  • 启用后,请确保为机器人配置了名称、徽标和说明。
  • 还必须设置机器人的连接设置;方法不是那么重要;例如,您可以选择 Apps Script project 并输入一个空的已部署项目的部署 ID。

使用网络钩子:

您可以不直接使用 API,而是为特定聊天设置网络钩子,并使用硬编码 URL,您可以从外部脚本向房间发送消息。

this page 上列出了完整的步骤,但我也会在这里介绍。

通过 https://chat.google.com 转到您要向其发送消息的房间,然后从房间名称旁边的下拉菜单中选择 Manage Webhooks

为您的机器人输入名称和可选头像,然后按 SAVE。这将为您提供一个 webhook URL 以在您的 Python 脚本中使用。

在本地,确保您的环境中安装了 httplib2,并将以下脚本复制到新的 .py 文件中:

from json import dumps
from httplib2 import Http

def main():
    """Hangouts Chat incoming webhook quickstart."""
    url = 'webhook-url'
    bot_message = {
        'text' : 'Hello from a Python script!'}

    message_headers = {'Content-Type': 'application/json; charset=UTF-8'}

    http_obj = Http()

    response = http_obj.request(
        uri=url,method='POST',headers=message_headers,body=dumps(bot_message),)

    print(response)

if __name__ == '__main__':
    main()

确保将 webhook-url 字符串替换为上一步聊天 UI 中提供的 webhook。

现在您只需保存文件并运行它 - 这将自动向上述聊天空间发送一条消息:

enter image description here

希望对你有帮助!

参考:

,

看到这个API,很有意思: https://pypi.org/project/hangups/

有一些项目使用 Hangups,其中包括 HangupsBot: https://github.com/xmikos/hangupsbot

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。