Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用Alexa技巧播放AWS api gateway创建的mp3_Amazon Web Services_Amazon S3_Aws Lambda_Aws Api Gateway_Alexa Skills Kit - Fatal编程技术网

Amazon web services 使用Alexa技巧播放AWS api gateway创建的mp3

Amazon web services 使用Alexa技巧播放AWS api gateway创建的mp3,amazon-web-services,amazon-s3,aws-lambda,aws-api-gateway,alexa-skills-kit,Amazon Web Services,Amazon S3,Aws Lambda,Aws Api Gateway,Alexa Skills Kit,我有一个AWS lambda函数,由AWS api网关调用。该函数从AWS S3上托管的多个mp3文件中获取URL,并将它们连接到单个mp3文件中。当我从浏览器调用api时,一切正常(浏览器打开媒体播放器并播放组合音频mp3) URL请求如下所示: https://0xxxxxxxx.execute-api.eu-west-1.amazonaws.com/alpha/files?file=https://xxx.s3-eu-west-1.amazonaws.com/file1.mp3&f

我有一个AWS lambda函数,由AWS api网关调用。该函数从AWS S3上托管的多个mp3文件中获取URL,并将它们连接到单个mp3文件中。当我从浏览器调用api时,一切正常(浏览器打开媒体播放器并播放组合音频mp3)

URL请求如下所示:

https://0xxxxxxxx.execute-api.eu-west-1.amazonaws.com/alpha/files?file=https://xxx.s3-eu-west-1.amazonaws.com/file1.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file2.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file3.mp3
HTTP响应的类型为audio/mpeg,大约10秒长,并且是base64编码的

在我的技能中,我尝试将其封装到SSML中,但失败了。从Alexa skills kit语音和音调模拟器中,我得到错误消息“检索文本到语音时出错;输入不兼容”

在模拟器中,我写道:

<speak> 
    <audio src='https://0xxxxxxxx.execute-api.eu-west-1.amazonaws.com/alpha/files?file=https://xxx.s3-eu-west-1.amazonaws.com/file1.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file2.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file3.mp3'/>
</speak>

我用这个来确认S3访问在模拟器中工作:

<speak> 
    <audio src='https://s3.amazonaws.com/ask-soundlibrary/human/amzn_sfx_crowd_applause_05.mp3'/>
</speak>

你知道怎么了吗?是我的lambda技能导致http响应出现问题,还是需要在api网关中启用某些功能?从我的api网关日志来看,这项技能似乎从未尝试访问网关


我应该使用不同的方法获取mp3进行播放吗?注意,我想使用SSML,因为我的音频是一种效果,因此不应该使用audioplayer(这是亚马逊的要求)。

好的,我自己已经解决了

SSML audio src似乎不喜欢URL调用中有太多参数。现在,我只需在URL中传递1个参数,并使用lambda函数从单个参数中去除多个文件名

https://0xxxxxxxx.execute-api.eu-west-1.amazonaws.com/alpha/files?file=/file1.mp3file=file2.mp3file=file3.mp3

我可以帮你做这件事。同样的问题也发生在我身上。经过研究,我解决了这个问题。这里的问题是SSML中提供的链接中的“&”。您提供的解决方案有效,因为您的链接中现在没有“&”。参数太多不是问题所在

我建议您将“&”替换为“&;”

用python-


url = 'https://0xxxxxxxx.execute-api.eu-west-1.amazonaws.com/alpha/files?file=https://xxx.s3-eu-west-1.amazonaws.com/file1.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file2.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file3.mp3'
url = url.replace("&","&amp;")


<speak> 
    "<audio src='" +  url + "'/>"
</speak>

url='1〕https://0xxxxxxxx.execute-api.eu-west-1.amazonaws.com/alpha/files?file=https://xxx.s3-eu-west-1.amazonaws.com/file1.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file2.mp3&file=https://xxx.s3-eu-west-1.amazonaws.com/file3.mp3'
url=url。替换(“&”、“&;”)
""

我希望这对你有帮助。如果不起作用,请告诉我。

谢谢Ashish。我很想知道这是否是让多个参数与SSML一起工作的方法(通过快速的谷歌搜索,看起来你是对的),所以我会尝试尝试一下。谢谢你的支持。