может кто-нибудь показать мне, как реализовать действие бота на сервере .Net? есть ли какой-либо шаблон или liblary для .net? Большое спасибо.Реализовать действие wit.ai на .Net сервере
ответ
Существует .NET, библиотека для обработки разговоров, действий и т.д.
https://github.com/valencianok/Wit.ai.net
Это решение ниже основано на Wit.ai.net NuGet пакета.
Прежде всего, необходимо установить некоторые обработчики для Merge, Stop, действие, Скажи:
static object ActionHandler(string conversationId, object context, string action, Dictionary<string, List<Entity>> entities, double confidence)
{
Console.WriteLine("Action handler called");
//Invoke correct action based on action name passed in by action parameter
Actions[action].Invoke();
return context;
}
static object MergeHandler(string conversationId, object context, Dictionary<string, List<Entity>> entities, double confidence)
{
Console.WriteLine("Merge handler called");
return context;
}
static void SayHandler(string conversationId, object context, string msg, double confidence)
{
Console.WriteLine("Say handler called " + msg);
}
static object StopHandler(string conversationId, object context)
{
Console.WriteLine("Stop handler called");
return context;
}
ActionHandler это один вы interrested, если вы хотите, чтобы слушать действия проходили в от Вит. Параметр «действие» сообщит вам, какое действие нужно выполнить. Например, они могут быть установлены со словарем, где ключ - это имя действия, а значение - действие. Пример:
//Define actions to run based on Wit callback
static void Action1()
{
Console.WriteLine("Action1 is called");
}
static void Action2()
{
Console.WriteLine("Action2 is called");
}
//Define actions in dictionary, key will be the action recieved from Wit response, value will be an invokable action
static Dictionary<string, Action> Actions => new Dictionary<string, Action>
{
{ "action1", Action1 },
{ "action2", Action2 }
};
ПРИМЕЧАНИЕ: Вы должны иметь действие в Wit.ai называется действие1 или action2, чтобы сделать эту работу. Измените его, например, на «getNews», если у вас есть действие getNews в Wit.ai.
Вы затем создать разговор и передать обработчики к разговору:
var conversation = new WitConversation<object>(WIT_ACCESS_TOKEN, "conversation-id-123", null, MergeHandler, SayHandler, ActionHandler, StopHandler);
Тогда вы просто начать разговор:
conversation.SendMessageAsync("Message to bot here").Result;
Если вам нужно отправить некоторые контекстный ключ обратно в бот, то вам нужно изменить параметр контекста в любом обработчике и вернуть новый контекст, например:
static object ActionHandler(string conversationId, object context, string action, Dictionary<string, List<Entity>> entities, double confidence)
{
Console.WriteLine("Action handler called");
//Invoke correct action based on action name passed in by action parameter
Actions[action].Invoke();
return new { context_key_here = "context key value" };
}
Это, конечно, один простой способ выполнить эту операцию, и я надеюсь, что он может указать вам в правильном направлении.
Вы также можете проследить некоторый интерфейс для всех действий Wit, а затем получить экземпляр действия, которое вы хотите в ActionHandler.
Я выполнил простую реализацию действий, возвращенных из Wit.ai api в консольном приложении в Gist ниже. Надеюсь, поможет.
https://gist.github.com/SimonPirre/c2f571c4b47d0ac3defb1bc7292f456f
проверить это: https://github.com/valencianok/Wit.ai.net – ssakash
Что вы имеете в виду ".NET Server"? Что у вас есть служба, написанная на .NET? –