in source/aws-connect-vm-serverless/src/main/java/com/amazonaws/kvstream/KVSProcessRecordingLambda.java [59:106]
private boolean processData(String data) {
JSONObject json = new JSONObject(data);
ContactTraceRecord traceRecord = new ContactTraceRecord(json);
List<KVStreamRecordingData> recordings = traceRecord.getRecordings();
if (recordings.size() == 0) {
return false;
}
KVStreamRecordingData recording = recordings.get(0);
// Begin processing audio stream
TranscribeService transcribeService = new TranscribeService(TRANSCRIBE_REGION);
AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();
ContactVoicemailRepo contactVoicemailRepo = new ContactVoicemailRepo(
traceRecord.getContactId(),
traceRecord.getCustomerEndpoint().getAddress(),
new DynamoDB(builder.build()),
logRecordsFlag
);
AudioStreamService streamingService = new AudioStreamService(transcribeService, contactVoicemailRepo);
try {
streamingService.processAudioStream(
recording.getLocation(),
recording.getFragmentStartNumber(),
traceRecord.getAttributes().getAgentId(),
traceRecord.getAttributes().getAgentName(),
traceRecord.getContactId(),
traceRecord.getAttributes().isTranscribeVoicemail(),
traceRecord.getAttributes().isEncryptVoicemail(),
traceRecord.getAttributes().getLanguageCode(),
traceRecord.getAttributes().getSaveCallRecording()
);
MetricsUtil.sendMetrics("ProcessVoicemail", "Success", "",
traceRecord.getAttributes().isTranscribeVoicemail(),
traceRecord.getAttributes().isEncryptVoicemail(),
traceRecord.getAttributes().getLanguageCode().orElse(""));
return true;
} catch (Exception e) {
MetricsUtil.sendMetrics("ProcessVoicemail", "Failure", e.getMessage(),
traceRecord.getAttributes().isTranscribeVoicemail(),
traceRecord.getAttributes().isEncryptVoicemail(),
traceRecord.getAttributes().getLanguageCode().orElse(""));
logger.error("KVS to Transcribe Streaming failed with: ", e);
return false;
}
}