public async Task <IActionResult> SendVoiceMessage([FromBody] VoiceMessageModel model) { if (model == null || string.IsNullOrWhiteSpace(model.DestinationNumber) || (string.IsNullOrWhiteSpace(model.SsmlMessage) && string.IsNullOrWhiteSpace(model.PlainTextMessage))) { return(BadRequestResult("Voice message")); } if (!ValidationHelper.IsValidPhoneNumber(model.DestinationNumber)) { return(BadRequestResult("Voice message")); } using (AmazonPinpointSMSVoiceClient client = new AmazonPinpointSMSVoiceClient(_awsCredentials, RegionEndpoint.GetBySystemName(_awsSettings.Region))) { SendVoiceMessageRequest sendVoiceMessageRequest = new SendVoiceMessageRequest { DestinationPhoneNumber = model.DestinationNumber, OriginationPhoneNumber = _awsSettings.AwsTextVoiceMessage.OriginationNumber, Content = new VoiceMessageContent { SSMLMessage = string.IsNullOrWhiteSpace(model.SsmlMessage) ? null : new SSMLMessageType { LanguageCode = model.LanguageCode ?? _awsSettings.LanguageCode, //en-US is ideal for US. VoiceId = model.VoiceId ?? "Matthew", Text = model.SsmlMessage }, PlainTextMessage = !string.IsNullOrWhiteSpace(model.SsmlMessage) ? null : new PlainTextMessageType { LanguageCode = model.LanguageCode ?? _awsSettings.LanguageCode, //en-US is ideal for US. VoiceId = model.VoiceId ?? "Matthew", Text = model.PlainTextMessage } } }; try { SendVoiceMessageResponse response = await client.SendVoiceMessageAsync(sendVoiceMessageRequest); if (response.HttpStatusCode != HttpStatusCode.OK) { return(BadRequestResult("Voice message")); } } catch { return(BadRequestResult("Voice message")); } return(new OkObjectResult(new { success = true, message = "Voice message sent." })); } }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(JsonUnmarshallerContext context) { SendVoiceMessageResponse response = new SendVoiceMessageResponse(); context.Read(); int targetDepth = context.CurrentDepth; while (context.ReadAtDepth(targetDepth)) { if (context.TestExpression("MessageId", targetDepth)) { var unmarshaller = StringUnmarshaller.Instance; response.MessageId = unmarshaller.Unmarshall(context); continue; } } return(response); }