def lambda_handler()

in sam-app/lambda_functions/sfProcessTranscriptionResult.py [0:0]


def lambda_handler(event, context):
    try:
        logger.info('Received event: %s' % event)
        transcriptFileUri = event["TranscriptionJob"]["Transcript"]["TranscriptFileUri"]
        languageCode = event["TranscriptionJob"]["LanguageCode"].split('-')[0]
        bucket = transcriptFileUri.split('/')[3]
        key = transcriptFileUri.split('/')[4]
        contactId = event["TranscriptionJob"]["TranscriptionJobName"].split('_')[0]

        logger.info('Getting lock file metadata: %s ' % contactId)
        oMetadata = getS3FileMetadata(bucket, key.split('_')[0])

        postcallTranscribeComprehendAnalysis = []
        if 'postcallTranscribeComprehendAnalysis'.lower() in oMetadata:
            postcallTranscribeComprehendAnalysis = oMetadata['postcallTranscribeComprehendAnalysis'.lower()].split(',')

        mACContactChannelAnalyticsId = None
        if 'ACContactChannelAnalyticsId'.lower() in oMetadata:
            mACContactChannelAnalyticsId = oMetadata['ACContactChannelAnalyticsId'.lower()]

        logger.info('Retrieving transcription file: %s', key)
        transcriptObj = getS3FileJSONObject(bucket, key)
        logger.info('Retrieved transcription file: %s', key)

        logger.info('Processing Customer transcript')
        customerTranscripts = processTranscript(transcriptObj['results']['channel_labels']['channels'][0]['items'])
        logger.info('Customer transcript: %s' % customerTranscripts)
        logger.info('Processing Agent transcript')
        agentTranscripts = processTranscript(transcriptObj['results']['channel_labels']['channels'][1]['items'])
        logger.info('Agent transcript: %s' % agentTranscripts)

        comprehendResults = {}
        #Test Comprehend
        if len(customerTranscripts) > 0:
            for ca in postcallTranscribeComprehendAnalysis:
                if ca == 'snt':
                    comprehendResults['FormattedSentiment'] = GetFormattedSentiment(StartComprehendAnalysis(customerTranscripts, 'snt', languageCode, False))
                elif ca=='kw':
                    comprehendResults['FormattedKeywords'] = GetFormattedKeywords(StartComprehendAnalysis(customerTranscripts, 'kw', languageCode, False))
                elif ca=='dl':
                    comprehendResults['FormattedDominantLanguage'] = GetFormattedDominantLanguage(StartComprehendAnalysis(customerTranscripts, 'dl', languageCode, False))
                elif ca=='ne':
                    comprehendResults['FormattedNamedEntities'] = GetFormattedNamedEntities(StartComprehendAnalysis(customerTranscripts, 'ne', languageCode, False))
                elif ca=='syn':
                    comprehendResults['FormattedSyntax'] = GetFormattedSyntax(StartComprehendAnalysis(customerTranscripts, 'syn', languageCode, False))
        #End Test Comprehend
        
        createSalesforceObject(contactId, customerTranscripts, agentTranscripts, comprehendResults, mACContactChannelAnalyticsId)

        updateLock(bucket, key.split('_')[0], oMetadata)

        logger.info('Done')
        return {"Done": True}
    except Exception as e:
        raise e