示例#1
0
        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);
        }