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];
}
}