//public static DirectLineClient client; //public static Microsoft.Bot.Connector.DirectLine.Conversation dconversation; //public static string watermark = null; //public static ConnectorClient connector; //public static Microsoft.Bot.Connector.Activity activity; /// <summary> /// POST: api/Messages /// Receive a message from a user and reply to it /// </summary> public async Task <HttpResponseMessage> Post([FromBody] Microsoft.Bot.Connector.Activity int_activity) { UserStuff user = null; if (users.ContainsKey(int_activity.From.Id)) { user = users[int_activity.From.Id]; } else { users[int_activity.From.Id] = new UserStuff() { activity = int_activity }; user = users[int_activity.From.Id]; } try { if (int_activity.Type == Microsoft.Bot.Connector.ActivityTypes.Message) { Trace.WriteLine("Got Message"); Trace.WriteLine(int_activity.ToString()); //create connector service user.connector = new ConnectorClient(new Uri(int_activity.ServiceUrl)); //var rply = int_activity.CreateReply($"Successful connection for {JsonConvert.SerializeObject(int_activity, Formatting.Indented)}"); //await user.connector.Conversations.ReplyToActivityAsync(rply); //conv = await connector.Conversations.CreateDirectConversationAsync(activity.Recipient, activity.From); //activity.Conversation.Id = conv.Id; if (user.client == null) { user.client = new DirectLineClient(directLineSecret); } if (user.dconversation == null) { user.dconversation = await user.client.Conversations.StartConversationAsync(); new System.Threading.Thread(async() => await user.ReadBotMessagesAsync()).Start(); } // send user's input to health service bot Microsoft.Bot.Connector.DirectLine.Activity dact = new Microsoft.Bot.Connector.DirectLine.Activity() { From = new Microsoft.Bot.Connector.DirectLine.ChannelAccount("some user"), Text = int_activity.Text, Type = Microsoft.Bot.Connector.DirectLine.ActivityTypes.Message }; await user.client.Conversations.PostActivityAsync(user.dconversation.ConversationId, dact); } else { HandleSystemMessage(int_activity); } var response = Request.CreateResponse(HttpStatusCode.OK); return(response); } catch (Exception ex) { Console.WriteLine(ex.ToString()); throw; } }