将IInvokeActivity从root机器人发布到Skill机器人

问题描述 投票:0回答:1

我有一个根机器人,该根机器人托管在Microsoft团队频道上。OAuthCard会显示在Teams频道上,如下所示:

enter image description here

我们正在使用下面的给定行将任何传入的活动发送到Skill bot:

    // route the activity to the skill
    var response = await _skillClient.PostActivityAsync(_configuration["MicrosoftAppId"], targetSkill, _skillsConfig.SkillHostEndpoint, (Activity)turnContext.Activity, cancellationToken);

当我们单击登录按钮时,TeamsActivityHandler生成IInvokeActivity,但是由于PostActivityAsync方法仅接受IMessageActivity,所以我无法再次将控制权传递给Skill bot。

是否可以将IInvokeActivity转换或发布到Skill机器人?

botframework chatbot microsoft-teams luis
1个回答
0
投票

[如果再次查看PostActivityAsync()的签名,您实际上会看到它采用Activity类型,而不是IMessageActivity

public async Task<InvokeResponse> PostActivityAsync(string fromBotId, BotFrameworkSkill toSkill, Uri callbackUrl, Activity activity, CancellationToken cancellationToken)

看着Activity,您可以看到Activity实现了所有Activity类型,使您可以无问题地来回转换它们

Activity

另外,如果您查看 public partial class Activity : IActivity, IConversationUpdateActivity, IContactRelationUpdateActivity, IInstallationUpdateActivity, IMessageActivity, IMessageUpdateActivity, IMessageDeleteActivity, IMessageReactionActivity, ISuggestionActivity, ITypingActivity, IEndOfConversationActivity, IEventActivity, IInvokeActivity, ITraceActivity, IHandoffActivity { // ... }

IInvokeActivity

它实现public interface IInvokeActivity : IActivity ,它指定实现它的类必须具有IActivity


为了回答您的问题,当您将IInvokeActivity AsInvokeActivity();传递到IInvokeActivity时,请使用PostActivityAsync()方法将其转换为InvokeActivity。

AsInvokeActivity()
© www.soinside.com 2019 - 2024. All rights reserved.