- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我通过 Teams 在我的组织中安装了 Azure 机器人。与机器人的交互正常运行。
我们有一个场景,需要从外部进程(在 Azure 中运行的 C# 应用程序)向用户发送通知。
我尝试使用 Bot Framework REST API与用户创建对话,然后向他们发送通知,如 here 所示
此方案不起作用,因为我无法获取不使用全局机器人框架租户的机器人的访问 token 。我们的机器人作为 SingleTenant BotType 安装在我们的 Azure 租户上,因此我收到以下错误:
Application with identifier 'BOT-APP-ID' was not found in the directory 'Bot Framework'
我尝试过各种选项,包括 DirectLine channel 、BotConnector SDK 和 Power Automate - 但似乎没有一个能满足我的需求。
有没有办法对我们安装的机器人使用 Rest API 来创建对话和发送消息?这将是理想的选择,因为这样我就可以直接从触发这些通知的事件中启动这些通知。
更新
希尔顿的以下回答使情况变得更加清晰。最终,我不得不部署一个新的机器人集来使用 Multi-Tenancy BotType。
这配置了与 Bot 绑定(bind)的 AppRegistration,也设置为使用 MultiTenant。
此外,在托管 api/messages 端点的 WebApp 中,您必须包含一个名为 MicrosoftAppType 的属性,并将其设置为 MultiTenant以及。以下是 Web 应用程序所需的完整配置:
MicrosoftAppId: [The AppId of the AppRegistration]
MicrosoftAppPassword: [The Secret of the AppRegistration]
MicrosoftAppTenantId: [Your Tenant Id]
MicrosoftAppType: MultiTenant
为了捕获 ConversationId、ServiceUrl 和 UserId,我将以下内容添加到 OnMembersAddedAsync
foreach (var member in membersAdded)
{
if (!string.IsNullOrEmpty(member.AadObjectId))
{
//This is a user in our AAD. Store the conversation id reference:
var userId = member.AadObjectId;
var serviceUrl = turnContext.Activity.ServiceUrl;
var conversationId = turnContext.Activity.Conversation.Id;
//Save variables to your state store here...
}
else
{
// This is likely a test outside of Teams
//var userId = member.Id; //<-- Not used in my scenario
}
}
然后在我的外部应用程序(本例中为控制台)中,我可以使用这些变量(以及 AppRegistration 凭据)来创建 Bot ConnectorClient 并更新对话:
using Microsoft.Bot.Connector;
using Microsoft.Bot.Connector.Authentication;
using Microsoft.Bot.Schema;
var botAppId = "[BOT_ID/APP_REG_ID]";
var botAppKey = "[APP_REG_SECRET]";
var conversationId = "[CONVERSATION_ID]";
var serviceUrl = "[SERVICE_URL]";
MicrosoftAppCredentials.TrustServiceUrl(serviceUrl);
var connector = new Microsoft.Bot.Connector.ConnectorClient(new Uri(serviceUrl), botAppId, botAppKey);
var activity = new Activity()
{
Text = "Proactively saying **Hello**",
Type = ActivityTypes.Message,
Conversation = new ConversationAccount(false, "personal", conversationId)
};
try
{
var result = await connector.Conversations.SendToConversationAsync(conversationId, activity);
Console.WriteLine("Notification sent!");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
最佳答案
主动消息传递绝对是您所寻找的,但有一些重要的事情需要注意。这是一个示例 https://github.com/pnp/teams-dev-samples/tree/main/samples/bot-proactive-messaging希望这会很有用 - 我包含了 C# 和 Node 版本以及一些进一步阅读的链接,这里有一个视频 session 的链接,我在其中详细讨论了这个概念:https://www.youtube.com/watch?v=mM7-fYdcJhw&t=1398s .
简单来说,请记住 Bot Framework 可以在许多环境中使用,Teams 只是其中之一。重要的是,与其他环境不同,当您在 Teams 中时,不存在与用户“创建”对话的概念。只有一次“对话”,而你基本上是在“继续”对话。因此,您想要调用 continueConversation
。在我上面链接的同一示例中,这里是 relevant line 。在幕后,这确实是在调用 REST API,但像这样包装起来更容易。
但是,正如示例所示,由于您无法开始对话,并且只能继续一个对话,因此您需要确保已经拥有对话上下文,这也可能意味着确保用户已将机器人安装到个人上下文中(这实际上是开始对话的原因)。 Here就是样本中发生这种情况的地方。
如果您的用户已经安装了机器人,那么它只是存储对话上下文的情况,就像我在示例中所示的那样。如果没有,并且您想了解如何预安装机器人,请参阅此问题:Proactively Install / Push Apps in Teams for Multiple Users
关于azure - 通过 Teams 聊天机器人从外部流程向组织用户发送主动消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71547766/
无法将应用程序添加到 Teams 管理员中的自定义策略。 在新海关政策中添加新应用程序后。单击保存按钮时,出现错误显示“我们现在无法保存应用程序设置策略。请重试。如果问题仍然存在,请联系 Micros
我想创建一个应用程序,当用户在 MS Teams 中接到电话时会收到通知。我的意思是我想在来电事件上订阅一些东西,然后根据来电信息做一些事情。这可能吗?到目前为止,我在 SDK 中没有看到任何事件。
这个问题在这里已经有了答案: jQuery validate dynamic input array (2 个答案) jQuery Validate array input element whic
未在从 MS Teams 返回的事件对象中获取时区... 我能够从 MS Teams 上发布的用户消息中获取事件对象,但时区为 null。我需要确定用户。 下面是事件对象。 Activity Obje
我有一个简单的 web 应用程序,我在 Teams 中显示为一个应用程序。我已经在 App Studio 中进行了设置,一切都按我的预期工作,一切都很好。它正在显示我的网络应用程序,这就是我想要的。
从 Flow 向 Microsoft Teams 发布自适应卡片时,该消息似乎被压缩到大约 50% 的宽度。它不会扩展以适应 Teams 中的消息容器。 Squished Adaptive Card
如何在 Microsoft Teams 中恢复已删除的团队?似乎没有相应的选项可以做到这一点? 出于某种原因,我删除了某个团队,由于团队尚不存在,因此我无法使用“管理团队”之类的选项。 最佳答案 因为
如果在 Microsoft Teams 中运行,我有一个需要执行特定代码的 Web 应用程序,但是我还没有弄清楚是否有任何方法可以判断您的应用程序是否在团队中运行。有什么想法或见解吗? 编辑: 对于任
有什么方法可以通过深层链接与 ms-teams 中的机器人开始对话吗? 我已经在 https://docs.microsoft.com/en-us/microsoftteams/platform/co
我将来在 MS Outlook 中设置了外出 session 提醒,现在我的 MS Teams 显示外出。 我检查了我的 MS Outlook 中的设置,并尝试手动更改我在 MS Teams 中的状态
我在办公室工作,我们有大量文件存储在 SharePoint、OneDrive 等中,我可以轻松连接到 Microsoft Teams,但也有很多文件存储在网络共享中,路径如\\xxxx\xxxx\xx
虽然有很多关于如何向团队添加选项卡的文档,但我似乎找不到任何关于如何创建和驱动用户访问选项卡内容(如 T-Bot 中演示的内容)的文档。 谁能告诉我有关如何向机器人添加标签的任何文档? 这就是我要说的
我们正在尝试使用 Teams、Flow 和 Assembla 创建审批工作流,但遇到了一些麻烦。 我们已经成功设置了一些部分,但是我们无法从 Teams 中的卡启动 POST 操作。 在团队中,我们可
已发布here我正在寻找一种方法来设置当前用户在 Teams 中的状态,就像我使用 Lync SDK 为 Skype for Business 所做的那样。 是否有适用于 Teams 的类似 SDK,
我试图从传入的 webhook 中提及用户。 我通过 postman 尝试了几次迭代 { "text": "test @user" } 或者 { "text": "test @user@email.c
我们公司几个月前开始使用 Microsoft Teams。我的一位同事离开了公司。如果我禁用/删除他的 AAD 帐户会怎样?我们希望他在 Teams channel 中发送的消息能够被保留。 最佳答案
我想知道是否有人尝试在 TS 和 SVN/CC 之间迁移。 我所说的迁移是指在不丢失历史记录的情况下在源代码控制系统之间导入和导出存储库。 迁移到 VSTS 和从 VSTS 迁移的工具有多好? 我也有
当我尝试连接到 tfs 时,出现以下错误: --------------------------- Microsoft Visual Studio --------------------------
我们在机器人框架上创建了一个机器人,并为 Microsoft Teams channel 启用。在 bot 中,附件功能已启用,用户可以使用 Teams 向 bot 发送文件,并且运行良好。但是从过去
我有一个团队通知机器人,我正在尝试将其上传到团队管理门户。应用程序包上传得很好,但是当转到权限选项卡时,“组织范围权限”下没有用于添加组织范围权限的按钮。 Teams admin missing bu
我是一名优秀的程序员,十分优秀!