我想通过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>
答案 0 :(得分:1)
我认为您在这里有两个选择:
在任何一种情况下,漫游器都不会知道用户已打开URL。用户要继续对话时,必须在聊天窗口中输入一些内容。如果您确实希望机器人知道用户何时单击按钮,则必须设置一个特殊的Web应用程序,该应用程序将活动发送到机器人,然后重定向到您的Jira页面,这将很困难/很复杂。>