private ConverseRequest CreateNewRequest() { // initial request is the config this then gets followed by all out audio var converseRequest = new ConverseRequest(); var audioIn = new AudioInConfig() { Encoding = AudioInConfig.Types.Encoding.Linear16, SampleRateHertz = Const.SampleRateHz }; var audioOut = new AudioOutConfig() { Encoding = AudioOutConfig.Types.Encoding.Linear16, SampleRateHertz = Const.SampleRateHz, VolumePercentage = 75 }; ConverseState state = new ConverseState() { ConversationState = ByteString.Empty }; converseRequest.Config = new ConverseConfig() { AudioInConfig = audioIn, AudioOutConfig = audioOut, ConverseState = state }; return(converseRequest); }
private static async Task Run(string question) { Stopwatch stopWatch = new Stopwatch(); stopWatch.Start(); var almeClient = new AlmeClient(new Uri("https://askjenn.alaskaair.com/")); // Setup the request ConverseRequest req = new ConverseRequest(); req.channel = "Console"; req.origin = "Typed"; req.parameters = new ConverseRequestParameters(); req.question = question; // Call the Converse endpoint var res = await almeClient.ConverseAsync(req); stopWatch.Stop(); // Write the response out to the console Console.WriteLine(res.text); Console.WriteLine(); Console.WriteLine(string.Format("Time to Answer: {0}", stopWatch.Elapsed)); Console.WriteLine(JsonConvert.SerializeObject(res)); }
private static WitContext GetForecast(ConverseRequest request, ConverseResponse response) { var context = request.Context; var entities = request.Entities; var loc = FirstEntityValue(entities, "location"); if (loc != null) { context["forecast"] = "sunny"; if (context.ContainsKey("missingLocation")) { context.Remove("missingLocation"); } } else { context["missingLocation"] = true; if (context.ContainsKey("forecast")) { context.Remove("forecast"); } } return(context); }
private static WitContext Merge(ConverseRequest request, ConverseResponse response) { var context = request.Context; var entities = request.Entities; if (context.ContainsKey("joke")) { context.Remove("joke"); } var category = FirstEntityValue(entities, "category"); if (category != null) { context["cat"] = category; } var sentiment = FirstEntityValue(entities, "sentiment"); if (sentiment != null) { context["ack"] = (sentiment.Equals("positive")) ? "Glad you liked it." : "Hmm."; } else if (context.ContainsKey("ack")) { context.Remove("ack"); } return(context); }
private async Task WriteAudioIn(byte[] buffer) { OnDebug?.Invoke("Write Audio " + buffer.Length, true); var request = new ConverseRequest() { AudioIn = ByteString.CopyFrom(buffer) }; await _requestStream.WriteAsync(request); }
private static WitContext SelectJoke(ConverseRequest request, ConverseResponse response) { var context = request.Context; var jokes = allJokes[context["cat"] || "default"]; Shuffle(jokes); context["joke"] = jokes[0]; return(context); }
private async Task <SpeechletResponse> BuildAskJennResponseAsync(Intent intent, Session session) { var almeClient = new AlmeClient(new Uri("https://askjenn.alaskaair.com/")); // Setup the request ConverseRequest req = new ConverseRequest(); req.channel = "Console"; req.origin = "Typed"; req.parameters = new ConverseRequestParameters(); Slot question = intent.Slots["Question"]; Logger.Info($"Question={question.Value.ToString()}"); req.question = question.Value.ToString(); // Call the Converse endpoint var res = await almeClient.ConverseAsync(req); return(BuildSpeechletResponse(intent.Name, res.text, false)); }
public async Task <ConverseResponse> ConverseAsync(ConverseRequest req) { ConverseResponse res = null; using (var client = new HttpClient()) { client.BaseAddress = this.hostUri; client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); var content = JsonConvert.SerializeObject(req); // HTTP POST HttpResponseMessage response = await client.PostAsync("AlmeApi/api/Conversation/converse", new StringContent(content, Encoding.UTF8, "application/json")); if (response.IsSuccessStatusCode) { string data = await response.Content.ReadAsStringAsync(); res = JsonConvert.DeserializeObject <ConverseResponse>(data); } } return(res); }
BotResponse _RunActions(string sessionId, int currentRequest, string message, BotResponse response, int maxSteps = 5, bool verbose = true) { if (maxSteps <= 0) { throw new WitException("Max steps reached, stopping."); } var json = Converse(sessionId, message, response.Context, verbose); if (json.Type == null) { throw new WitException("Couldn\'t find type in Wit response"); } if (currentRequest != sessions[sessionId]) { return(response); } // backwards-compatibility with API version 20160516 if (json.Type == "merge") { json.Type = "action"; json.Action = "merge"; } if (json.Type == "error") { throw new Exception("Oops, I don\'t know what to do."); } if (json.Type == "stop") { return(response); } var request = new ConverseRequest(); request.SessionId = sessionId; request.Context = response.Context; request.Message = message; request.Entities = json.Entities; switch (json.Type) { case "msg": ThrowIfActionMissing("send"); var converseResponse = new ConverseResponse(); converseResponse.Msg = json.Msg; converseResponse.QuickReplies = json.QuickReplies; // SDK is able to handle multiple bot responses at the same time response.Messages.Add(converseResponse.Msg); actions["send"](request, converseResponse); // actions["send"](request); break; case "action": var action = json.Action; ThrowIfActionMissing(action); response.Context = actions[action](request, null); // context = this.actions[action](request); if (response.Context == null) { Console.WriteLine("missing context - did you forget to return it?"); response.Context = new WitContext(); } break; default: throw new WitException($"unknown type: {json.Type}"); } if (currentRequest != sessions[sessionId]) { return(response); } return(_RunActions(sessionId, currentRequest, null, response, maxSteps - 1, verbose)); }
WitContext TellTheTime(ConverseRequest request, ConverseResponse response) { request.Context.Add("currentTime", DateTime.Now.ToShortTimeString()); return request.Context; }
//public void Converse(string msg) //{ // var res = _witClient.Converse(_sessionId, msg, new WitContext()); //} WitContext Send(ConverseRequest request, ConverseResponse response) { Console.WriteLine(request.Message); return request.Context; }
private static WitContext Send(ConverseRequest request, ConverseResponse response) { Console.WriteLine(response.Msg); return(request.Context); }
private static WitContext Send(ConverseRequest request, ConverseResponse response) { // Do something with the Context Console.WriteLine("Yay, got Wit.ai context: " + request.Context); return(request.Context); }