是否可以打开URL并通过自适应卡向机器人提交“操作”?

时间:2019-08-22 10:36:53

标签: c# botframework microsoft-teams adaptive-cards

我想通过AdaptiveCard中的“ Action.OpenUrl”打开URL,并另外向机器人提供“ OK”状态,因此瀑布对话框可以按预期继续。

重要的是,我想将Azure的bot部署到MS Teams。因此,我的第一个尝试是将“ OK”提交给该bot,然后通过System.Diagnostics.Process.Start(url)从代码中打开URL。但它不再像Windows 10那样工作,并引发“找不到目录”异常。我尝试了一些解决该问题的方法。例如,这个“ here! 这对我在本地仿真器上有效,但是在MS Teams中部署后,它什么也没做。因此,现在我回到考虑在AdaptiveCard JSON中嵌套“ Action.XXX”的可能性,该可能性使我可以通过OpenUrl函数打开URL,同时向bot发出类似于Submit函数那样的信号。有没有人遇到过这样的问题?

"actions": [
    {
      "type": "Action.Submit",
      "title": "Alles OK",
      "data": {
        "msteams": {
          "type": "imBack",
          "value": "OK"
        }
      }
    },

这是MS团队自适应卡中的“操作按钮” 它应在如下所示的c#Bot代码中触发“确定”情况 并同时打开可以添加到“ Action.OpenUrl”按钮的网址

if (stepContext.Result is string promptResult)
            {
                switch (promptResult)
                {
                    case "OK":
                        string url = CreateTicketResponses.CreateTicketLink(state.Summary, state.Description, state.Type);
                        System.Diagnostics.Process.Start(url);
                        //await stepContext.Context.SendActivityAsync(url);
                        state.Reset();
                        new DialogTurnResult(DialogTurnStatus.Complete);
                        return await stepContext.EndDialogAsync();

因此,如上所述,我想获得一个自适应卡,该卡可以在新的浏览器选项卡(在用户可能拥有的任何系统上)中打开URL,并为漫游器提供结束对话框的指示符(EndDialogAsync())。 / p>

1 个答案:

答案 0 :(得分:1)

我认为您在这里有两个选择:

  1. 您可以在自适应卡中收集数据,并让机器人通过发送另一个卡(不一定是自适应的)来打开按钮,该按钮打开一个用自适应卡中的数据填充的URL。
  2. 您可以跳过自适应卡,而只发送链接到Jira的通用URL按钮卡,然后用户可以在Jira页面上填写数据,而不是已经在自适应卡中填写了数据。

在任何一种情况下,漫游器都不会知道用户已打开URL。用户要继续对话时,必须在聊天窗口中输入一些内容。如果您确实希望机器人知道用户何时单击按钮,则必须设置一个特殊的Web应用程序,该应用程序将活动发送到机器人,然后重定向到您的Jira页面,这将很困难/很复杂。