我正在尝试使用AWS Java SDK开发一个使用Amazon转录服务的ColdFusion应用程序。不幸的是,我对Java的了解很可怜(更不用说SDK本身了),我花了很长时间才实现任何事情。
下面的代码旨在启动转录作业。它不会抛出错误,但也不会启动作业。我甚至不知道它是否正在向AWS发送任何信息。
据我所知,这段代码完全不正确,但目前我最大的两个问题是:
>
我是否错过了一些明显的步骤来实际将请求发送到AWS?
我如何访问AWS返回的任何响应?invokeRequest变量的转储似乎就是请求数据。
提前感谢您的建议。
(FWIW:CF版本为2016,java版本为1.8.0\u 171,AWS SDK为1.11.331)
<cfscript>
/* Set up credentials */
awsCredentials = createObject('java','com.amazonaws.auth.BasicAWSCredentials').init('#variables.AWSAccessKeyID#', '#variables.AWSSecretKey#');
awsStaticCredentialsProvider = CreateObject('java','com.amazonaws.auth.AWSStaticCredentialsProvider').init(awsCredentials);
/* Create the Transcribe Service Object*/
serviceObject = CreateObject('java', 'com.amazonaws.services.transcribe.AmazonTranscribeAsyncClientBuilder').standard().withCredentials(variables.awsStaticCredentialsProvider).withRegion(#variables.awsRegion#).build();
/* Set up transcription job */
MediaFileUri = CreateObject('java','com.amazonaws.services.transcribe.model.Media').init();
MediaFileUri.setMediaFileUri('#variables.mediafilelocation#');
invokeRequest = CreateObject('java','com.amazonaws.services.transcribe.model.StartTranscriptionJobRequest').init();
invokeRequest.withLanguageCode('en-US');
invokeRequest.withMedia(MediaFileUri);
invokeRequest.withMediaFormat('wav');
invokeRequest.withTranscriptionJobName('#variables.jobname#');
/* Check results of request */
/* Shut down client*/
serviceObject.shutdown();
</cfscript>
这就是我是如何做到这一点的。我将从头开始,以防任何人读到这篇文章都像我一样感到困惑。
第一步是获取AWS Java SDK。在某种程度上,我的印象是,亚马逊转录服务有一个单独的SDK,但事实并非如此。下载文件后,将以下jar文件放在/{coldfusion}/lib/文件夹中(我不确定所有这些都是必要的,但这对我来说是有用的):
aws-java-sdk-xxxx.jar
httpclient-xxxx.jar
httpcore-xxxx.jar
jackson-annotations-xxxx.jar
jackson-core-xxxx.jar
jackson-databind-xxxx.jar
jackson-dataformat-cbor-xxxx.jar
joda-time-xxxx.jar
重新启动ColdFusion服务。
转录服务要求要转录的媒体文件在S3中。例如,我使用ColdFusion的本机支持将我的文件放在S3中的一个桶中,我称之为“转录音频”(注意冒号将密钥ID与秘密分开):
<cffile
action = "copy"
source = "c:\temp\myfilename.wav"
destination = "s3://#variables.AWSAccessKeyID#:#variables.AWSSecretKey#@transcriptaudio/">
然后,媒体的URL将为:
https://s3.{awsregion}.amazonaws.com/transcriptaudio/myfilename.wav
然后这是我开始转录工作的代码:
<cfscript>
/* Set up credentials */
awsCredentials = CreateObject('java', 'com.amazonaws.auth.BasicAWSCredentials').init('#variables.AWSAccessKeyID#','#variables.AWSSecretKey#');
variables.awsStaticCredentialsProvider = CreateObject('java','com.amazonaws.auth.AWSStaticCredentialsProvider').init(awsCredentials);
/* Create the Transcribe Service Object*/
serviceObject = CreateObject('java', 'com.amazonaws.services.transcribe.AmazonTranscribeAsyncClientBuilder').standard().withCredentials(variables.awsStaticCredentialsProvider).withRegion(#variables.awsRegion#).build();
/* Set up transcription job */
MediaFileUri = CreateObject('java','com.amazonaws.services.transcribe.model.Media').init();
MediaFileUri.setMediaFileUri('#variables.mediafileurlstring#');
requestObject = CreateObject('java','com.amazonaws.services.transcribe.model.StartTranscriptionJobRequest').init();
requestObject.withLanguageCode('en-US');
requestObject.withMedia(MediaFileUri);
requestObject.withMediaFormat('wav');
requestObject.withTranscriptionJobName('#variables.jobName#');
/* Send the request */
sendRequest = serviceObject.startTranscriptionJob(requestObject);
/* Shut down client*/
serviceObject.shutdown();
</cfscript>
正如Ageax在评论中指出的那样,转录是异步进行的,所以我有一个单独的CF页面来在它完成后获取成绩单。这段代码基本上假设作业已经完成,但transcritionstatus变量会让我这样做。
<cfscript>
/* Set up credentials */
awsCredentials = CreateObject('java','com.amazonaws.auth.BasicAWSCredentials').init('#variables.AWSAccessKeyID#','#variables.AWSSecretKey#');
variables.awsStaticCredentialsProvider = CreateObject('java','com.amazonaws.auth.AWSStaticCredentialsProvider').init(awsCredentials);
/* Create the Transcribe Service Object*/
serviceObject = CreateObject('java', 'com.amazonaws.services.transcribe.AmazonTranscribeAsyncClientBuilder').standard().withCredentials(variables.awsStaticCredentialsProvider).withRegion(#variables.awsRegion#).build();
/* Set up results object */
requestResultObject = CreateObject('java', 'com.amazonaws.services.transcribe.model.GetTranscriptionJobRequest').init();
requestResultObject.withTranscriptionJobName('#variables.jobName#');
/* Get the results */
requestResult = serviceObject.GetTranscriptionJob(requestResultObject);
/* parse result object into useful variables */
transcriptionStatus = requestResult.TranscriptionJob.TranscriptionJobStatus.toString();
transcriptURL = requestResult.TranscriptionJob.Transcript.TranscriptFileUri.toString();
</cfscript>
现在我有了TranscriptURL,当使用cfhttp检索时,它会返回大量不必要的信息,至少供我使用。这是我获取成绩单实际文本的代码(该服务以数组形式返回成绩单,因此,如果出于某种原因,每个工作可能会有多个成绩单,我会在数组上循环)(是的,我在这里切换到CF标记,因为我更喜欢使用标记):
<CFHTTP url="#variables.transcriptURL#" result="transcriptContentResponse">
<CFSET ResultsStruct = DeserializeJSON(variables.transcriptContentResponse.FileContent)>
<CFSET TranscriptsArray = ResultsStruct.Results.transcripts>
<CFLOOP Array = "#variables.TranscriptsArray#" index="ThisTranscript" >
<cfoutput>
#ThisTranscript['transcript']#
</cfoutput>
</CFLOOP>
注意:试图访问第18行C:\xampp\htdocs\E-LAMAX\app\libraries\Core.php中null类型值的数组偏移量 致命错误:未捕获PDOException:SQLSTATE[42S02]:找不到基表或视图:1146表“lamax.settings”在C:\xampp\htdocs\E-lamax\app\libraries\Database.php中不存在。php:6
我已经做了几个小时了,似乎进展不太快!我已经找到了很多PHP的例子,但是没有ColdFusion的例子。据我所知,我应该在正确的轨道上,但我不断得到一个错误返回。 我的理解是(当然,这可能是错误的),我用cfhttp触发API,并添加cfhttpparam进行授权。但是,我不完全确定头名应该是什么--我已经试过很多次了! 在线文档(https://datamarket.azure.com/data
问题内容: 我在SO上发现了其他几个有关JavaMail API和通过SMTP服务器发送邮件的问题,但是没有一个使用TLS安全性进行讨论。我正在尝试使用JavaMail通过我的工作SMTP邮件服务器向我发送状态更新,但是它需要TLS,而且我在网上找不到任何有关如何使用JavaMail访问需要TLS加密的SMTP服务器的示例。有人能帮忙吗? 问题答案: 实际上,我们的产品中确实有一些通知代码,如果有
我已经阅读了一些关于SaaS/PaaS/IaaS的信息,我在想: 如果我提供了一个SaaS应用程序,我的客户能否使用PaaS开发和部署他自己的应用程序,PaaS将使用一些API与我的SaaS应用程序交互?还是我对云服务的理解有误?
所以我正在构建一个基本的NF令牌。创建了一个基本的铸币函数和映射。我用truffle测试了应用程序,尝试了solidity测试和JS测试。有以下错误。 测试脚本在契约中运行一个简单的内部函数,该函数返回一个int=1000,并将其与测试中声明的预期变量(letexpected=1000)进行比较。这是JS测试脚本 下面是Solidity测试脚本: 我还尝试测试铸币的令牌ID,以及基于我声明的映射的
Java代码: 应用程序在Android9及以下版本中运行,但当应用程序在Android10和11版本中运行时,应用程序会崩溃并出现文件错误。我认为创建临时文件有问题,因为它给了我一个错误。谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢谢你,谢