private void OnTextMessaged(string agentId, WebhookMessage <WebhookTextMessage> message) { Console.WriteLine($"OnTextMessaged: {message.Message.Text}"); var ai = new ApiAi(); var agent = ai.LoadAgent(agentId); ai.AiConfig = new AIConfiguration(agent.ClientAccessToken, SupportedLanguage.English) { AgentId = agentId }; ai.AiConfig.SessionId = message.Sender.Id; var aiResponse = ai.TextRequest(new AIRequest { Query = new String[] { message.Message.Text } }); var dc = new DefaultDataContextLoader().GetDefaultDc(); var config = dc.Table <AgentIntegration>().FirstOrDefault(x => x.AgentId == agentId && x.Platform == "Facebook Messenger"); SendTextMessage(config.AccessToken, new WebhookMessage <WebhookTextMessage> { Recipient = message.Sender.ToObject <WebhookMessageRecipient>(), Message = new WebhookTextMessage { Text = String.IsNullOrEmpty(aiResponse.Result.Fulfillment.Speech) ? aiResponse.Result.Action : aiResponse.Result.Fulfillment.Speech } }); }
public void TextRequest() { var ai = new ApiAi(); var agent = ai.LoadAgent(BOT_ID); ai.AiConfig = new AIConfiguration(agent.ClientAccessToken, SupportedLanguage.English) { AgentId = BOT_ID }; ai.AiConfig.SessionId = Guid.NewGuid().ToString(); // Round 1 var response = ai.TextRequest(new AIRequest { Query = new String[] { "Can you play country music?" } }); Assert.AreEqual(response.Result.Metadata.IntentName, "music.play"); Assert.AreEqual(response.Result.Contexts.First(x => x.Name == "music-player-control").Lifespan, 3); Assert.AreEqual(response.Result.Contexts.First(x => x.Name == "play-music").Lifespan, 5); Assert.AreEqual(response.Result.Parameters.First(x => x.Key == "genre").Value, "country"); // Round 2 response = ai.TextRequest(new AIRequest { Query = new String[] { "pause it" } }); Assert.AreEqual(response.Result.Metadata.IntentName, "music_player_control.pause"); Assert.AreEqual(response.Result.Contexts.First(x => x.Name == "music-player-control").Lifespan, 3); Assert.AreEqual(response.Result.Contexts.First(x => x.Name == "play-music").Lifespan, 4); // Round 3 response = ai.TextRequest(new AIRequest { Query = new String[] { "continue" } }); Assert.AreEqual(response.Result.Metadata.IntentName, "music_player_control.resume"); Assert.AreEqual(response.Result.Contexts.First(x => x.Name == "music-player-control").Lifespan, 3); Assert.AreEqual(response.Result.Contexts.First(x => x.Name == "play-music").Lifespan, 3); // Round 4 response = ai.TextRequest(new AIRequest { Query = new String[] { "play Hard Times by David Newman" } }); Assert.AreEqual(response.Result.Metadata.IntentName, "music.play"); Assert.AreEqual(response.Result.Contexts.First(x => x.Name == "music-player-control").Lifespan, 3); Assert.AreEqual(response.Result.Contexts.First(x => x.Name == "play-music").Lifespan, 5); Assert.AreEqual(response.Result.Parameters.First(x => x.Key == "song").Value, "Hard Times"); Assert.AreEqual(response.Result.Parameters.First(x => x.Key == "artist").Value, "David Newman"); }