繁体   English   中英

如何将我的机器人变成 MS Teams 应用程序

[英]How can I turn my bot into a MS Teams app

我使用 Microsoft Bot Framework 制作了一个普通机器人,并将其部署到 Azure 门户。

除了引导到 Teams 之外,我如何才能使其成为 Teams 应用程序,例如,使其成为 Teams 应用程序 package。 我检查了 Github 上的一些示例代码,并注意到通用机器人与团队机器人有点不同,例如,通用机器人扩展了 ActivityHandler,但团队机器人扩展了 TeamsActivityHandler。 请问如何将我的机器人变成 Teams 应用程序? 我需要更改我制作的机器人的代码吗?

谢谢

除少数例外情况外,您实际上不需要更改机器人代码即可部署到 Teams 频道。 但是,我确实认为在开发过程中应该注意和考虑一些事情。 首先,我假设您已经或知道如何从机器人服务打开频道。 完成此操作后,您可以在 Teams 中测试您的机器人,甚至无需创建 Teams 应用,只需将 Microsoft 应用 ID 粘贴到聊天收件人:字段(显然不建议共享此 ID 进行一般测试)。

您可能需要的主要更改是删除提及。 这些将与 QnA Maker 和/或 LUIS 混淆,因为它们包含在查询字符串中。 我一直在做这个作为 onMessage 处理程序的第一步。 我目前的机器人为此使用正则表达式,例如

if (context._activity.text) ( // Make sure there is activity text before trying to replace
    context._activity.text = context._activity.text.replace(/(@|<at>)((Bot Name)|(Teams App Manifest Name))(<\/at>)? ?/g, '');
}

但是,我也看到 TurnContext object 可以通过TurnContext.removeRecipientMention(context.activity); 不过,我自己并没有真正尝试过。 如果它有效,如果您发现自己像我过去所做的那样更改机器人名称,那将非常有帮助......

我对我的机器人所做的另一个主要更改是创建带有菜单按钮的团队特定的自适应卡片。 默认情况下, Action.Submit将适用于 web 频道,但不适用于 Teams 频道。 一个典型的动作看起来像

{
    "type": "ActionSet",
    "actions": [
        {
            "type": "Action.Submit",
            "title": "Get Order Status",
            "data": "Get Order Status"
        }
    ]
}

但是 Teams 无法处理此问题,并且会在单击按钮时出错(至少在使用标准 Activity 处理程序时,不确定使用TeamsActivityHandler是否相同。)相反,您应该在使用Action.Submit操作显示卡片之前检查通道并显示替代卡。 例如

if (context.activity.channelId == 'msteams') {
    var welcomeCard = CardHelper.GetMenuCardTeams(welcomeMessage,'Y','Y');
} else {
    var welcomeCard = CardHelper.GetMenuCard(welcomeMessage,'Y','Y');
}

然后你对 Teams 的操作看起来像

{
    "type": "ActionSet",
    "actions": [
        {
            "type": "Action.Submit",
            "title": "Get Order Status",
            "data": {
                "msteams": {
                    "type": "imBack",
                    "value": "Get Order Status"
                }
            }
        }
    ]
}

我已经尝试将这些结合起来,但效果不佳。 您可以向处理程序添加一些内容,以使 Teams 卡在 web 中工作,但文本不会像典型按钮那样插入到聊天中,而是本质上类似于反向通道事件。 我更喜欢这种方法。

除此之外,您应该能够按原样运行您的机器人,但您的单独问题中提到的附件除外 我还没有让它工作,我相信这可能与不使用 TeamsActivityHandler 有关,但我不确定。

希望这会有所帮助。 Go 提前尝试一下,一旦机器人在 Teams 中运行,您就可以针对遇到的任何特定问题创建一个新问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM