如何解决如何使用 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。
现在您只需保存文件并运行它 - 这将自动向上述聊天空间发送一条消息:
希望对你有帮助!
参考:
- Creating new bots | Google Chat API | Google Developers
- Method: spaces.list | Google Chat API | Google Developers
- Method: spaces.get | Google Chat API | Google Developers
- REST Resource: spaces | Google Chat API | Google Developers
看到这个API,很有意思: https://pypi.org/project/hangups/
有一些项目使用 Hangups,其中包括 HangupsBot: https://github.com/xmikos/hangupsbot
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。