2016-11-22 37 views
0

有人能告诉我如何在.Net服务器中实现一个bot动作吗? .net有任何模板或liblary?非常感谢。在.Net服务器中实现wit.ai动作

+0

检查这一项:https://github.com/valencianok/Wit.ai.net – ssakash

+0

你是什么意思 “.NET服务器”?你有用.NET编写的服务? –

回答

0

有用于处理会话,动作等

https://github.com/valencianok/Wit.ai.net

以下将该溶液是基于Wit.ai.net NuGet包一个NET库。

首先,你需要设置一些处理程序合并,停止行动,说:

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的一个。 “action”参数将告诉您要执行哪个操作。例如,这些可以使用字典进行设置,其中键是操作名称,值是操作。举个例子:

//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或动作2,使这项工作。如果您在Wit.ai中有getNews动作,请将其更改为例如“getNews”。

然后,您创建一个会话并通过处理器的谈话:

var conversation = new WitConversation<object>(WIT_ACCESS_TOKEN, "conversation-id-123", null, MergeHandler, SayHandler, ActionHandler, StopHandler); 

然后你刚开始一个对话:

conversation.SendMessageAsync("Message to bot here").Result; 

如果您需要发送一些背景键回bot,则需要修改任何处理程序中的上下文参数并返回新的上下文,例如:

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中获取所需操作的实例。

我在下面的Gist的控制台应用程序中做了一个从Wit.ai api返回的操作的简单实现。希望能帮助到你。

https://gist.github.com/SimonPirre/c2f571c4b47d0ac3defb1bc7292f456f