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

时间:2018-12-17 16:21:31

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

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

  

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?

我尝试使用here上的OAuth来获得Bearer访问令牌https://login.microsoftonline.com/common/oauth2/v2.0/token,但是当我在其他请求上使用它时,我得到的是“ login expired

1 个答案:

答案 0 :(得分: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网络聊天节目-n“ {botId}” -g“ {resourceGroupName}” -含秘密 --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

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


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