gpt4 book ai didi

c# - 可能的 HeroCard 或 Azure 测试 Web 聊天图像缓存问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:31 26 4
gpt4 key购买 nike

我在 Azure 门户的 Web 聊天测试模拟器上遇到了我认为可能是 HeroCards 的缓存问题。由于 Cortana 不支持 AdaptiveCards,为了完全调试我的机器人,我暂时将 AdaptiveCard 渲染为图像,然后将该图像添加到 HeroCard。然后我将 HeroCard 作为附件添加到回复中。

我发现,如果我在网络聊天的 Azure 测试中输入第一个问题 (A),模拟器中会显示正确的图像,但是如果我问不同的问题 (B),则会显示相同的卡片。我可以看到缓存图像文件夹中的图像正在发生变化,但无法弄清楚为什么卡总是相同的。

我在卡片标题上添加了时间戳,以证明它不是同一张卡片。这是问题 A 中的代码。问题 B 的代码仅在生成的 AdaptiveCard 方面有所不同。

    SingleDayCompactCard card = new SingleDayCompactCard(p1, p2, p3);
// Start of temporary code
Activity reply = activity.CreateReply();
reply.Attachments = new List<Attachment>();
Attachment attachment = await AdaptiveCardToHeroAttachment(card);
reply.Attachments.Add(attachment);
// end of temporary code - remove when Cortana supports Adaptive cards
ConnectorClient connector = new ConnectorClient(new Uri(activity.ServiceUrl));
await connector.Conversations.ReplyToActivityAsync(reply);


async Task<Attachment> AdaptiveCardToHeroAttachment(AdaptiveCard card)
{
AdaptiveHostConfig hostConfig = new AdaptiveHostConfig()
{
SupportsInteractivity = false
};

string path = HttpContext.Current.Request.MapPath(@"\cache\temp.png");

// Create a renderer
AdaptiveCardRenderer renderer = new AdaptiveCardRenderer(hostConfig);
RenderedAdaptiveCardImage raci = null;
try
{
AdaptiveCardParseResult parseResult = AdaptiveCard.FromJson(card.ToJson());
AdaptiveCard c = parseResult.Card;
raci =
await renderer.RenderCardToImageAsync(c, true);
}
catch (Exception e)
{

}

using (System.IO.FileStream output = new System.IO.FileStream(path, FileMode.Create, FileAccess.Write))
{
await raci.ImageStream.CopyToAsync(output);
await output.FlushAsync();
output.Close();
}

HeroCard hero = new HeroCard();
hero.Title = DateTime.Now.ToLongTimeString();
hero.Images.Add(new CardImage("http://localhost:3979/cache/temp.png"));
return hero.ToAttachment();
}

最佳答案

非常感谢埃里克

关闭浏览器缓存不起作用,但使用 base64 编码图像的第二个建议却成功了。

我删除了这段代码,并将其替换为base64编码图像链接中的代码

        HeroCard hero = new HeroCard();
hero.Title = DateTime.Now.ToLongTimeString();
hero.Images.Add(new CardImage("http://localhost:3979/cache/temp.png"));
return hero.ToAttachment();

所以这条线一定是罪魁祸首

CardImage("http://localhost:3979/cache/temp.png "));

再次感谢

关于c# - 可能的 HeroCard 或 Azure 测试 Web 聊天图像缓存问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48233591/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com