【问题标题】:How can a webhook identify USER_IDs?webhook 如何识别 USER_ID?
【发布时间】:2022-02-05 00:25:10
【问题描述】:

我正在开发一个 webhook,我希望它能够@提及特定用户。 simple message format 指定使用<users/123456789012345> 的格式来@提及特定用户。由于这不是机器人,因此它不会处理传入的消息,并且无法从发件人字段中提取消息,正如上面链接的开发者网站上的注释中所建议的那样。

如何获取域中用户的 USER_ID?

【问题讨论】:

    标签: hangouts-chat


    【解决方案1】:

    我和你在同一条船上。尝试使用 Webhook 提及用户。

    如果您使用 web/dev 工具检查 https://chat.google.com 上的 HTML,您实际上可以在标签 data-member-id="user/bot/123456789012345" 下看到用户 ID

    使用上面的方法,我尝试形成一个提到用户的 webhook(在我的例子中是另一个机器人)。

    不幸的是,它没有用。传入字符串 <users/123456789012345> please test 以作为字符串文字进行聊天。

    这很奇怪,因为 html 链接和标记确实会被解释。正如提到的here。编辑:<users/all> 也是如此。

    我将把它留在这里,因为您的问题询问如何获取 ID。虽然它可能不太漂亮,或者不太可自动化,但它至少帮助我获得了用户 ID。

    编辑 2:它可以工作,更不用说出于某种原因我的其他机器人了。但是使用这种方法我可以提到一个人类用户:)

    【讨论】:

    • 我想知道为什么提及所有用户如此容易,而仅提及一个用户却如此困难......顺便说一句,感谢分享这个有价值的解决方法:D
    • 关于不能提及机器人...我从谷歌得到回应说不能链接提及机器人是设计使然。 issuetracker.google.com/issues/109759261
    • 有趣...如果您可以将提及机器人与触发动作结合起来,可能会发生有趣的事情...
    【解决方案2】:

    我使用它来查找 USER_ID,但如果您有其他方法,请告诉我

    1. 右键单击用户并选择检查

    2. 搜索 data-member-id 这是您的 USER_ID

    【讨论】:

    • 我发现的唯一解决方法。非常感谢您的好先生!
    【解决方案3】:

    webhook 将无法提取用户的 USER_ID。作为解决方法,您可以创建一个服务帐户和一个可以访问房间的机器人,并使用 REST API 空间.members.list() 和 space.members.get() 方法。

    注意:机器人需要添加到房间中。

    【讨论】:

      【解决方案4】:

      好的,因此为了获得 UserID 而不必执行您在此处尝试执行的所有操作,您需要在 Google 应用脚本中使用 Admin SDK API。基本上你想要做的是使用你的谷歌应用脚​​本作为你想要做的事情的中介。因此,您将通过他们在已部署应用程序上的 web exec 函数向 google 应用程序脚本发布一些内容,然后让该应用程序通过以下方式与 google 聊天 API 通信:

      var googlewebhookurl = 'https://chat.googleapis.com/v1/spaces/ASDFLKAJHEPQIHEWFQOEWNQWEFOINQ';
      var options = {
          'method': 'post',
          'contentType': 'application/json',
          'payload' : JSON.stringify({ text: "<users/000000000001> I see you!" })
        }
      UrlFetchApp.fetch(googlewebhookurl, options);
      

      首先,您需要将 Admin SDK API 添加到您的 Google 应用脚本服务区域中的服务。因此,单击“服务”旁边的加号,然后选择 Admin SDK API 并单击添加以将其添加到服务中,一旦添加到服务中,它就会在列表中显示为“AdminDirectory”。

      This is an image showing what it looks like once you've added it to the services.

      这里是 Admin SDK API 获取用户信息的文档链接:https://developers.google.com/apps-script/advanced/admin-sdk-directory#get_user

      您应该能够复制和粘贴该示例函数以获取您正在寻找的有关用户的信息。我将粘贴下面的示例代码以防此链接发生问题:

      /**
      * Get a user by their email address and logs all of their data as a JSON string.
      */
      function getUser() {
        var userEmail = 'liz@example.com';
        var user = AdminDirectory.Users.get(userEmail);
        Logger.log('User data:\n %s', JSON.stringify(user, null, 2));
      }
      

      为了获取用户ID,获取返回的用户变量并访问user.id,瞧!你有你要找的身份证。从那里只需将其粘贴到谷歌聊天中的短信中,您就应该开展业务了。我还没有让它与卡片一起工作。我没有看到任何文档说它在卡片中完全受支持。有关聊天消息和卡片的更多信息,请查看以下内容:

      https://developers.google.com/chat/api/guides/message-formats/basic

      https://developers.google.com/chat/api/guides/message-formats/cards

      【讨论】:

        猜你喜欢
        • 2014-04-27
        • 2020-10-31
        • 2016-11-09
        • 2018-11-02
        • 2017-08-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-13
        相关资源
        最近更新 更多