如何使用 Bot Framework V4 C# SDK 在 Teams 中迁移 1:1 主动消息功能

乔治·诺比利

我有一个 Bot Framework V3 SDK 实现(工作正常),可以使用 Microsoft Teams Bot(安装在同一团队中)与特定团队中的任何用户发起 1:1 私人聊天。我在尝试将其迁移到 V4 SDK 时遇到问题。

我阅读了各种文章和其他问题,除非用户首先联系机器人(以避免向用户发送垃圾邮件),否则不可能做到这一点,但 V3 版本并非如此,也不是我需要的功能的选项.

原始解决方案使用程序集中的“ CreateOrGetDirectConversation”扩展方法Microsoft.Bot.Connector.Teams,但程序集的 V4 版本中不可用。

我尝试使用CreateDirectConversation/CreateDirectConversationAsync方法但没有成功(它们总是导致“错误请求”错误)。

这是使用 V3 库实际工作的代码:

// Create 1:1 conversation
var conversation = connectorClient.Conversations.CreateOrGetDirectConversation(botAccount, user, tenantId);
// Send message to the user
var message = Activity.CreateMessageActivity();
message.Type = ActivityTypes.Message;
message.Text = "My message";
connectorClient.Conversations.SendToConversation((Activity)message, conversation.Id);

而且我发现迁移非常困难。我错过了什么吗?

理查德森

根据文档,机器人的主动消息传递

只要您的 bot 具有通过先前在个人、groupChat 或团队范围中添加获得的用户信息,bot 就可以与单个 Microsoft Teams 用户创建新对话。此信息使您的机器人能够主动通知他们。例如,如果您的机器人被添加到团队中,它可以查询团队名单并在个人聊天中向用户发送个人消息,或者用户可以@提及另一个用户以触发机器人向该用户发送直接消息。

注意:Microsoft.Bot.Builder.Teams扩展仍处于 V4 的预发布阶段,这就是为什么很难找到它的示例和代码的原因。

添加中间件

Startup.cs

var credentials = new SimpleCredentialProvider(Configuration["MicrosoftAppId"], Configuration["MicrosoftAppPassword"]);

services.AddSingleton(credentials);

[...]

services.AddBot<YourBot>(options =>
{
    options.CredentialProvider = credentials;

    options.Middleware.Add(
        new TeamsMiddleware(
            new ConfigurationCredentialProvider(this.Configuration)));
[...]

准备你的机器人

在您的主要<YourBot>.cs

private readonly SimpleCredentialProvider _credentialProvider;

[...]

public <YourBot>(ConversationState conversationState, SimpleCredentialProvider CredentialProvider)
{
     _credentialProvider = CredentialProvider;

[...]

发送消息

var teamConversationData = turnContext.Activity.GetChannelData<TeamsChannelData>();
var connectorClient = new ConnectorClient(new Uri(activity.ServiceUrl), _credentialProvider.AppId, _credentialProvider.Password);

var userId = <UserIdToSendTo>;
var tenantId = teamConversationData.Tenant.Id;
var parameters = new ConversationParameters
{
    Members = new[] { new ChannelAccount(userId) },
    ChannelData = new TeamsChannelData
    {
        Tenant = new TenantInfo(tenantId),
    },
};

var conversationResource = await connectorClient.Conversations.CreateConversationAsync(parameters);
var message = Activity.CreateMessageActivity();
message.Text = "This is a proactive message.";
await connectorClient.Conversations.SendToConversationAsync(conversationResource.Id, (Activity)message);

注意:如果您需要获取用户 ID,可以使用:

var members = (await turnContext.TurnState.Get<IConnectorClient>().Conversations.GetConversationMembersAsync(
    turnContext.Activity.GetChannelData<TeamsChannelData>().Team.Id).ConfigureAwait(false)).ToList();

另外,我在测试中不需要这个,但如果你收到 401 错误,你可能需要信任 Teams ServiceUrl

MicrosoftAppCredentials.TrustServiceUrl(turnContext.Activity.ServiceUrl); 

资源

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用 Bot Framework SDK v4 在 MS Teams 中呈现自适应卡片

来自分类Dev

如何使用C#中的Microsoft Bot Framework SDK V4开发的ChatBot中的自适应卡添加条件?

来自分类Dev

在 Microsoft Bot Framework 的 sdk v4 中使用 FormDialog

来自分类Dev

如何在使用C#BOT Framework SDK V4构建的瀑布对话框中调用AZURE DEVOPS rest API?

来自分类Dev

如何为 sdk v4 Bot 的消息添加语音

来自分类Dev

使用 Bot Framework C# v4 的动态提示

来自分类Dev

如何将来自用户的消息存储在表存储中?(Microsoft Bot Framework SDK4和C#)

来自分类Dev

使用Bot框架在Microsoft Teams上发送主动消息

来自分类Dev

在Bot Framework v4中,如何使用评论框和提交按钮实施评分卡

来自分类Dev

Bot Builder v3 SDK 到 v4 SDK 迁移指南

来自分类Dev

如何在Bot Framework v4中形成英雄卡轮播

来自分类Dev

AdaptiveCard Bot Framework V4 中的日语字符

来自分类Dev

如何使用SDK4从带有Bot的MS Teams获得用户电子邮件?

来自分类Dev

在Bot Framework sdk v4 nodeJS中发送列表项

来自分类Dev

如何通过Microsoft graph API C#在Microsoft Teams中将消息发送到1:1聊天或群聊

来自分类Dev

SDK4中如何拦截bot消息

来自分类Dev

如何使用 Microsoft bot 框架 SDK3 C# 在 Microsoft 团队中显示欢迎消息

来自分类Dev

如何使用 SQL 保存 ConversationState 和 UserState Bot Framework v4

来自分类Dev

Action.Submit on Adaptive Cards 不会调用下一步(不仅在 Microsoft Teams 中工作,在网络聊天中工作):Bot Framework V4

来自分类Dev

Objective-C Dropbox SDK 从 API V1 迁移到 API V2

来自分类Dev

如何在bot框架v4中将对话框设置为欢迎消息

来自分类Dev

Bot Framework V4多转提示功能问题QnaMaker

来自分类Dev

在Express.js v4和Socket.io v1中使用会话

来自分类Dev

通过Bot Framework V4上的Webchat使用“凭据”进行语音服务身份验证

来自分类Dev

如何修复与使用 C# 中的 V4 SDK 开发的聊天机器人窗口中未显示的 DirectLineChannel 提示选择选项相关的问题?

来自分类Dev

如何使用ef core 1在UWP中运行迁移

来自分类Dev

Java Bot SDK会为主动消息抛出401错误

来自分类Dev

Bot Framework V4依赖项注入无效

来自分类Dev

有没有办法将 v4 Bot 添加到 Teams?

Related 相关文章

  1. 1

    无法使用 Bot Framework SDK v4 在 MS Teams 中呈现自适应卡片

  2. 2

    如何使用C#中的Microsoft Bot Framework SDK V4开发的ChatBot中的自适应卡添加条件?

  3. 3

    在 Microsoft Bot Framework 的 sdk v4 中使用 FormDialog

  4. 4

    如何在使用C#BOT Framework SDK V4构建的瀑布对话框中调用AZURE DEVOPS rest API?

  5. 5

    如何为 sdk v4 Bot 的消息添加语音

  6. 6

    使用 Bot Framework C# v4 的动态提示

  7. 7

    如何将来自用户的消息存储在表存储中?(Microsoft Bot Framework SDK4和C#)

  8. 8

    使用Bot框架在Microsoft Teams上发送主动消息

  9. 9

    在Bot Framework v4中,如何使用评论框和提交按钮实施评分卡

  10. 10

    Bot Builder v3 SDK 到 v4 SDK 迁移指南

  11. 11

    如何在Bot Framework v4中形成英雄卡轮播

  12. 12

    AdaptiveCard Bot Framework V4 中的日语字符

  13. 13

    如何使用SDK4从带有Bot的MS Teams获得用户电子邮件?

  14. 14

    在Bot Framework sdk v4 nodeJS中发送列表项

  15. 15

    如何通过Microsoft graph API C#在Microsoft Teams中将消息发送到1:1聊天或群聊

  16. 16

    SDK4中如何拦截bot消息

  17. 17

    如何使用 Microsoft bot 框架 SDK3 C# 在 Microsoft 团队中显示欢迎消息

  18. 18

    如何使用 SQL 保存 ConversationState 和 UserState Bot Framework v4

  19. 19

    Action.Submit on Adaptive Cards 不会调用下一步(不仅在 Microsoft Teams 中工作,在网络聊天中工作):Bot Framework V4

  20. 20

    Objective-C Dropbox SDK 从 API V1 迁移到 API V2

  21. 21

    如何在bot框架v4中将对话框设置为欢迎消息

  22. 22

    Bot Framework V4多转提示功能问题QnaMaker

  23. 23

    在Express.js v4和Socket.io v1中使用会话

  24. 24

    通过Bot Framework V4上的Webchat使用“凭据”进行语音服务身份验证

  25. 25

    如何修复与使用 C# 中的 V4 SDK 开发的聊天机器人窗口中未显示的 DirectLineChannel 提示选择选项相关的问题?

  26. 26

    如何使用ef core 1在UWP中运行迁移

  27. 27

    Java Bot SDK会为主动消息抛出401错误

  28. 28

    Bot Framework V4依赖项注入无效

  29. 29

    有没有办法将 v4 Bot 添加到 Teams?

热门标签

归档