【问题标题】:How to get the user id from Slack to bot service如何从 Slack 获取用户 ID 到机器人服务
【发布时间】:2019-08-09 11:22:40
【问题描述】:

我正在使用 Azure LUIS 创建一个简单的机器人,这是我的第一个机器人。在做了一些研究之后,我取得了一些不错的进展,现在也与 Slack 集成作为测试它的渠道。

机器人功能运行良好,但我希望识别用户。这样我就可以个性化机器人对话,还可以从他的个人资料表中提取用户特定信息。

无论如何,我可以获取 slack 用户的 UID 或任何参考 ID,以便我可以将其与用户配置文件一起存储在我的用户表中吗?

所以下一次,当用户向机器人打招呼时,机器人可以说“你好,John”。而不是仅仅说“你好”。

谢谢!

【问题讨论】:

    标签: node.js slack slack-api azure-language-understanding azure-bot-service


    【解决方案1】:

    我通过打印整个会话对象找到了解决方案,该对象具有所有必需的信息。这可能和上面 Dana 提到的一样,但是经过调试后,这很简单,无需做任何更改。

    var slackID = session.message.address.user.id
    

    通过以上,我能够识别用户。

    谢谢。

    【讨论】:

    【解决方案2】:

    是的。您可以使用 channelData 对象来获取 ApiToken 和 user 值。例如,在 C# 中,您可以使用 turnContext.Activity.ChannelData 在 JSON 中获取这些值:

    {{
      "SlackMessage": {
        "token": "............",
        "team_id": "<TEAM ID>",
        "event": {
          "type": "message",
          "text": "thanks",
          "user": "<USER WHO MESSAGED>",
          "channel": "............",
          "channel_type": "channel"
        },
        "type": "event_callback",
        "event_id": ""............",
        "event_time": 1553119134,
        "authed_users": [
          "............",
          "<USER WHO MESSAGED>"
        ]
      },
      "ApiToken": "<ACTUAL TOKEN HERE>"
    }}
    

    然后,使用这两条信息,您可以从 Slack 检索信息。

    https://slack.com/api/users.info?token=<ACTUAL TOKEN HERE>&user=<USER WHO MESSAGED>&pretty=1
    

    并获得包含您需要的信息的响应:

    {
        "ok": true,
        "user": {
            "id": "<USER WHO MESSAGED>",
            "team_id": "<TEAM ID>",
            "real_name": "Dana V",
    

    理想情况下,您可能希望设置机器人用户状态并首先检查它,如果不存在,则对 Slack 进行 API 调用,然后存储在状态中。因此,进一步的请求不需要转到 Slack,而只需从状态存储中提取。


    基本上,您可以/应该在 onTurn 事件中执行此操作。首先,创建您的用户状态存储,例如here。

    然后您可以检查该值并在未填充时写入该值。 This example 在简单的提示下,可能会有所帮助。您不需要像本例那样提示输入用户名,但会从状态读取/写入用户名。您仍然可以使用对话框,但您不需要它们来提示名称,因为您正在动态地这样做。

    您可以看到here 正在设置用户名,here 正在检索用户名。在这种情况下,它在对话框中,但又一次;你会/可以只在回合上下文中做(使用逻辑获取,如果不存在,则设置)。

    【讨论】:

    • 谢谢达娜。此实现是否有任何 node.js 参考?因为我在 node.js 中编写我的机器人
    • 差别不大:turnContext.activity.channelData。其余的将是相同的(JSON)。如果我的回复解决了您的问题,请将其标记为答案,以便对有相同问题的其他人有所帮助。
    • 如果你不介意,我要把这个放在哪里?正如我提到的,这是我的第一个网络应用程序,我的 app.js 文件在这里 - github.com/bharathkarumudi/SUchatBot/blob/master/app.js
    猜你喜欢
    • 2019-06-25
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-02
    • 1970-01-01
    • 2016-07-08
    相关资源
    最近更新 更多