Python Google Hangouts聊天机器人通过传入的webhook发送DMs?

Python Google Hangouts聊天机器人通过传入的webhook发送DMs?,python,hangouts-chat,Python,Hangouts Chat,是否可以使用传入的webhook进行设置,但将消息作为DM(不是@提及)发送给特定用户? 我的猜测是否定的。但我怎么能做到这一点呢 现在,消息刚刚被发送到添加了bot的房间,我在房间的DMs上看不到任何东西 目前,你可以通过设置一个所谓的聊天室并使用他们的聊天室来轻松实现这一点,但我想用谷歌聊天室来代替 from httplib2 import Http from json import dumps # # Hangouts Chat incoming webhook quickstart #

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

现在,消息刚刚被发送到添加了bot的房间,我在房间的DMs上看不到任何东西

目前,你可以通过设置一个所谓的聊天室并使用他们的聊天室来轻松实现这一点,但我想用谷歌聊天室来代替

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()
从httplib2导入Http
从json导入转储
#
#闲逛聊天传入webhook快速入门
#
def main():
url=“”
bot_消息={
'text':'Hello from Python script!'
消息头={'Content Type':'application/json;charset=UTF-8'}
http_obj=http()
response=http_obj.request(
uri=url,
方法='POST',
headers=消息头,
正文=转储(bot_消息),
)
打印(答复)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()

现在,无论您使用的是webhook(像您一样)还是REST API,您都需要他们的空间ID或webhook url,以便私下对用户进行数据挖掘。除非您具有此空间ID/Webhook,否则无法向用户发送消息。获取它的一种方法是要求用户提供他们的spaceID并将其存储。无论哪种方式,谷歌API都没有提供一种方法来检索一个不同的空间ID,而不是您正在谈论的当前空间ID。这意味着,机器人只能在某个时刻向与其交互的用户发送消息

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

service.spaces().messages().create( parent = spaceName, body = response).execute()
或者可以从url-->空间ID在这里/消息?key=A&token=
有关如何获取密钥和访问令牌的信息,请阅读此处提供的文档:

即使我有空间id,我也不明白如何使用webhook对某人进行DM。您所描述的内容在我看来不像是webhook,而是聊天API或其他什么?在上面的代码中,我如何在https请求正文中输入空格id?@fredrik在您的代码中,您依赖于一个webhook,您可以通过我添加到我的答案中的说明来获得它。但这意味着机器人和人类之间的DM必须已经存在,才能获得他们的webhook。遗憾的是,你不能给从未作为机器人与之交互过的人发消息。我已经有了这个设置,并且能够将消息发送到与webhook相关的聊天室(使用我问题中的代码)。我不明白的是在REST调用中在哪里指定空间id,这样我就可以发送一个DM。你能详细解释一下吗?哦,我刚看了你最后的通知。。。你是说我应该修改webhook url以包含空间id。好吧,我试试。Logan,你知道是否可以使用服务帐户设置密钥/令牌并避免令牌过期?