如何获取网络聊天机器人密钥?

How to get the webchat bot secret keys?

通过以下 Url 我找到了一种提取网络聊天机器人密钥的方法:

https://dev.botframework.com/api/bots/{bot_id}/channels/webchat"

它会 return 一个 JSON 响应,如下所示: webchat secret keys

当我在浏览器中调用它并在 https://dev.botframework.com/ 上登录时,它运行良好。现在我想用 powershell 编写脚本。 在开始编写脚本之前,我尝试用 Postman 调用它。我的问题是我需要一个令牌(访问令牌?)才能用 Postman 调用它。如果我从浏览器 session 中将 IntercomAuthCookie 抓取到 Postman 中的 headers 中,我会得到预期的结果 like here.

现在我的问题是:API 我可以用哪个获得 IntercomAuthCookie?

我尝试获取 Bearer 访问令牌 here with OAuth on https://login.microsoftonline.com/common/oauth2/v2.0/token, but when I use it on the other request I get a "login expired"

经过数周的大量搜索,我找到了三种获取网络聊天频道密钥的方法。


开发 Botframework 浏览器方法

通过以下 URL 可以得到 JSON 格式:

https://dev.botframework.com/identity/signin?requestUrl=/api/bots/{botId}/channels/webchat

它会询问您的凭据并将您重定向到 https://dev.botframework.com/api/bots/{botId}/channels/webchat.


Azure Cli 方法(不推荐)

在这个postHow can I programmatically obtain the DirectLine secret of a Microsoft Bot Framework chatbot application?的帮助下,我找到了以下命令:

az bot webchat show -n "{botId}" -g "{resourceGroupName}" --with-secrets --subscription "{subscriptionId}"

不要忘记在 运行 上述命令之前登录(使用 "az login" 命令)。

为什么不推荐这种方法?
我意识到在 运行 这个命令之后,它破坏了 Azure 中的 WebChat 通道,我无法让它重新工作。这就是我强烈不推荐使用它的原因。


HTTP GET 请求方法 - 不需要浏览器(最推荐用于脚本)

经过对 Python Azure Cli Bot Service 和 Azure Mgmt Bot Service 源代码的大量研究,我发现了以下请求:

https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.BotService/botServices/{botId}/channels/WebChatChannel/listChannelWithKeys?api-version=2018-07-12

不要忘记将访问承载令牌添加到请求的授权密钥 header 中。


我测试了所有的方法。一切都按预期进行。