获取 Botbuilder 登录按钮取消响应

Get Botbuilder Signin button cancel response

人群,

我正在努力解决对 Teams SSO 中被拒绝的同意作出反应的问题。

我的解决方案如下所示:

  1. 我有一个网络服务器执行一些用打字稿编写的对话逻辑,可通过 ngrok 访问
  2. 我有一个 Azure 机器人
  3. 我有 Azure AD 机器人注册

请求权限时,我正在创建一个作为附件发送的 oauthcard,如下所示:

await CardFactory.oauthCard(
    myConnectionName,
    "Title",
    "text",
    signInLink,
    {
        id: this.accessToken,
        uri: `api://botid-${myAppId}`
    }
);

这工作正常,用户收到一个小提示“我们需要请求额外的权限。您应该只需要为 MyApplication 执行一次”,带有两个按钮“取消”和“继续”。

继续工作正常,网络服务器收到响应,可以获得 GraphAPI 的令牌并使用所有很酷的功能,但是取消按钮呢?

不幸的是,如果用户单击“取消”,我收到的反馈恰好为 0。你知道当用户点击取消时是否有办法得到确认?

我已经添加了一个适配器并使用 adapter.processActivity() 检查了每个 activity,但是没有 activity 或网络请求用于取消。

知道如何处理吗?我需要以某种方式为取消按钮添加不同的 link 吗?我发送的附件如下所示:

{
        "contentType":"application/vnd.microsoft.card.oauth",
        "content":{
           "buttons":[
              {
                 "type":"signin",
                 "title":"Title",
                 "value":"https://token.botframework.com/api/oauth/signin?signin=mySignInId"
              }
           ],
           "connectionName":"myConnection",
           "tokenExchangeResource":{
              "id":"myAccessToken",
              "uri":"api://botid-myAppId"
           },
           "text":"text"
        }
     }

知道如何接收响应或获取此事件吗?

提前致谢!

编辑:

这应该由 Teams 客户端处理,如果我们将此控件传递给 Bot,请求将进入循环,我们希望避免这种情况。 例如,用户与 Bot 交互 -> 客户端显示同意弹出 -> 用户取消 -> Bot 再次初始化 Auth 请求 -> 客户端再次显示弹出 -> ...

所以,这是设计使然。当用户尝试再次与 Bot 交互时,Teams 客户端将显示同意弹出窗口。