【问题标题】:How to get the webchat bot secret keys?如何获取网络聊天机器人密钥?
【发布时间】:2018-12-17 16:21:30
【问题描述】:

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

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

它将返回如下 JSON 响应: webchat secret keys

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

现在我的问题是:我可以通过哪个 API 获取 IntercomAuthCookie?

我尝试在 https://login.microsoftonline.com/common/oauth2/v2.0/token 上使用 OAuth 获取承载访问令牌 here,但是当我在另一个请求中使用它时,我得到一个“login expired

【问题讨论】:

  • 我什至无法让浏览器方法(登录 dev.botframework.com 后)工作。 (它甚至没有向我显示“键”键)。您是否采取了进一步的措施来使该部分正常工作?
  • 有一种获取密钥的方法。但是目前有一个错误,如果您尝试获取密钥,则会删除当前的 webchatchannel 配置。修复错误后我会更新并确认方法。

标签: azure botframework azure-bot-service web-chat


【解决方案1】:

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


Dev 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 方法(不推荐)

How 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

不要忘记在请求的授权密钥标头中添加一个访问承载令牌。


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

【讨论】:

  • 嗨@jyfa。那太棒了。是的,我也有这些方法,还有 powershell。但;请注意我之前提到的错误。如果您检索密钥,可能会导致它们被删除或破坏网络聊天频道。你的频道还在吗?它是否在 bot azure Blade 的频道视图中显示“正在运行”?
  • 正如我在回答中提到的,由于您提到的错误,不建议使用第二种方法。你是对的,它会破坏 WebChat 频道,并且没有办法让频道回到“正在运行”状态。但是最后一种方法(我将它与 powershell curl 命令一起使用)可以在不破坏通道的情况下工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-15
相关资源
最近更新 更多