环聊聊天机器人图像卡不刷新
Hangouts Chat Bot image card not refreshing
我正在为 Hangouts Chat 构建一个机器人。我的机器人将显示来自免费图像 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
为真,则什么也不会发生。我错过了什么?
看来问题与缓存有关。 Hangouts Chat 会缓存图片,因此不需要每次都下载它们。您可以通过清除浏览器缓存并使用聊天机器人更新卡片来尝试。您应该会看到新图像。
你可以做的一件事是在 url:
widgets: [
{
image: {
imageUrl: url + new Date().getTime()
}
}
]
按照建议here。
此外,在同一个 post 中,有人评论说这不是一个好的做法“因为它会淹没缓存(本地和上游)”。而且他们推荐a better solution,但是在这种情况下我们无法控制Cache-Control
headers.
我不知道 Hangouts Chat 如何管理缓存,但我猜他们正在处理它以防机器人上传大量不同的图像。例如,在你的情况下,如果你每次想在卡中更新它时都生成一个新的 URL ,那将是相同的,所以我相信 cachebreaker 可以为你工作。
希望对您有所帮助!
我正在为 Hangouts Chat 构建一个机器人。我的机器人将显示来自免费图像 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
为真,则什么也不会发生。我错过了什么?
看来问题与缓存有关。 Hangouts Chat 会缓存图片,因此不需要每次都下载它们。您可以通过清除浏览器缓存并使用聊天机器人更新卡片来尝试。您应该会看到新图像。
你可以做的一件事是在 url:
widgets: [
{
image: {
imageUrl: url + new Date().getTime()
}
}
]
按照建议here。
此外,在同一个 post 中,有人评论说这不是一个好的做法“因为它会淹没缓存(本地和上游)”。而且他们推荐a better solution,但是在这种情况下我们无法控制Cache-Control
headers.
我不知道 Hangouts Chat 如何管理缓存,但我猜他们正在处理它以防机器人上传大量不同的图像。例如,在你的情况下,如果你每次想在卡中更新它时都生成一个新的 URL ,那将是相同的,所以我相信 cachebreaker 可以为你工作。
希望对您有所帮助!