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

时间:2018-12-10 22:18:51

标签: google-apps-script google-api 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为true不会发生任何事情。我想念什么?

1 个答案:

答案 0 :(得分:1)

问题似乎与缓存有关。环聊聊天正在缓存图像,因此无需每次都下载图像。您可以通过清除浏览器缓存并使用chatbot更新卡来进行尝试。您应该会看到新图像。

您可以做的一件事是在网址末尾添加一个cachebreaker:

widgets: [
             {
                image: {
                   imageUrl: url + new Date().getTime()

                }
             }
         ]

建议here

在同一篇文章中,有人评论说这不是一个好习惯,因为“ 它将淹没缓存(本地缓存和上游缓存)”。他们建议使用a better solution,但是在这种情况下,我们无法控制Cache-Control标头。

我不知道环聊如何管理缓存,但是我想他们会在机器人上载大量不同图像的情况下进行处理。例如,对于您而言,如果每次要在卡中更新URL时都生成一个新URL,那将是相同的,因此,我相信cachebreaker可以为您工作。

希望对您有帮助!