TrainAgentPerContextTest

This commit is contained in:
Oceania2018 2018-06-18 09:15:54 -05:00
parent 025ca3810f
commit 220b6ad209
12 changed files with 97 additions and 388 deletions

View file

@ -137,94 +137,6 @@ namespace BotSharp.Core.Agents
});
});
return trainingData;
}
public static RasaTrainingData GrabCorpusPerContexts(this Agent agent, Database dc, List<AIContext> ctx)
{
var trainingData = new RasaTrainingData
{
Entities = new List<RasaTraningEntity>(),
UserSays = new List<RasaIntentExpression>()
};
var expressParts = new List<IntentExpressionPart>();
var intents = dc.Table<Intent>()
.Include(x => x.Contexts)
.Include(x => x.UserSays).ThenInclude(say => say.Data)
.Where(x => x.UserSays.Count > 0)
.ToList();
var contexts = ctx.OrderBy(x => x.Name).Select(x => x.Name.ToLower()).ToList();
// search all potential intents which input context included in contexts
intents = intents.Where(it =>
{
if (contexts.Count == 0)
{
return it.Contexts.Count() == 0;
}
else
{
return it.Contexts.Count() > 0 && it.Contexts.Count(x => contexts.Contains(x.Name.ToLower())) == it.Contexts.Count;
}
}).OrderByDescending(x => x.Contexts.Count).ToList();
intents.ForEach(intent =>
{
intent.UserSays.ForEach(exp =>
{
var say = new RasaIntentExpression
{
Intent = intent.Name,
Text = String.Join("", exp.Data.OrderBy(x => x.UpdatedTime).Select(x => x.Text)),
};
// convert entity format
exp.Data.Where(x => !String.IsNullOrEmpty(x.Meta))
.ToList()
.ForEach(x =>
{
int start = say.Text.IndexOf(x.Text);
var part = new RasaIntentExpressionPart
{
Value = x.Text,
Entity = x.Alias,
Start = start,
End = start + x.Text.Length
};
if (say.Entities == null) say.Entities = new List<RasaIntentExpressionPart>();
say.Entities.Add(part);
// assemble entity synonmus
if (!trainingData.Entities.Any(y => y.EntityType == x.Alias && y.EntityValue == x.Text))
{
var allSynonyms = (from e in dc.Table<EntityType>()
join ee in dc.Table<EntityEntry>() on e.Id equals ee.EntityId
join ees in dc.Table<EntrySynonym>() on ee.Id equals ees.EntityEntryId
where e.Name == x.Alias && ee.Value == x.Text & ees.Synonym != x.Text
select ees.Synonym ).ToList();
var te = new RasaTraningEntity
{
EntityType = x.Alias,
EntityValue = x.Text,
Synonyms = allSynonyms
};
trainingData.Entities.Add(te);
}
});
trainingData.UserSays.Add(say);
});
});
return trainingData;
}
}

View file

@ -8,6 +8,6 @@ namespace BotSharp.Core.Models
{
public string Task { get; set; }
public Object Body { get; set; }
public List<String> Parameters { get; set; }
}
}

View file

@ -83,6 +83,8 @@ namespace BotSharp.Core.Engines
intentJson = intentJson.Replace("\"prompts\":", "\"promptList\":");
var intent = JsonConvert.DeserializeObject<DialogflowIntent>(intentJson);
// void id confict
intent.Id = Guid.NewGuid().ToString();
intent.Name = intent.Name.Replace("/","_");
// load user expressions
if (fileName.Contains("Default Fallback Intent"))

View file

@ -1,5 +1,6 @@
using BotSharp.Core.Agents;
using BotSharp.Core.Entities;
using BotSharp.Core.Intents;
using BotSharp.Core.Models;
using EntityFrameworkCore.BootKit;
using Microsoft.EntityFrameworkCore;
@ -86,5 +87,48 @@ namespace BotSharp.Core.Engines
return String.Empty;
}
}
public string TrainWithContexts()
{
var corpus = agent.GrabCorpus(dc);
string json = JsonConvert.SerializeObject(new { rasa_nlu_data = corpus },
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
NullValueHandling = NullValueHandling.Ignore
});
var client = new RestClient($"{Database.Configuration.GetSection("Rasa:Host").Value}");
var rest = new RestRequest("train", Method.POST);
rest.AddQueryParameter("project", agent.Id);
rest.AddParameter("application/json", json, ParameterType.RequestBody);
var response = client.Execute(rest);
if (response.IsSuccessful)
{
var result = JObject.Parse(response.Content);
string modelName = result["info"].Value<String>().Split(": ")[1];
dc.Table<ContextModelMapping>().Add(new ContextModelMapping
{
AgentId = agent.Id,
ModelName = modelName,
//ContextId = contextId
});
return modelName;
}
else
{
var result = JObject.Parse(response.Content);
Console.WriteLine(result["error"]);
return String.Empty;
}
}
}
}

View file

@ -12,6 +12,7 @@ namespace BotSharp.Core.Models
public String Text { get; set; }
public String Intent { get; set; }
public String ContextHash { get; set; }
public List<RasaIntentExpressionPart> Entities { get; set; }
}
}

View file

@ -113,8 +113,9 @@ namespace BotSharp.Core.Engines
response.Intent
};
}
response.IntentRanking = response.IntentRanking
.Where(x => x.Confidence > decimal.Parse("0.2") && intents.Select(i => i.Name).Contains(x.Name)).ToList();
response.IntentRanking = response.IntentRanking.Where(x => x.Confidence > decimal.Parse("0.1")).ToList();
response.IntentRanking = response.IntentRanking.Where(x => intents.Select(i => i.Name).Contains(x.Name)).ToList();
// add Default Fallback Intent
if (response.IntentRanking.Count == 0)
@ -314,23 +315,10 @@ namespace BotSharp.Core.Engines
}
}).OrderByDescending(x => x.Contexts.Count).ToList();
// training per request contexts
// query per request contexts
{
string contextId = $"{String.Join(',', contexts.Select(x => x.Name))}".GetMd5Hash();
string modelName = dc.Table<ContextModelMapping>().FirstOrDefault(x => x.ContextId == contextId)?.ModelName;
// need training
if (String.IsNullOrEmpty(modelName))
{
request.Contexts = contexts.Select(x => new AIContext { Name = x.Name.ToLower() })
.OrderBy(x => x.Name)
.ToList();
dc.DbTran(() =>
{
modelName = TrainWithContexts(rasa, dc, request, contextId);
});
}
var result = CallRasa(rasa.agent.Id, request.Query.First(), modelName);
if (result.Data.Intent != null)
@ -351,15 +339,6 @@ namespace BotSharp.Core.Engines
string modelName = dc.Table<ContextModelMapping>().FirstOrDefault(x => x.ContextId == contextId)?.ModelName;
// need training
if (String.IsNullOrEmpty(modelName))
{
dc.DbTran(() =>
{
modelName = TrainWithContexts(rasa, dc, request, contextId);
});
}
var result = CallRasa(rasa.agent.Id, request.Query.First(), modelName);
if (result.Data.Intent != null)
@ -470,74 +449,5 @@ namespace BotSharp.Core.Engines
return aiResponse;
}
/// <summary>
/// Need two categories at least
/// </summary>
/// <param name="console"></param>
/// <param name="dc"></param>
/// <param name="request"></param>
/// <param name="contextId"></param>
/// <returns></returns>
public static string TrainWithContexts(this RasaAi console, Database dc, AIRequest request, String contextId)
{
var corpus = console.agent.GrabCorpusPerContexts(dc, request.Contexts);
corpus.UserSays.Add(new RasaIntentExpression
{
Intent = "Welcome",
Text = "Hi"
});
corpus.UserSays.Add(new RasaIntentExpression
{
Intent = "Welcome",
Text = "Hey"
});
corpus.UserSays.Add(new RasaIntentExpression
{
Intent = "Welcome",
Text = "Hello"
});
string json = JsonConvert.SerializeObject(new { rasa_nlu_data = corpus },
new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
NullValueHandling = NullValueHandling.Ignore
});
var client = new RestClient($"{Database.Configuration.GetSection("Rasa:Host").Value}");
var rest = new RestRequest("train", Method.POST);
rest.AddQueryParameter("project", console.agent.Id);
rest.AddParameter("application/json", json, ParameterType.RequestBody);
var response = client.Execute(rest);
if (response.IsSuccessful)
{
var result = JObject.Parse(response.Content);
string modelName = result["info"].Value<String>().Split(": ")[1];
dc.Table<ContextModelMapping>().Add(new ContextModelMapping
{
AgentId = console.agent.Id,
ModelName = modelName,
ContextId = contextId
});
return modelName;
}
else
{
var result = JObject.Parse(response.Content);
Console.WriteLine(result["error"]);
return String.Empty;
}
}
}
}

View file

@ -14,7 +14,7 @@ namespace BotSharp.Core.Entities
[StringLength(36)]
public String EntityEntryId { get; set; }
[MaxLength(64)]
[MaxLength(128)]
public String Synonym { get; set; }
}
}

View file

@ -1,8 +1,10 @@
using EntityFrameworkCore.BootKit;
using DotNetToolkit;
using EntityFrameworkCore.BootKit;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
namespace BotSharp.Core.Intents
@ -26,6 +28,18 @@ namespace BotSharp.Core.Intents
[ForeignKey("IntentId")]
public List<IntentInputContext> Contexts { get; set; }
/// <summary>
/// Get input contexts hash
/// </summary>
[NotMapped]
public String ContextHash
{
get
{
return $"{String.Join(',', Contexts.OrderBy(x => x.Name).Select(x => x.Name))}".GetMd5Hash();
}
}
[ForeignKey("IntentId")]
public List<IntentExpression> UserSays { get; set; }

View file

@ -73,5 +73,18 @@ namespace BotSharp.UnitTest
Assert.IsTrue(!String.IsNullOrEmpty(msg));
}
[TestMethod]
public void TrainAgentPerContextTest()
{
var config = new AIConfiguration(BOT_CLIENT_TOKEN, SupportedLanguage.English);
config.SessionId = Guid.NewGuid().ToString();
var rasa = new RasaAi(dc, config);
string msg = rasa.TrainWithContexts();
Assert.IsTrue(!String.IsNullOrEmpty(msg));
}
}
}

View file

@ -7,208 +7,21 @@
</PropertyGroup>
<ItemGroup>
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\agent.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\Affiliate.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\Affiliate_entries_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\CallerPosition.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\CallerPosition_entries_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\Client.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\Client_entries_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceCategory.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceCategory_entries_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceCode.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceCode_entries_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceType.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceType_entries_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\UserName.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\UserName_entries_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Picked up - yes.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Picked up - yes_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Picked up.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Picked up_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Telling Available Time.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Telling Available Time_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Confirm Service Type - no.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Confirm Service Type - no_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Confirm Service Type - yes.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Confirm Service Type - yes_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Create Work Order.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Create Work Order_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Default Fallback Intent.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Default Welcome Intent.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Start Schedule.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Start Schedule_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Caller Name.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Caller Name_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Caller Position.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Caller Position_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category - no.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category - no_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category - yes.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category - yes_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number - no.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number - no_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number - yes.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number - yes_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number_usersays_en.json" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\package.json" />
<None Remove="App_Data\DbInitializer\Agents\Rasa\2b6a288e-d891-40c6-96ce-6a0cf324545c.json" />
<Compile Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\**" />
<Compile Remove="App_Data\DbInitializer\Agents\Dialogflow\Voicebot\**" />
<EmbeddedResource Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\**" />
<EmbeddedResource Remove="App_Data\DbInitializer\Agents\Dialogflow\Voicebot\**" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\**" />
<None Remove="App_Data\DbInitializer\Agents\Dialogflow\Voicebot\**" />
</ItemGroup>
<ItemGroup>
<None Remove="Settings\settings.app.json" />
<None Remove="Settings\settings.bot.json" />
<None Remove="Settings\settings.db.json" />
</ItemGroup>
<ItemGroup>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\agent.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\Affiliate.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\Affiliate_entries_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\CallerPosition.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\CallerPosition_entries_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\Client.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\Client_entries_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceCategory.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceCategory_entries_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceCode.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceCode_entries_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceType.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\ServiceType_entries_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\UserName.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\entities\UserName_entries_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Picked up - yes.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Picked up - yes_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Picked up.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Picked up_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Telling Available Time.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Affiliate Telling Available Time_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Confirm Service Type - no.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Confirm Service Type - no_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Confirm Service Type - yes.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Confirm Service Type - yes_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Create Work Order.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Create Work Order_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Default Fallback Intent.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Default Welcome Intent.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Start Schedule.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Start Schedule_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Caller Name.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Caller Name_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Caller Position.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Caller Position_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category - no.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category - no_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category - yes.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category - yes_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Service Category_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number - no.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number - no_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number - yes.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number - yes_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\intents\Telling Store Number_usersays_en.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Dialogflow\VirtualAssistant\package.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="App_Data\DbInitializer\Agents\Rasa\2b6a288e-d891-40c6-96ce-6a0cf324545c.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
<Content Include="Settings\settings.app.json">
<CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
</Content>
@ -237,7 +50,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="App_Data\DbInitializer\Agents\Dialogflow\Voicebot\" />
<Folder Include="App_Data\DbInitializer\Agents\Rasa\" />
</ItemGroup>
</Project>

View file

@ -20,8 +20,8 @@ namespace BotSharp.UnitTest
var rasa = new RasaAi(dc, config);
// Round 1
var response = rasa.TextRequest(new AIRequest { Query = new String[] { "Hi" } });
Assert.AreEqual(response.Result.Metadata.IntentName, "greet");
var response = rasa.TextRequest(new AIRequest { Query = new String[] { "Can you play country music?" } });
Assert.AreEqual(response.Result.Metadata.IntentName, "music.play");
}
}
}

View file

@ -10,10 +10,10 @@ namespace BotSharp.UnitTest
{
public abstract class TestEssential
{
public static String BOT_ID = "5f98a0fd-e7e9-4155-9610-d3f40d026162";
public static String BOT_CLIENT_TOKEN = "2fffb9a1a9214144ab2717a37fa43c33";
public static String BOT_DEVELOPER_TOKEN = "2c7d224cf7274f9d93b4c65c31ca82fe";
public static String BOT_NAME = "Handybot";
public static String BOT_ID = "6a9fd374-c43d-447a-97f2-f37540d0c725";
public static String BOT_CLIENT_TOKEN = "43a0f48e3f1e41da822092e7e699426b";
public static String BOT_DEVELOPER_TOKEN = "cd1e4685c6a04d7db1f59e6853fd597b";
public static String BOT_NAME = "Spotify";
protected Database dc { get; set; }
protected string contentRoot;