internal virtual GetActivityTaskResponse GetActivityTask(GetActivityTaskRequest request) { var marshaller = new GetActivityTaskRequestMarshaller(); var unmarshaller = GetActivityTaskResponseUnmarshaller.Instance; return(Invoke <GetActivityTaskRequest, GetActivityTaskResponse>(request, marshaller, unmarshaller)); }
/// <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)); }
/// <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)); }
internal virtual GetActivityTaskResponse GetActivityTask(GetActivityTaskRequest request) { var options = new InvokeOptions(); options.RequestMarshaller = GetActivityTaskRequestMarshaller.Instance; options.ResponseUnmarshaller = GetActivityTaskResponseUnmarshaller.Instance; return(Invoke <GetActivityTaskResponse>(request, options)); }
/// <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"); } }
/// <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!"); }
//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) + ""eid=" + quoteid + "'>Click To Approve</a></h3><br />" + //"https://wyunsq1ccf.execute-api.us-east-1.amazonaws.com/respond/approve?taskToken=" + Uri.EscapeDataString(token) + ""eid=" + quoteid + "<br />" + "Or reject:<br />" + "<h3><a href='https://wyunsq1ccf.execute-api.us-east-1.amazonaws.com/respond/reject?taskToken=" + Uri.EscapeDataString(token) + ""eid=" + 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) + ""eid=" + 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); }