public ChatEngineFramework() { Amazon.AWSConfigs.AWSRegion = "us-east-1"; Amazon.AWSConfigs.AWSProfileName = ""; ChatConfiguration chatConfiguration = new ChatConfiguration(); AWSDynamoService dataService = new AWSDynamoService(chatConfiguration); FlowStepProvider flowStepProvider = new FlowStepProvider(dataService); chatEngine = new ChatWeb.Services.ChatEngine(null, chatConfiguration, null, dataService, null, null, null, null, null, null, null, null, flowStepProvider); }
public async Task <ActionResult> Post([FromBody] Activity activity, string partner, string context, string channel, string userId, bool dummyMode, [FromServices] ChatWeb.Services.ChatEngine chatEngine) { //set the property to our new object log4net.LogicalThreadContext.Properties["interactionId"] = Guid.NewGuid().ToString(); log4net.LogicalThreadContext.Properties["clientIp"] = NetworkHelpers.GetClientIP(HttpContext); log4net.LogicalThreadContext.Properties["SessionData"] = null; if (String.IsNullOrEmpty(channel)) { channel = activity.ChannelId; } try { logger.DebugFormat("Internal: MessagesController Request: {0}", JsonConvert.SerializeObject(activity)); Activity reply = null; switch (activity.Type) { case ActivityTypes.Message: { if (String.Equals(activity.Text, "-help", StringComparison.OrdinalIgnoreCase)) { reply = activity.CreateReply(HelpText, "en"); } else { reply = await ProcessUserMessage(activity, partner, context, channel, userId, dummyMode, chatEngine); } break; } case ActivityTypes.ConversationUpdate: if (!activity.MembersAdded.Any(m => m.Id != activity.Recipient.Id)) { break; } // Start new chat reply = await ProcessUserMessage(activity, partner, context, channel, userId, dummyMode, chatEngine); break; default: HandleSystemMessage(activity); break; } if (reply != null) { ConnectorClient connectorClient = new ConnectorClient(new Uri(activity.ServiceUrl)); await connectorClient.Conversations.ReplyToActivityAsync(reply); } } catch (Exception ex) { logger.Error("Internal: MessagesController.Post", ex); } return(Ok()); }
private async Task <Activity> ProcessUserMessage(Activity activity, string partner, string context, string channel, string userId, bool dummyMode, ChatWeb.Services.ChatEngine chatEngine) { //set the property to our new object log4net.LogicalThreadContext.Properties["interactionId"] = Guid.NewGuid().ToString(); var sessionRawData = memCacheService.GetObject <string>(activity.Conversation.Id); ChatRequest request = null; BotFrameworkSession sessionData = null; if ((sessionRawData == null) || ((activity.Text != null) && (activity.Text.StartsWith("-new")))) { sessionData = new BotFrameworkSession(); request = CreateNewChat(activity, partner, context, channel, userId, dummyMode); if (request == null) { return(activity.CreateReply("Unsupported partner", "en")); } } else { sessionData = JsonConvert.DeserializeObject <BotFrameworkSession>(sessionRawData); request = new ChatRequest() { ChatId = sessionData.ChatId, UserInput = activity.Text, Channel = channel, UserName = activity.From.Name, Partner = sessionData.Partner, Context = sessionData.Context, DebugData = sessionData.DebugData, ClientData = new ChatClientData { ClientName = "Bot Connector", ClientVersion = "0.0.0.", ClientIp = "0.0.0.0" } }; } ChatResponse chatResponse = await chatEngine.HandleRequest(request); SaveSession(activity, sessionData, request, chatResponse); return(CreateReply(activity, chatResponse)); }