与通道松弛集成在一起时,自适应卡无法以适当的外观出现

时间:2020-01-30 05:37:31

标签: c# asp.net-core botframework slack adaptive-cards

我有一个使用c#在框架v4中制作的机器人。我在机器人中使用自适应卡作为欢迎消息,也使用卡来获取用户反馈,因此在模拟器中工作正常,但是当bot与slack集成时,不会出现欢迎卡,并且不会显示更多的反馈卡它的适当外观是松弛的,而不是以图像的形式出现。有人知道原因吗? 与其他任何渠道集成时,甚至都不会出现问题。松弛频道有什么限制吗? 我还要附上一张没有欢迎卡的松弛图像。

enter image description here Welcome.cs

public class Welcomeuser : DialogBot<MainDialog>
{
protected readonly string[] _cards =
 {
        Path.Combine(".", "Resources", "WelcomeCard.json"),
 };
public Welcomeuser(ConversationState conversationState, UserState userState,
 MainDialog dialog, ILogger<DialogBot<MainDialog>> logger, IConfiguration configuration, IHttpClientFactory httpClientFactory)
    : base(conversationState, userState, dialog, logger, configuration, httpClientFactory)
{
}
protected override async Task OnMembersAddedAsync(IList<ChannelAccount>
 membersAdded, ITurnContext<IConversationUpdateActivity> turnContext, CancellationToken cancellationToken)
{
    await SendWelcomeMessageAsync(turnContext, cancellationToken);
    Random r = new Random();
    var cardAttachment = CreateAdaptiveCardAttachment(_cards[r.Next(_cards.Length)]);
    await turnContext.SendActivityAsync(MessageFactory.Attachment(cardAttachment), cancellationToken);
}
private static Attachment CreateAdaptiveCardAttachment(string filePath)
{
    var adaptiveCardJson = File.ReadAllText(filePath);
    var adaptiveCardAttachment = new Attachment()
    {
        ContentType = "application/vnd.microsoft.card.adaptive",
        Content = JsonConvert.DeserializeObject(adaptiveCardJson),
    };
    return adaptiveCardAttachment;
}
private static async Task SendWelcomeMessageAsync(ITurnContext turnContext, CancellationToken cancellationToken)
{
    foreach (var member in turnContext.Activity.MembersAdded)
    {
        if (member.Id != turnContext.Activity.Recipient.Id)
        {
            if (DateTime.Now.Hour < 12)
            {
                await turnContext.SendActivityAsync($"Hi,Good Morning {member.Name}", cancellationToken: cancellationToken);
            }
            else if (DateTime.Now.Hour < 17)
            {
                await turnContext.SendActivityAsync($"Hi,Good Afternoon {member.Name}", cancellationToken: cancellationToken);
            }
            else
            {
                await turnContext.SendActivityAsync($"Hi,Good Evening {member.Name}", cancellationToken: cancellationToken);
            }
        }
    }
}

}

1 个答案:

答案 0 :(得分:1)

对于欢迎卡,请确保将其发送到Slack支持的活动之一中

  • 消息
  • ConversationUpdate
  • Event.TokenResponse

自适应卡将转换为Slack通道中的图像

在此处查看channels reference以获得更多详细信息