如何从Bot手动向Microsoft Teams发送“ conversationUpdate”?

阿弗里施克

我有一个在bot的帮助下编写的bot framework v4该机器人与Microsoft Teams集成在一起。我想在用户安装漫游器并加入1:1对话时向用户发送欢迎消息。在“团队”conversationUpdate中,只会被触发一次(这是当用户加入1:1对话时),然后再对该用户不再触发。我的想法是编写一个由聊天消息触发的功能,以updateConversation手动发送活动以调试欢迎消息。

到目前为止我失败了

BadArgument:未知的活动类型异常。

我尝试使用Microsoft.Bot.Builder.Teams nuget,将ConnectorClient其发送conversationUpdate到对话中。

另外,我设置了一个控制台应用程序,并尝试使用v3/directline/conversations/{conversationId}/activities并得到了一个Forbidden错误。

private async Task SendConversationUpdateToTeamsAsync(ITurnContext turnContext, CancellationToken cToken = default)
{
    var connectorClient = turnContext.TurnState.Get<IConnectorClient>();

    var conversationUpdateMessage = new Activity
    {
        Type = ActivityTypes.ConversationUpdate,
        Id = turnContext.Activity.Id,
        ServiceUrl = turnContext.Activity.ServiceUrl,
        From = turnContext.Activity.From,
        Recipient = turnContext.Activity.Recipient,
        Conversation = turnContext.Activity.Conversation,
        ChannelData = turnContext.Activity.ChannelData,
        ChannelId = turnContext.Activity.ChannelId,
        Timestamp = turnContext.Activity.Timestamp,
        MembersAdded = new List<ChannelAccount>
        {
            turnContext.Activity.From,
            turnContext.Activity.Recipient
        },
    };

    var result = await connectorClient.Conversations.SendToConversationAsync(conversationUpdateMessage, cToken);
}

我希望conversationUpdate手动发送调试团队中的行为的作品。在办公室门户中创建新用户并为他们安装机器人以调试conversationUpdate行为对我来说是不可行的选择,因为这很费时间。如果还有其他解决方法来触发conversationUpdate团队合作,请告诉我。

里奇森

我不确定ConversationUpdate是否可以以您尝试的方式强制发送。取而代之的是,我只想在这样的东西中抛出OnMessageAsync()

if (turnContext.Activity.Text == "fakeConversationUpdate")
{
    var fakeTurnContext = new TurnContext(turnContext.Adapter, MessageFactory.Text(string.Empty));
    fakeTurnContext.Activity.AsConversationUpdateActivity();
    fakeTurnContext.Activity.Type = ActivityTypes.ConversationUpdate;
    fakeTurnContext.Activity.MembersAdded = new List<ChannelAccount>()
    {
        new ChannelAccount()
        {
            Id = "fakeUserId",
            Name = "fakeUserName"
        }
    };
    await OnConversationUpdateActivityAsync(new DelegatingTurnContext<IConversationUpdateActivity>(fakeTurnContext), cancellationToken);

}

然后进行调试,您只需在聊天室中将“ fakeConversationUpdate”(您可以更改/自定义)写入机器人,它将通过以下方式发送您的机器人fakeTurnContext(您可以更改/自定义)OnConversationUpdateActivityAsync()

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Chatbot在Microsoft Teams中未发送回消息

如何在ASP.NET Core中验证从Microsoft Teams发送的消息有效载荷?

如何从Skype for Business的MS Bot Framework中获取“ conversationUpdate”和“ endOfConversation”以外的内容

使用WebHook将文件发送到Microsoft Teams

通过传入的Webhook向Microsoft Teams发送对较旧消息的答复

通过向通道发送文件信息,Microsoft Teams Bot文件卡信息已损坏

如何加载可变的Microsoft Teams Bot图标?

在Teams中使用Azure机器人服务:如何将文件发送到机器人

如何在Azure中向Microsoft Teams Bot添加授权

向Microsoft Teams发送对话主动消息时,clientSecret不能为null

从SSIS发送Microsoft Teams聊天消息的方法

使用Graph API在Microsoft Teams的机器人通道中以机器人的身份向用户发送消息

当机器人在Microsoft Teams中发送自适应卡时,如何更改通知文本?

手动邀请Bot参加Microsoft Teams通话

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

Microsoft Azure Bot Service主动向组发送消息(会议)聊天

发布后不会触发 ConversationUpdate

如何手动发送重置密码电子邮件?

Microsoft Bot Framework 和 Microsoft Teams

当机器人在 Teams 中发送消息时,我如何获得通知?

使用适用于 Python 的 Bot Framework SDK v4 初始化并向 Microsoft Teams 频道发送消息

已解决:使用 Bot Framework SDK 4 向 MS Teams 发送自适应卡时出现 onTurnError

“promisify”(异步/等待)使用 Python 中的 pymsteams 向 Microsoft Teams 发送消息

使用 Microsoft Graph API 或 BOT API 发送 MS Teams 消息

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

Microsoft Bot Framework Composer Teams 包发送任务模块

Microsoft Teams Graph Explorer:如何在“发送频道消息”API 中提及频道成员?

如何使用 Microsoft Graph 从 Microsoft Teams 机器人发送消息?

如何在 TeamCity 构建项目中的 Powershell 脚本发送的 MS Teams 消息中放置超链接?