我正在为环聊聊天创建一个机器人。我的机器人将显示来自免费图像API的随机图像。 api's URL在每个呼叫中都使用相同的URL,但会得到一个新图像。不幸的是,我的机器人无法更新该图像。它只是在每个呼叫上重新发布相同的图像。我正在使用Google的应用脚本来部署机器人。我的图像代码如下:
function buildImageCard(url) {
return {
cards: [
{
sections: [
{
widgets: [
{
image: {
imageUrl: url
}
}
]
}
]
}
]
};
}
随机图像按应有的方式显示。唯一的问题是,当我想再次调用它时,它会显示相同的图像。我似乎找不到刷新卡的方法。我见过这种方法:
actionResponse: {type: shouldUpdate ? 'UPDATE_MESSAGE' : 'NEW_MESSAGE'},
然后将shouldUpdate
传递到buildImageCard
。尽管shouldUpdate
为true不会发生任何事情。我想念什么?
答案 0 :(得分:1)
问题似乎与缓存有关。环聊聊天正在缓存图像,因此无需每次都下载图像。您可以通过清除浏览器缓存并使用chatbot更新卡来进行尝试。您应该会看到新图像。
您可以做的一件事是在网址末尾添加一个cachebreaker:
widgets: [
{
image: {
imageUrl: url + new Date().getTime()
}
}
]
建议here。
在同一篇文章中,有人评论说这不是一个好习惯,因为“ 它将淹没缓存(本地缓存和上游缓存)”。他们建议使用a better solution,但是在这种情况下,我们无法控制Cache-Control
标头。
我不知道环聊如何管理缓存,但是我想他们会在机器人上载大量不同图像的情况下进行处理。例如,对于您而言,如果每次要在卡中更新URL时都生成一个新URL,那将是相同的,因此,我相信cachebreaker可以为您工作。
希望对您有帮助!