コード例 #1
0
        internal virtual GetActivityTaskResponse GetActivityTask(GetActivityTaskRequest request)
        {
            var marshaller   = new GetActivityTaskRequestMarshaller();
            var unmarshaller = GetActivityTaskResponseUnmarshaller.Instance;

            return(Invoke <GetActivityTaskRequest, GetActivityTaskResponse>(request, marshaller, unmarshaller));
        }
コード例 #2
0
        /// <summary>
        /// Initiates the asynchronous execution of the GetActivityTask operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the GetActivityTask operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/GetActivityTask">REST API Reference for GetActivityTask Operation</seealso>
        public virtual Task <GetActivityTaskResponse> GetActivityTaskAsync(GetActivityTaskRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var marshaller   = new GetActivityTaskRequestMarshaller();
            var unmarshaller = GetActivityTaskResponseUnmarshaller.Instance;

            return(InvokeAsync <GetActivityTaskRequest, GetActivityTaskResponse>(request, marshaller,
                                                                                 unmarshaller, cancellationToken));
        }
コード例 #3
0
        /// <summary>
        /// Initiates the asynchronous execution of the GetActivityTask operation.
        /// </summary>
        ///
        /// <param name="request">Container for the necessary parameters to execute the GetActivityTask operation.</param>
        /// <param name="cancellationToken">
        ///     A cancellation token that can be used by other objects or threads to receive notice of cancellation.
        /// </param>
        /// <returns>The task object representing the asynchronous operation.</returns>
        /// <seealso href="http://docs.aws.amazon.com/goto/WebAPI/states-2016-11-23/GetActivityTask">REST API Reference for GetActivityTask Operation</seealso>
        public virtual Task <GetActivityTaskResponse> GetActivityTaskAsync(GetActivityTaskRequest request, System.Threading.CancellationToken cancellationToken = default(CancellationToken))
        {
            var options = new InvokeOptions();

            options.RequestMarshaller    = GetActivityTaskRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetActivityTaskResponseUnmarshaller.Instance;

            return(InvokeAsync <GetActivityTaskResponse>(request, options, cancellationToken));
        }
コード例 #4
0
        internal virtual GetActivityTaskResponse GetActivityTask(GetActivityTaskRequest request)
        {
            var options = new InvokeOptions();

            options.RequestMarshaller    = GetActivityTaskRequestMarshaller.Instance;
            options.ResponseUnmarshaller = GetActivityTaskResponseUnmarshaller.Instance;

            return(Invoke <GetActivityTaskResponse>(request, options));
        }
コード例 #5
0
        /// <summary>
        /// Waits for an SMS activity to begin, then handles it.
        /// </summary>
        public async Task WaitSmsAsync(ILambdaContext context)
        {
            var startTime     = DateTime.Now;
            var timeAvailable = TimeSpan.FromMinutes(4);

            using (var client = StepFunctionClientFactory.GetClient())
            {
                TimeSpan timeLeft;
                do
                {
                    context.Logger.LogLine("Polling GetActivityTask");
                    var arn = ServerlessConfig.WaitSmsResponseActivityArn;
                    var req = new GetActivityTaskRequest {
                        ActivityArn = arn
                    };
                    var result = await client.GetActivityTaskAsync(req).ConfigureAwait(false);

                    if (result.Input != null && result.TaskToken != null)
                    {
                        context.Logger.LogLine("Received token");

                        // get the current state for the activity
                        var state = JsonConvert.DeserializeObject <State>(result.Input);

                        // save the task token to the survey response and persist the current state
                        // so we can restore it later.
                        var surveyResponse = await _DataAccess.GetSurveyResponseAsync(Sanitizer.HashPhoneNumber(state.PhoneNumber))
                                             .ConfigureAwait(false);

                        surveyResponse.TaskToken  = result.TaskToken;
                        surveyResponse.SavedState = state;
                        await _DataAccess.SaveSurveyResponeAsync(surveyResponse).ConfigureAwait(false);

                        // ask the question -- do this last so that the current state is persisted with the task token
                        await AskQuestionAsync(state.PhoneNumber, Survey.GetQuestion(state.Question)).ConfigureAwait(false);
                    }

                    timeLeft = timeAvailable - (DateTime.Now - startTime);
                } while (timeLeft.TotalMilliseconds >= 65000);

                context.Logger.LogLine("Polling loop terminated");
            }
        }
コード例 #6
0
ファイル: Function.cs プロジェクト: mandia1204/aws-services
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public async Task <string> FunctionHandler(ILambdaContext context)
        {
            var client    = GetStepFunctionsClient();
            var snsClient = new AmazonSimpleNotificationServiceClient(bucketRegion);;

            var req = new GetActivityTaskRequest()
            {
                ActivityArn = "arn:aws:states:us-east-2:341189667252:activity:ApproveRequest"
            };
            var response = await client.GetActivityTaskAsync(req);

            if (response == null || response.Input == null)
            {
                return("No activities received after 60 seconds.");
            }

            var approveData = JsonSerializer.Deserialize <ApproveData>(response.Input);
            var token       = WebUtility.UrlEncode(response.TaskToken);
            var emailBody   = "can you approve? ," + "https://8tj14zkhq2.execute-api.us-east-2.amazonaws.com/respond/succeed?taskToken=" + token + " or reject: " + "https://8tj14zkhq2.execute-api.us-east-2.amazonaws.com/respond/fail?taskToken=" + token;
            var pubReq      = new PublishRequest();

            pubReq.TopicArn = "arn:aws:sns:us-east-2:341189667252:approval-request";
            pubReq.Message  = emailBody;
            pubReq.Subject  = "Need your confirmation!";

            try
            {
                await snsClient.PublishAsync(pubReq);
            }
            catch (AmazonSimpleNotificationServiceException ex)
            {
                return("error in sending notification:" + ex.Message);
            }

            return("worker completed!");
        }
コード例 #7
0
        //const aws = require('aws-sdk');
        /// <summary>
        /// A simple function that takes a string and does a ToUpper
        /// </summary>
        /// <param name="input"></param>
        /// <param name="context"></param>
        /// <returns></returns>
        public string FunctionHandler(ILambdaContext context)
        {
            //try
            //{
            //    var bucketName = System.Environment.GetEnvironmentVariable("mysqlconnection");
            //    var quotenumber = GetQuote(58);
            //    string input = quotenumber.QuoteNumber;
            //    return input?.ToUpper();
            //}
            //catch (Exception e)
            //{ }
            LambdaLogger.Log("1. Lambda start");
            //Starts workflow instance with parameter
            var stste = StartWorkflowInstanceAsync();

            LambdaLogger.Log("2. Workflow started." + stste ?? "".ToString());
            string emailstatus = "Problem occured in email approval.";
            string token       = string.Empty;

            try
            {
                //AmazonStepFunctionsClient stepfunctions = new AmazonStepFunctionsClient(Amazon.RegionEndpoint.USEast1);
                AmazonSimpleEmailServiceClient ses          = new AmazonSimpleEmailServiceClient(Amazon.RegionEndpoint.USEast1);
                Task <GetActivityTaskResponse> responsetask = null;
                GetActivityTaskResponse        response     = null;
                //return "Success";
                LambdaLogger.Log("Task ARN");
                var aws_access_key_id     = Environment.GetEnvironmentVariable("aws_access_key_id");
                var aws_secret_access_key = Environment.GetEnvironmentVariable("aws_secret_access_key");
                using (AmazonStepFunctionsClient stepfunctions = new AmazonStepFunctionsClient(aws_access_key_id, aws_secret_access_key, Amazon.RegionEndpoint.USEast1))
                {
                    GetActivityTaskRequest request = new GetActivityTaskRequest {
                        ActivityArn = "arn:aws:states:us-east-1:494875521123:activity:PMApprovalStep", WorkerName = "PMApprovingTaskActivity"
                    };
                    LambdaLogger.Log("Response Output req sent ");
                    responsetask = stepfunctions.GetActivityTaskAsync(request);
                    responsetask.GetAwaiter();
                    response = responsetask.Result;
                    //if(responsetask.)
                    if (response != null)
                    {
                        LambdaLogger.Log("Response Output = " + response.Input);
                    }
                    else
                    {
                        LambdaLogger.Log("Response Output = null");
                    }
                    token = response.TaskToken;
                    LambdaLogger.Log("Token = " + token);
                }
                if (!string.IsNullOrEmpty(response.Input))
                {
                    List <string> tolst = GetUsersAsPerRole("PM");

                    var input = JObject.Parse(response.Input);
                    //var email = "*****@*****.**"; //get to mail from salesOrg as per approval level
                    var quoteid = (int)input.SelectToken("quoteid");
                    //var tolst = new List<string>();
                    //tolst.Add(email);
                    Body body = new Body
                    {
                        Html = new Content
                        {
                            Charset = "UTF-8",
                            Data    = "<div>Hi!<br /><br /> " +
                                      "Promotion '" + (string)input.SelectToken("promodesc") + "' needs your approval!<br />" +
                                      "Can you please approve:<br /> <h3><a href='https://wyunsq1ccf.execute-api.us-east-1.amazonaws.com/respond/approve?taskToken=" + Uri.EscapeDataString(token) + "&quoteid=" + quoteid + "'>Click To Approve</a></h3><br />" +
                                      //"https://wyunsq1ccf.execute-api.us-east-1.amazonaws.com/respond/approve?taskToken=" + Uri.EscapeDataString(token) + "&quoteid=" + quoteid + "<br />" +
                                      "Or reject:<br />" +
                                      "<h3><a href='https://wyunsq1ccf.execute-api.us-east-1.amazonaws.com/respond/reject?taskToken=" + Uri.EscapeDataString(token) + "&quoteid=" + quoteid + "'>Click To Reject</a></h3></div><br /><br />Thank You,<br />Application Team"
                                      //"https://wyunsq1ccf.execute-api.us-east-1.amazonaws.com/respond/reject?taskToken=" + Uri.EscapeDataString(token) + "&quoteid=" + quoteid + "</div>"
                        }
                    };
                    Content subjectContent = new Content
                    {
                        Charset = "UTF-8",
                        Data    = "Your Approval Needed as Pricing Manager for Promotion Id " + quoteid
                    };

                    LambdaLogger.Log("Starting Mail sending.. ");
                    Message msg = new Message {
                        Body = body, Subject = subjectContent
                    };
                    SendEmailRequest s = new SendEmailRequest
                    {
                        Source      = "*****@*****.**",
                        Destination = new Destination {
                            ToAddresses = tolst
                        },
                        Message = msg,
                        ConfigurationSetName = "sesconfigset",
                        SourceArn            = "arn:aws:ses:us-east-1:494875521123:identity/[email protected]"
                    };
                    var status = ses.SendEmailAsync(s);
                    status.GetAwaiter();

                    emailstatus = status.Result.HttpStatusCode.ToString();


                    LambdaLogger.Log("Going to update Db");
                    if (!string.IsNullOrEmpty(token))
                    {
                        UpdateApprovalStatusWithToken(quoteid, Uri.EscapeDataString(token));   //Moving quote status to 3(PM) and updating token
                    }
                    //string input,
                    //var bucketName = System.Environment.GetEnvironmentVariable("mysqlconnection");
                    //var quotenumber = GetQuote(58);
                    //input = quotenumber.QuoteNumber;
                    //return input?.ToUpper();
                }
            }
            catch (Exception e)
            { LambdaLogger.Log("Response Output = " + e); }
            return(emailstatus);
        }