2

是否可以使用传入的 webhook 设置这个简单的机器人,但将消息作为 DM(而不是 @提及)发送给特定用户?
我的猜测是否定的。但那我怎么能做到这一点呢?

现在,消息刚刚发送到添加机器人的房间,我在消息传递文档中看不到任何关于 DM 的内容。

您目前可以通过设置所谓的机器人用户并使用他们在 Slack 中非常轻松地实现这一点,chat.postMessage但我想在 Google Hangouts Chat 中执行此操作。

from httplib2 import Http
from json import dumps

#
# Hangouts Chat incoming webhook quickstart
#
def main():
    url = '<INCOMING-WEBHOOK-URL>'
    bot_message = {
        'text' : 'Hello from 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()
4

1 回答 1

1

到目前为止,您需要他们的 Space ID 或 webhook url 才能私下向用户发送消息,无论您使用 webhook(就像您所做的那样)还是 REST API。除非您拥有此空间 ID/Webhook,否则您无法向用户发送消息。获得它的一种方法是向用户询问他们的 spaceID 并存储它。无论哪种方式,Google API 都没有提供一种方法来检索与您正在谈论的当前空间 ID 不同的空间 ID。这意味着,机器人只能在某个时候向与之交互的用户发送消息。

当前空间 ID 值可以从事件 JSON (event['space']['name']) 中检索,然后使用 messages.create 向用户发送新消息

service.spaces().messages().create( parent = spaceName, body = response).execute()

或者可以从 url https://chat.google.com/dm/检索到--> 空间 ID 在这里 <---

Google 尚未发布任何为特定用户生成您自己的 spaceID 的方法。

编辑:为了获取 webhook url。见下文:在此处输入图像描述

然后将 webhook url 复制并粘贴到上面的代码中。在此处输入图像描述

注意:如果您需要,可以使用用于 google 聊天的常用 url 和上面提到的空间 ID 以及以下格式的密钥和访问令牌来制造此 webhook url:https ://chat.googleapis.com/v1/spaces/ <空间 ID >/messages?key=A< 此处的密钥 > &token=< 此处的访问令牌 > 有关如何获取密钥和访问令牌的信息,请阅读此处提供的文档:https ://developers.google.com/身份/协议/OAuth2

于 2018-06-12T19:11:39.230 回答