def create_ctr_record()

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


def create_ctr_record(ctr):
    objectnamespace = os.environ['SF_ADAPTER_NAMESPACE']

    if not objectnamespace or objectnamespace == '-':
        logger.info("SF_ADAPTER_NAMESPACE is empty")
        objectnamespace = ''
    else:
        objectnamespace = objectnamespace + "__"

    sf_request = {}

    sf_request[objectnamespace + 'AWSAccountId__c'] = ctr['AWSAccountId']

    if ctr['Agent']:
        sf_request[objectnamespace + 'AfterContactWorkDuration__c'] = ctr['Agent']['AfterContactWorkDuration']
        sf_request[objectnamespace + 'AfterContactWorkEndTimestamp__c'] = ctr['Agent']['AfterContactWorkEndTimestamp']
        sf_request[objectnamespace + 'AfterContactWorkStartTimestamp__c'] = ctr['Agent']['AfterContactWorkStartTimestamp']
        sf_request[objectnamespace + 'AgentConnectedToAgentTimestamp__c'] = ctr['Agent']['ConnectedToAgentTimestamp']
        sf_request[objectnamespace + 'AgentInteractionDuration__c'] = ctr['Agent']['AgentInteractionDuration']
        sf_request[objectnamespace + 'AgentCustomerHoldDuration__c'] = ctr['Agent']['CustomerHoldDuration']
        sf_request[objectnamespace + 'AgentHierarchyGroup__c'] = json.dumps(ctr['Agent']['HierarchyGroups'])
        sf_request[objectnamespace + 'AgentLongestHoldDuration__c'] = ctr['Agent']['LongestHoldDuration']
        sf_request[objectnamespace + 'AgentNumberOfHolds__c'] = ctr['Agent']['NumberOfHolds']
        sf_request[objectnamespace + 'AgentUsername__c'] = ctr['Agent']['Username']

        if ctr['Agent']['RoutingProfile']:
            sf_request[objectnamespace + 'AgentRoutingProfileARN__c'] = ctr['Agent']['RoutingProfile']['ARN']
            sf_request[objectnamespace + 'AgentRoutingProfileName__c'] = ctr['Agent']['RoutingProfile']['Name']

    sf_request[objectnamespace + 'AgentConnectionAttempts__c'] = ctr['AgentConnectionAttempts']
    sf_request[objectnamespace + 'Attributes__c'] = json.dumps(ctr['Attributes'])
    sf_request[objectnamespace + 'Channel__c'] = ctr['Channel']
    sf_request[objectnamespace + 'ConnectedToSystemTimestamp__c'] = ctr['ConnectedToSystemTimestamp']

    # Customer Data
    if ctr['CustomerEndpoint']:
        sf_request[objectnamespace + 'CustomerEndpointAddress__c'] = ctr['CustomerEndpoint']['Address']

    sf_request[objectnamespace + 'InitiationTimestamp__c'] = ctr['InitiationTimestamp']
    sf_request[objectnamespace + 'InitialContactId__c'] = ctr['InitialContactId']
    sf_request[objectnamespace + 'Initiation_Method__c'] = ctr['InitiationMethod']
    sf_request[objectnamespace + 'InitiationTimestamp__c'] = ctr['InitiationTimestamp']
    sf_request[objectnamespace + 'InstanceARN__c'] = ctr['InstanceARN']
    sf_request[objectnamespace + 'LastUpdateTimestamp__c'] = ctr['LastUpdateTimestamp']
    sf_request[objectnamespace + 'NextContactId__c'] = ctr['NextContactId']
    sf_request[objectnamespace + 'PreviousContactId__c'] = ctr['PreviousContactId']
    sf_request[objectnamespace + 'DisconnectTimestamp__c'] = ctr['DisconnectTimestamp']

    # Queue
    if ctr['Queue']:
        sf_request[objectnamespace + 'QueueARN__c'] = ctr['Queue']['ARN']
        sf_request[objectnamespace + 'QueueDequeueTimestamp__c'] = ctr['Queue']['DequeueTimestamp']
        sf_request[objectnamespace + 'QueueDuration__c'] = ctr['Queue']['Duration']
        sf_request[objectnamespace + 'QueueEnqueueTimestamp__c'] = ctr['Queue']['EnqueueTimestamp']
        sf_request[objectnamespace + 'QueueName__c'] = ctr['Queue']['Name']

    # Recording
    if ctr['Recording']:
        sf_request[objectnamespace + 'RecordingLocation__c'] = ctr['Recording']['Location']
        sf_request[objectnamespace + 'RecordingStatus__c'] = ctr['Recording']['Status']
        sf_request[objectnamespace + 'RecordingDeletionReason__c'] = ctr['Recording']['DeletionReason']
    
    # System End Data
    if ctr['SystemEndpoint']:
        sf_request[objectnamespace + 'SystemEndpointAddress__c'] = ctr['SystemEndpoint']['Address']

    # Transfer Data
    if ctr['TransferredToEndpoint']:
        sf_request[objectnamespace + 'TransferredToEndpoint__c'] = ctr['TransferredToEndpoint']['Address']
        
    if ctr['TransferCompletedTimestamp']:
        sf_request[objectnamespace + 'TransferCompletedTimestamp__c'] = ctr['TransferCompletedTimestamp']

    logger.info(f'Record : {sf_request}')

    sf = Salesforce()
    sf.update_by_external(objectnamespace + "AC_ContactTraceRecord__c", objectnamespace + 'ContactId__c', ctr['ContactId'], sf_request)

    logger.info(f'Record Created Successfully')