我正在使用Amazon Python Ask-SDK包.它使用类似于HTML的图像,您可以使用图像URL或Base64字符串,如下所示:

{
  "type": "Image",
  "source": <image_url> or "data:image/jpeg;base64,<base64_string>",
  "width": "30%",
  "height": "100%"
}

问题是,必须使用的图像是实时生成的,因此没有存储它们的选项,因为随着请求数量的增加,生成和存储的图像将会太多.然而,使用Base64映像会使有效负载比Alexa端可以处理的负载大得多.所以我想知道是否有一种更有效的方式来发送这些有效载荷中的图像.

因为我不是HTML方面的专家,所以我不知道发送文件的其他格式,也不知道如何创建它们.我try 查找字节数组或六进制字符串,但没有成功.

因此,任何帮助都是非常感谢的!先谢谢你.

推荐答案

由于这些图像无法放入Alexa愿意处理的有效负载中,因此您需要将它们发送到带外.

这意味着Alexa将在解析有效负载后向图像URL发出单独的请求.

这也意味着在Alexa解析有效负载并请求图像的同时,需要将图像存储在某个地方.

最简单的方法是将图像存储在S3上,并设置存储桶使其对象在1天后过期(S3中此设置的最小值).这将产生一些存储成本,但这是最简单的开发方法,因为在将对象放到S3之后,您可以轻松地为Alexa生成访问它的URL,并完成一个可以设置为在几秒钟内过期的临时签名.

如果生成图像的服务是有状态的(即作为长期进程运行),您可以向其添加FlaskTM或类似的Web服务器,并将图像存储在内存中的哈希图中,在读取图像后将其删除.

如果服务是无状态的(API网关后面的一堆lambdas或类似的服务),您可以使用ElastiCache实例作为临时存储.最便宜的实例包含在免费级别中,但即使您为其付费,每月也要大约20美元.

Html相关问答推荐

srcset和大小总是下载最大的

删除第一个列表项上的左边框

如何在所有屏幕大小下使带有背景图像的伪元素作为标题的衬底?

具有可展开行的棱角material 表(垫子表),折叠时行之间仍有间隙

如何使用html的<;输入>;处理/绑定Angular 信号?

在弹性框布局中的第n个元素后强制换行

不呈现孙子元素,使用R htmlTools::Taglist为分页的pdf生成HTML

如何在css中在span中绘制圆弧?

如何将tmap按钮和图例更改为位于页脚后面?

为什么 `::before` 在使用内容 `url(svg)` 时会增加一些高度

margin-top 未应用于无序列表的第一项

HTML 如何根据屏幕尺寸调整/裁剪视频背景?

使用 R 中的 rvest 包获取搜索结果的第一个链接

将 HTML 元素粘贴到容器底部,而不剪裁其顶部

带有伪元素的不规则形状的渐变边框

让 Iframe 覆盖整个页面

每次按下按钮时减小字体大小的 jquery 函数

本地 css 样式表未链接

我怎么能有 :not(.class):nth-of-type(even)?

Select 除第一个匹配的子元素之外的第 nth-child(n)