public async stt::Task CreateAgentResourceNamesAsync() { moq::Mock <Agents.AgentsClient> mockGrpcClient = new moq::Mock <Agents.AgentsClient>(moq::MockBehavior.Strict); mockGrpcClient.Setup(x => x.CreateOperationsClient()).Returns(new moq::Mock <lro::Operations.OperationsClient>().Object); CreateAgentRequest request = new CreateAgentRequest { ParentAsLocationName = gagr::LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"), Agent = new Agent(), }; Agent expectedResponse = new Agent { AgentName = AgentName.FromProjectLocationAgent("[PROJECT]", "[LOCATION]", "[AGENT]"), DisplayName = "display_name137f65c2", DefaultLanguageCode = "default_language_codee612e130", TimeZone = "time_zone73f23b20", Description = "description2cf9da67", AvatarUri = "avatar_urie1767db7", SpeechToTextSettings = new SpeechToTextSettings(), StartFlowAsFlowName = FlowName.FromProjectLocationAgentFlow("[PROJECT]", "[LOCATION]", "[AGENT]", "[FLOW]"), EnableStackdriverLogging = false, EnableSpellCorrection = true, }; mockGrpcClient.Setup(x => x.CreateAgentAsync(request, moq::It.IsAny <grpccore::CallOptions>())).Returns(new grpccore::AsyncUnaryCall <Agent>(stt::Task.FromResult(expectedResponse), null, null, null, null)); AgentsClient client = new AgentsClientImpl(mockGrpcClient.Object, null); Agent responseCallSettings = await client.CreateAgentAsync(request.ParentAsLocationName, request.Agent, gaxgrpc::CallSettings.FromCancellationToken(st::CancellationToken.None)); xunit::Assert.Same(expectedResponse, responseCallSettings); Agent responseCancellationToken = await client.CreateAgentAsync(request.ParentAsLocationName, request.Agent, st::CancellationToken.None); xunit::Assert.Same(expectedResponse, responseCancellationToken); mockGrpcClient.VerifyAll(); }
/// <summary> /// Create an agent and the underlying contact. /// /// c.f. https://developers.freshdesk.com/api/#create_agent /// </summary> /// /// <param name="request"> /// The request object containing the information to set on the agent /// </param> /// /// <param name="cancellationToken"></param> /// /// <returns>The newly populated agent</returns> public async Task <Agent> CreateAgentAsync( CreateAgentRequest request, CancellationToken cancellationToken = default) { if (request == null) { throw new ArgumentNullException(nameof(request), "Request must not be null"); } return(await _freshdeskClient .ApiOperationAsync <Agent, CreateAgentRequest>(HttpMethod.Post, $"/api/v2/agents", request, cancellationToken) .ConfigureAwait(false)); }
private bool AgentIsValid(CreateAgentRequest request) { if (request == null) { return(false); } return(!string.IsNullOrWhiteSpace(request.FirstName) && !string.IsNullOrWhiteSpace(request.LastName) && !string.IsNullOrWhiteSpace(request.Email) && !string.IsNullOrWhiteSpace(request.Password) && !string.IsNullOrWhiteSpace(request.PhoneNumber)); }
/// <summary>Snippet for CreateAgent</summary> public void CreateAgentRequestObject() { // Snippet: CreateAgent(CreateAgentRequest, CallSettings) // Create client AgentsClient agentsClient = AgentsClient.Create(); // Initialize request argument(s) CreateAgentRequest request = new CreateAgentRequest { ParentAsLocationName = LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"), Agent = new Agent(), }; // Make the request Agent response = agentsClient.CreateAgent(request); // End snippet }
/// <summary>Snippet for CreateAgentAsync</summary> public async Task CreateAgentRequestObjectAsync() { // Snippet: CreateAgentAsync(CreateAgentRequest, CallSettings) // Additional: CreateAgentAsync(CreateAgentRequest, CancellationToken) // Create client AgentsClient agentsClient = await AgentsClient.CreateAsync(); // Initialize request argument(s) CreateAgentRequest request = new CreateAgentRequest { ParentAsLocationName = LocationName.FromProjectLocation("[PROJECT]", "[LOCATION]"), Agent = new Agent(), }; // Make the request Agent response = await agentsClient.CreateAgentAsync(request); // End snippet }
private bool EmailHasAlias(CreateAgentRequest request) { if (string.IsNullOrWhiteSpace(request.Email)) { return(false); } var parts = request.Email.Split(new[] { "@" }, StringSplitOptions.RemoveEmptyEntries); if (parts.Length != 2) { return(false); } var username = parts[0].ToLower(); return(username.EndsWith("+agent") || username.EndsWith("+customer")); }
public bool CreateAgent(GridRegion destination, AgentCircuitData aCircuit, uint teleportFlags, out CreateAgentResponse response) { response = null; if (destination == null) { response = new CreateAgentResponse(); response.Reason = "Could not connect to destination"; response.Success = false; return(false); } CreateAgentRequest request = new CreateAgentRequest(); request.CircuitData = aCircuit; request.Destination = destination; request.TeleportFlags = teleportFlags; AutoResetEvent resetEvent = new AutoResetEvent(false); OSDMap result = null; MainConsole.Instance.DebugFormat("[Simulation Service Connector]: Sending Create Agent to " + destination.ServerURI); m_syncMessagePoster.Get(destination.ServerURI, request.ToOSD(), (osdresp) => { result = osdresp; resetEvent.Set(); }); bool success = resetEvent.WaitOne(10000); if (!success || result == null) { response = new CreateAgentResponse(); response.Reason = "Could not connect to destination"; response.Success = false; return(false); } response = new CreateAgentResponse(); response.FromOSD(result); if (!response.Success) { return(false); } return(response.Success); }
public CreateAgentResponse UpdateAgent(CreateAgentRequest request) { return(WrapResponse <CreateAgentResponse, CreateAgentResponseBody>( new ServiceExecutionDelegator <CreateAgentResponseBody, CreateAgentRequestBody>().ResolveRequest(request.Request, (request.Request.Platform ?? ConfigurationManager.AppSettings["DefaultPlatform"]), ApiServiceName.UpdateAgent))); }
public async Task <HttpResponseMessage> CreateAgent(CreateAgentRequest request) { var response = await service.CreateAgentAsync(request); return(SendHttpResponse(response)); }
OSDMap LocalSimulationServiceConnector_OnMessageReceived(OSDMap message) { if (!message.ContainsKey("Method")) { return(null); } switch (message["Method"].AsString()) { case "CreateAgentRequest": CreateAgentRequest createAgentRequest = new CreateAgentRequest(); createAgentRequest.FromOSD(message); CreateAgentResponse createAgentResponse = new CreateAgentResponse(); createAgentResponse.Success = CreateAgent(createAgentRequest.Destination, createAgentRequest.CircuitData, createAgentRequest.TeleportFlags, out createAgentResponse); return(createAgentResponse.ToOSD()); case "UpdateAgentPositionRequest": UpdateAgentPositionRequest updateAgentPositionRequest = new UpdateAgentPositionRequest(); updateAgentPositionRequest.FromOSD(message); return(new OSDMap() { new KeyValuePair <string, OSD>("Success", UpdateAgent(updateAgentPositionRequest.Destination, updateAgentPositionRequest.Update)) }); case "UpdateAgentDataRequest": UpdateAgentDataRequest updateAgentDataRequest = new UpdateAgentDataRequest(); updateAgentDataRequest.FromOSD(message); return(new OSDMap() { new KeyValuePair <string, OSD>("Success", UpdateAgent(updateAgentDataRequest.Destination, updateAgentDataRequest.Update)) }); case "FailedToMoveAgentIntoNewRegionRequest": FailedToMoveAgentIntoNewRegionRequest failedToMoveAgentIntoNewRegionRequest = new FailedToMoveAgentIntoNewRegionRequest(); failedToMoveAgentIntoNewRegionRequest.FromOSD(message); FailedToMoveAgentIntoNewRegion(failedToMoveAgentIntoNewRegionRequest.AgentID, failedToMoveAgentIntoNewRegionRequest.RegionID); break; case "CloseAgentRequest": CloseAgentRequest closeAgentRequest = new CloseAgentRequest(); closeAgentRequest.FromOSD(message); CloseAgent(closeAgentRequest.Destination, closeAgentRequest.AgentID); break; case "MakeChildAgentRequest": MakeChildAgentRequest makeChildAgentRequest = new MakeChildAgentRequest(); makeChildAgentRequest.FromOSD(message); MakeChildAgent(makeChildAgentRequest.AgentID, makeChildAgentRequest.OldRegion, makeChildAgentRequest.Destination, makeChildAgentRequest.IsCrossing); break; case "FailedToTeleportAgentRequest": FailedToTeleportAgentRequest failedToTeleportAgentRequest = new FailedToTeleportAgentRequest(); failedToTeleportAgentRequest.FromOSD(message); FailedToTeleportAgent(failedToTeleportAgentRequest.Destination, failedToTeleportAgentRequest.FailedRegionID, failedToTeleportAgentRequest.AgentID, failedToTeleportAgentRequest.Reason, failedToTeleportAgentRequest.IsCrossing); break; case "RetrieveAgentRequest": RetrieveAgentRequest retrieveAgentRequest = new RetrieveAgentRequest(); retrieveAgentRequest.FromOSD(message); RetrieveAgentResponse retrieveAgentResponse = new RetrieveAgentResponse(); retrieveAgentResponse.Success = RetrieveAgent(retrieveAgentRequest.Destination, retrieveAgentRequest.AgentID, retrieveAgentRequest.AgentIsLeaving, out retrieveAgentResponse.AgentData, out retrieveAgentResponse.CircuitData); return(retrieveAgentResponse.ToOSD()); case "CreateObjectRequest": CreateObjectRequest createObjectRequest = new CreateObjectRequest(); createObjectRequest.FromOSD(message); createObjectRequest.Scene = GetScene(createObjectRequest.Destination.RegionID); createObjectRequest.DeserializeObject(); return(new OSDMap() { new KeyValuePair <string, OSD>("Success", CreateObject(createObjectRequest.Destination, createObjectRequest.Object)) }); } return(null); }
/// <summary>Creates a test agent user with the specified services.</summary> /// <param name="request">The requested service names.</param> public AgentResult CreateUser(CreateAgentRequest request) { var restRequest = this.CreateRequest(request); return(this.ExecuteRequest <AgentResult>(restRequest)); }
public async Task <ApiResponse <CreateAgentResponse> > CreateAgentAsync(CreateAgentRequest request) { try { var now = DateTime.UtcNow; if (request == null || !AgentIsValid(request)) { return(new ApiResponse <CreateAgentResponse>(null) { HasError = true, Message = "Insufficient agent information was sent.", StatusCode = StatusCodes.BadRequest }); } if (EmailHasAlias(request)) { return(new ApiResponse <CreateAgentResponse>(null) { HasError = true, Message = "The email address should not contain an agent or customer alias.", StatusCode = StatusCodes.BadRequest }); } var customerEmail = AddEmailAlias(request.Email, "+customer"); var agentEmail = AddEmailAlias(request.Email, "+agent"); if (customerEmail == null || agentEmail == null) { return(new ApiResponse <CreateAgentResponse>(null) { HasError = true, Message = "The email address was invalid.", StatusCode = StatusCodes.BadRequest }); } var taskRouter = new TaskRouterClient(appSettings.Get("twilio:AccountSID"), appSettings.Get("twilio:AuthToken")); var worker = taskRouter.AddWorker( appSettings.Get("twilio:WorkspaceSID"), $"Agent {request.FirstName} {request.LastName}", appSettings.Get("twilio:IdleActivitySID"), "{}"); if (worker.RestException != null) { return(new ApiResponse <CreateAgentResponse>(null) { HasError = true, Message = worker.RestException.Message, StatusCode = StatusCodes.BadRequest }); } worker.Attributes = JsonConvert.SerializeObject(new { skills = new[] { "voice", "sms", "messaging" }, sid = worker.Sid }); worker = taskRouter.UpdateWorker( worker.WorkspaceSid, worker.Sid, worker.ActivitySid, worker.Attributes, worker.FriendlyName); if (worker.RestException != null) { return(new ApiResponse <CreateAgentResponse>(null) { HasError = true, Message = worker.RestException.Message, StatusCode = StatusCodes.BadRequest }); } var auth0Agent = await auth0.CreatePasswordUserAsync(agentEmail, request.Password); var auth0Customer = await auth0.CreatePasswordUserAsync(customerEmail, request.Password); if (auth0Customer.InvalidRequest || auth0Agent.InvalidRequest) { return(new ApiResponse <CreateAgentResponse>(null) { HasError = true, Message = "Error creating auth0 users.", StatusCode = StatusCodes.BadRequest }); } var customer = new Customer { IdentityID = auth0Customer.UserId, FirstName = request.FirstName, LastName = request.LastName, Address = CreateDefaultAddress(), PhoneNumber = request.PhoneNumber, ValueLevel = CustomerValueLevel.Gold, CreatedDate = now, ModifiedDate = now, IsActive = true }; var agent = new Agent { IdentityID = auth0Agent.UserId, SID = worker.Sid, FirstName = "Agent", LastName = request.LastName, CreatedDate = now, ModifiedDate = now, IsActive = true, PairedCustomer = customer }; CreateSeedData(customer); context.Agents.Add(agent); await context.SaveChangesAsync(); // Send a hockey app invite using (var client = new HttpClient()) { try { var appId = appSettings.Get("hockeyApp:AppID"); var appSecret = appSettings.Get("hockeyApp:Secret"); client.BaseAddress = new Uri("https://rink.hockeyapp.net/"); client.DefaultRequestHeaders.Add("X-HockeyAppToken", appSecret); var msg = $"Hello {request.FirstName},\n" + $"An account for Owl Finance has been created for you.\n\n" + $"The webpage is https://YOUR-WEBPAGE-URL.com\n" + $"Your username for the mobile app is {customerEmail}. The password is {request.Password}.\n" + $"Your username for the web site is {agentEmail}. The password is {request.Password}.\n\n" + $"Please contact YOUR-EMAIL with any questions!\n" + $"Thanks"; var pairs = new List <KeyValuePair <string, string> > { new KeyValuePair <string, string>("first_name", request.FirstName), new KeyValuePair <string, string>("last_name", request.LastName), new KeyValuePair <string, string>("email", request.Email), new KeyValuePair <string, string>("message", msg) }; var content = new FormUrlEncodedContent(pairs); var response = await client.PostAsync($"api/2/apps/{appId}/app_users", content); if (!response.IsSuccessStatusCode) { return(new ApiResponse <CreateAgentResponse>(null) { HasError = true, Message = "Error creating hockey app invite.", StatusCode = StatusCodes.BadRequest }); } } catch (Exception) { // do nothing } } var successResponse = new ApiResponse <CreateAgentResponse>(new CreateAgentResponse()) { HasError = false, Message = "Your account has been created. Please check your email.", }; return(successResponse); } catch (Exception e) { return(HandleErrorAndReturnStatus <ApiResponse <CreateAgentResponse> >(e)); } }