Microsoft Bot Framework (SDK4 Nodejs):如何让机器人执行某些操作,例如使用 api 进行客户身份验证?

Microsoft Bot Framework (SDK4 Nodejs) : How to make the bot perform some action like customer authentication using api?

我希望 Microsoft Bot Framework 聊天机器人使用 freshservice api 来验证我的客户。

我已经要求用户提供他们的用户名和密码(对应于:company-domain.freshservice.com)并使用状态访问器存储客户详细信息(如 Microsoft Bot Framework SDK4 提供的文档所示).现在在获取详细信息后,我希望机器人向 freshservice api 发送一个 http 请求并对客户进行身份验证。并将机器人的身份验证结果显示到 Chat window(当前为 Bot Framework Emulator)。请帮忙,因为我想不出办法。

Freshservice API 是围绕 CURL 构建的,因此很难了解如何在 Node 中使用它。我已经把第一个例子给你转换了:

发件人:

curl -u user@yourcompany.com:test -H "Content-Type: application/json" -X GET https://domain.freshservice.com/helpdesk/tickets.json

收件人:

// Convert to base64
const loginInfo = Buffer.from(`${ username }:${ password }`).toString('base64');
const response = await axios.get(`https://<yourDomain>.freshservice.com/helpdesk/tickets.json`, {
    headers: {
        'Content-Type': 'application/json',
        Authorization: `Basic ${ loginInfo }`
    }
});
await context.sendActivity(JSON.stringify(response.data, null, 2));

这将导致完整的 JSON 响应:

您选择如何显示由您决定。


备注:

  • 您需要安装 axios(或其他可以发出 GET 请求的服务)npm i axios
  • Freshservice supports OAuth, which is also supported in BotFramework
    • 我强烈建议采用这种方法,因为这意味着您不必弄清楚如何存储和加密用户登录信息。它明显更安全,也不会让您头疼。基本上,它不会存储 user/pass,而是向用户显示登录提示。记录后,它会 returns 一个令牌,您将存储该令牌并使用它来发出请求。现在,如果攻击者想要窃取用户名和密码,他们唯一的途径就是 Freshservice API。如果您自己存储 user/pass,他们还可以尝试攻击您的机器人客户端、机器人对话历史记录和您的机器人存储。
    • 要开始,请阅读 Add authentication to your bot and use the Bot Authentication Sample 作为指南。