Google apps script Hangouts聊天机器人图像卡未刷新
我正在构建一个聊天机器人。我的机器人将显示来自免费图像api的随机图像。在每次调用时,URL都是相同的,但会得到一个新的图像。不幸的是,我的机器人不会更新图像。它只是在每次通话中重新发布相同的图像。我正在使用谷歌的应用程序脚本部署机器人。我的图像代码如下:Google apps script Hangouts聊天机器人图像卡未刷新,google-apps-script,google-api,hangouts-chat,Google Apps Script,Google Api,Hangouts Chat,我正在构建一个聊天机器人。我的机器人将显示来自免费图像api的随机图像。在每次调用时,URL都是相同的,但会得到一个新的图像。不幸的是,我的机器人不会更新图像。它只是在每次通话中重新发布相同的图像。我正在使用谷歌的应用程序脚本部署机器人。我的图像代码如下: function buildImageCard(url) { return { cards: [ { sections: [
function buildImageCard(url) {
return {
cards: [
{
sections: [
{
widgets: [
{
image: {
imageUrl: url
}
}
]
}
]
}
]
};
}
随机图像显示得和它应该显示的一样。唯一的问题是,当我想再次调用它时,它会显示相同的图像。我似乎找不到刷新卡片的方法。我见过这种方法:
actionResponse: {type: shouldUpdate ? 'UPDATE_MESSAGE' : 'NEW_MESSAGE'},
然后将
shoulldupdate
传递到buildImageCard
。尽管如此,如果shouldUpdate
为true,则不会发生任何事情。我遗漏了什么?问题似乎与缓存有关。Hangouts Chat正在缓存图像,因此不需要每次都下载它们。您可以通过清除浏览器缓存并使用聊天机器人更新卡来尝试。你应该看到新的图像
您可以做的一件事是在url的末尾包含一个缓存断路器:
widgets: [
{
image: {
imageUrl: url + new Date().getTime()
}
}
]
正如建议的那样
另外,在同一篇文章中,有人评论说这不是一个好的做法,“因为它会淹没缓存(本地和上游)”。他们建议,但在这种情况下,我们无法控制缓存控制头
我不知道Hangouts Chat是如何管理缓存的,但我猜他们正在处理缓存,以防机器人上传大量不同的图像。例如,在你的情况下,如果每次你想在卡片中更新一个新的URL时都生成一个新的URL,那么情况也是一样的,所以我相信cachebreaker可以为你工作
我希望有帮助