deliver()

in source/aws-connect-vm-serverless/src/service/notification.service.js [51:86]


    deliver(globalSettings, voicemail, connectAgent) {
        let options = this.getTranscribeAndEncryptionSettings(globalSettings, voicemail);
        let deliveryOptions = connectAgent.agent.deliveryOptions;
        let shouldSendEmail = deliveryOptions.email;
        let shouldSendSMS = deliveryOptions.sms.enabled;
        let contactEmail = connectAgent.connectUser.email || connectAgent.connectUser.username; // For SSO instances
        let agentSMSPhoneNumber = deliveryOptions.sms.phoneNumber;
        let deliveryEmail = globalSettings.deliveryEmail;

        if (!deliveryEmail) {
            throw "You must provide a delivery email";
        }

        if (!shouldSendEmail && !shouldSendSMS) {
            console.log("NOT sending email or sms");
            return Promise.resolve({message: "Not sending Email or SNS"});
        } else {
            if (shouldSendEmail && shouldSendSMS) {
                console.log(`Should Send BOTH email and SMS`);
                return this.getDeliveryContents(options, voicemail).then(contents => {
                    return this.sendTextMessage(voicemail, agentSMSPhoneNumber, contents)
                        .then(() => this.sendMail(voicemail, deliveryEmail, contactEmail, contents));
                });
            } else if (shouldSendSMS && agentSMSPhoneNumber) {
                console.log("Send ONLY SMS");
                return Promise.resolve();
            } else if (deliveryOptions.email) {
                console.log("Send ONLY Email");
                return this.getDeliveryContents(options, voicemail).then(contents => {
                    return this.sendMail(voicemail, deliveryEmail, contactEmail, contents);
                });
            } else {
                return Promise.resolve({message: "Undeliverable"});
            }
        }
    }