环聊聊天机器人图像卡不刷新

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 可以为你工作。

希望对您有所帮助!