public JArrayString ProcessMessage(RbAppMasterCache rbappmc, RbAppRouterCache rbapprc, RbHeader rbh, string rbBodyString) { var appInfo = JsonConvert.DeserializeObject <JObject>(rbappmc.AppInfo); appInfo["DeviceId"] = rbh.SourceDeviceId; var appParams = JsonConvert.DeserializeObject <JObject>(rbBodyString); JArrayString message = null; if (rbh.MessageId == "Speech") { var speechAppBody = new SpeechAppBody(); var personId = (appParams["PersonId"] ?? "").ToString(); var talk = (appParams["talk"] ?? "").ToString(); var luisService = new LuisService(rbh.SourceDeviceId, appInfo); speechAppBody.Behavior = luisService.CreateRobotBehavior(talk); speechAppBody.Behavior.NaturalTalkText = TextOverflow(speechAppBody.Behavior.NaturalTalkText); if (personId != "") { var actionClient = new HwsRobotBehaviorApi.Person.Action.Client(appInfo["SqlConnectionString"].ToString()); foreach (var entity in speechAppBody.Behavior.LuisEntities) { actionClient.CreateTalkLog(rbh.SourceDeviceId, personId, speechAppBody.Behavior.NaturalTalkText, talk, entity); } } message = new JArrayString(MakeProcessMessages(rbh, speechAppBody)); } else if (rbh.MessageId == "RobotSpeech") { var speechAppBody = new SpeechAppBody(); var talk = (appParams["talk"] ?? "").ToString(); var luisService = new LuisService(rbh.SourceDeviceId, appInfo); speechAppBody.Behavior = luisService.CreateRobotBehaviorDirectSpeech(talk); speechAppBody.Behavior.NaturalTalkText = TextOverflow(speechAppBody.Behavior.NaturalTalkText); message = new JArrayString(MakeProcessMessages(rbh, speechAppBody)); } else if (rbh.MessageId == "GetRobotAction") { var speechAppBody = RobotAction(rbh, appInfo, appParams); message = new JArrayString(MakeProcessMessages(rbh, speechAppBody)); } return(message); }