/// <summary> /// Start a new conversation /// </summary> public virtual IServiceResponse StartConversation(IServiceRequestWithData <Guid, StartConversationParameters> serviceRequest) { AuthenticationTokenHelper.SetAuthenticationToken(serviceRequest.AuthenticationToken); CorrelationIdHelper.SetCorrelationId(serviceRequest.CorrelationId); var responseData = new ServiceResponse { State = ServiceResponseStateType.FailedValidation }; if (string.IsNullOrWhiteSpace(serviceRequest.Data.Name)) { return(CompleteResponse(responseData)); } var command = new StartConversation { Name = serviceRequest.Data.Name }; try { CommandPublisher.Publish(command); responseData.State = ServiceResponseStateType.Succeeded; } catch (Exception) { responseData.State = ServiceResponseStateType.Unknown; } // Complete the response return(CompleteResponse(responseData)); }
public virtual HttpResponseMessage <ServiceResponse> StartConversation([FromBody] string name) { var responseData = new ServiceResponse { State = ServiceResponseStateType.FailedValidation }; if (string.IsNullOrWhiteSpace(name)) { return(CompleteResponseWithData(responseData)); } var command = new StartConversation { Name = name }; try { CommandPublisher.Publish(command); responseData.State = ServiceResponseStateType.Succeeded; } catch (Exception) { responseData.State = ServiceResponseStateType.Unknown; } // Complete the response return(CompleteResponseWithData(responseData)); }
private void Available() { if (_responseAggregator != null) { Stash.UnstashAll(); _pendingRequest = null; Context.Stop(_responseAggregator); _responseAggregator = null; } Receive<StartConversation>(msg => StartNewOrLocateExistingConversation(msg)); Receive<ConversationMessages.OutgoingChatMessage>(msg => RouteChatMessage(msg)); }
public StartConversationWrapper(StartConversation sc) { line = sc; }
private void StartNewOrLocateExistingConversation(StartConversation msg) { _pendingRequest = msg; if (_conversations.Count == 0) { UseNewConversation(); return; } Become(Asking); _responseAggregator = Context.ActorOf(Props.Create(() => new ConversationLocationAggregatorActor(new HashSet<IActorRef>(_conversations.Values)))); IEnumerable<Guid> participants = msg.Participants.Select(p => p.ClientId).ToList(); _responseAggregator.Tell(new LocateConversation(participants), Self); }