in source/aws-connect-vm-serverless/src/main/java/com/amazonaws/audio/AudioUtils.java [81:128]
public static S3UploadInfo uploadRawAudio(Regions region, String bucketName, String keyPrefix, String audioFilePath,
String agentId, String contactId, boolean publicReadAcl,
AWSCredentialsProvider awsCredentials) {
File wavFile = null;
S3UploadInfo uploadInfo = null;
try {
AmazonS3Client s3Client = (AmazonS3Client)AmazonS3ClientBuilder.standard()
.withRegion(region)
.withCredentials(awsCredentials)
.build();
wavFile = convertToWav(audioFilePath);
// upload the raw audio file to the designated S3 location
String objectKey = keyPrefix + wavFile.getName();
logger.info(String.format("Uploading Audio: to %s/%s from %s", bucketName, objectKey, wavFile));
PutObjectRequest request = new PutObjectRequest(bucketName, objectKey, wavFile);
ObjectMetadata metadata = new ObjectMetadata();
metadata.setContentType("audio/wav");
metadata.addUserMetadata("contact-id", contactId);
metadata.addUserMetadata("agent-id", agentId);
request.setMetadata(metadata);
if (publicReadAcl) {
request.setCannedAcl(CannedAccessControlList.PublicRead);
}
PutObjectResult s3result = s3Client.putObject(request);
logger.info("putObject completed successfully " + s3result.getETag());
uploadInfo = new S3UploadInfo(bucketName, objectKey, region);
} catch (SdkClientException e) {
logger.error("Audio upload to S3 failed: ", e);
throw e;
} catch (UnsupportedAudioFileException|IOException e) {
logger.error("Failed to convert to wav: ", e);
} finally {
if (wavFile != null) {
wavFile.delete();
}
}
return uploadInfo;
}