如何在Dialogflow / Slack集成中识别Slack用户名而不是ID?

时间:2019-07-29 19:18:30

标签: dialogflow slack-api

当我通过Google Assistant或Google Home访问Dialogflow应用程序时,可以轻松访问(Google)用户名/电子邮件等。通过Slack(Dialogflow)访问应用程序时,如何获取Slack用户名和频道/ Slack集成)?

我知道该呼叫何时来自Slack(源)。我可以识别频道,团队和用户ID(采用松弛编码)。我需要找到ID的含义,即用户名。下面的代码很好地工作:

const src = (JSON.stringify(request.body.originalDetectIntentRequest.source));
if (src == "slack") {
  const p_team = (JSON.stringify(request.body.originalDetectIntentRequest.payload.data.event.team));
  const p_user = (JSON.stringify(request.body.originalDetectIntentRequest.payload.data.event.user));
  const p_channel = (JSON.stringify(request.body.originalDetectIntentRequest.payload.data.event.channel));
}
if (src == "google") {
...
}
...

我获得了'p_team','p_user'和'p_channel'的Slack编码ID。如何找出其真实姓名?

2 个答案:

答案 0 :(得分:1)

要从Slack实体的ID解析名称,您需要调用相应的API列表方法。它将为您提供该类别所有元素的列表。然后,您可以匹配ID以找到其名称:

对于团队名称,您可以使用各自的Slack令牌致电auth.test

答案 1 :(得分:0)

使用“ Bot用户OAuth访问令牌”,在“ OAuth和权限选项卡”中,格式为xoxb-xxxxx-xxxxx-xxxx。然后在“ Bot Token Scopes”中添加范围“ conversations.list,users.list,users.read”,然后以松弛状态重新安装您的应用程序。 然后,尝试在users:read处于松弛状态https://api.slack.com/methods/methodname时从API调用中获取用户详细信息。但是您可以从代码中调用它,您的响应就像: {“ ok”:true,“ user”:“ id”:“ XXXXXX”,“ team_id”:“ xxxxxxxx”,“ name”:“ xxxxxxx”,“ deleted”:false,“ color”:“ xxxxx”,“ real_name“:” XXXXXXx“,” tz“:”“,还有其他字段.....}}