async function actionSuccessful()

in src/index.js [129:202]


async function actionSuccessful(event) {
    console.log("ACTION_SUCCESSFUL");
    
    const fromNumber = event.CallDetails.Participants[0].From;
    const callId = event.CallDetails.Participants[0].CallId;
    
    switch (event.ActionData.Type) {
        case "PlayAudioAndGetDigits":
            // Last action was PlayAudioAndGetDigits
            console.log("Join meeting using Meeting id");
            
            const meetingId = event.ActionData.ReceivedDigits;

            // Get/create meeting
            const meeting = await chime.createMeeting({ ClientRequestToken: meetingId, MediaRegion: 'us-east-1' }).promise();
            console.log("meeting details:" + JSON.stringify(meeting, null, 2));

            // Get/create attendee
            const attendee = await chime.createAttendee({ MeetingId: meeting.Meeting.MeetingId, ExternalUserId: fromNumber }).promise();
            console.log("attendee details:" + JSON.stringify(attendee, null, 2));

            await updateAttendee(event, meeting.Meeting.MeetingId, attendee.Attendee.AttendeeId);

            // Return join meeting action to bridge user to meeting
            joinChimeMeetingAction.Parameters.JoinToken = attendee.Attendee.JoinToken;
            return [joinChimeMeetingAction];

        case "JoinChimeMeeting":
            // Last action was JoinChimeMeeting
            console.log("Join meeting successful");

            // Play meeting joined and register for dtmf
            playAudioAction.Parameters.AudioSource.Key = "meeting_joined.wav";
            return [receiveDigitsAction, playAudioAction];

        case "ModifyChimeMeetingAttendees":
            switch (event.ActionData.Parameters.Operation) {
                case "Mute":
                    var a = await getAttendeeInfo(fromNumber, callId);
                    
                    if (event.ActionData.Parameters.AttendeeList.includes(a[0].attendeeId.S)) {
                        // Mute
                        playAudioAction.Parameters.AudioSource.Key = "muted.wav";
                    }
                    else {
                        // Mute All
                        playAudioAction.Parameters.AudioSource.Key = "mute_all.wav";
                    }
                    return [playAudioAction];

                case "Unmute":
                    var a = await getAttendeeInfo(fromNumber, callId);
                    if (event.ActionData.Parameters.AttendeeList.includes(a[0].attendeeId.S)) {
                        // Unmute
                        playAudioAction.Parameters.AudioSource.Key = "unmuted.wav";
                    }
                    else {
                        // Unmute All
                        playAudioAction.Parameters.AudioSource.Key = "unmute_all.wav";
                    }

                    return [playAudioAction];
            }
            
        case "PlayAudio":
            return [];
            
        case "ReceiveDigits":
            return [];

        default:
            return [playAudioAndGetDigitsAction];
    }
}