2017-06-20 60 views
0

是否有可能創建一個插件,可以在botframework中同時訪問意圖和消息?我特別感興趣的是創建一個插件,可以發送收到的消息以及已註冊並用於外部分析的意圖。MS Botframework - 訪問意圖和消息

+0

您在使用.NET或節點的SDK BotBuilder? – nilsw

+0

我對這兩種功能都感興趣,但我認爲.NET很難做到這一點? – jimmiebtlr

回答

1

是的,您可以通過自定義中間件intercept and log messages

以下代碼示例顯示如何使用Bot Builder SDK for .NET中的中間件概念攔截在用戶和bot之間交換的消息。

首先,創建一個DebugActivityLogger類並定義一個LogAsync方法來指定爲每個截取的消息採取的操作。這個例子只是輸出關於每條消息的一些信息。

public class DebugActivityLogger : IActivityLogger 
{ 
    public async Task LogAsync(IActivity activity) 
    { 
     Debug.WriteLine($"From:{activity.From.Id} - To:{activity.Recipient.Id} - Message:{activity.AsMessageActivity()?.Text}"); 
    } 
} 

然後,將以下代碼添加到Global.asax.cs中。每個用戶和bot之間交換的消息(無論是哪個方向)現在都會觸發DebugActivityLogger類中的LogAsync方法。

public class WebApiApplication : System.Web.HttpApplication 
{ 
    protected void Application_Start() 
    { 
     var builder = new ContainerBuilder(); 
     builder.RegisterType<DebugActivityLogger>().AsImplementedInterfaces().InstancePerDependency(); 
     builder.Update(Conversation.Container); 

     GlobalConfiguration.Configure(WebApiConfig.Register); 
    } 
} 

對於一個完整的中間件代碼示例,請參見:https://github.com/Microsoft/BotBuilder-Samples/tree/master/CSharp/core-Middleware

+0

謝謝,我是否會誤解這隻作爲信息? – jimmiebtlr

+0

會是「activity.AsMessageActivity()?.類型」或其他? – jimmiebtlr

+0

這是爲了攔截Bot框架消息。 「意圖」是否意味着LUIS意圖? – nilsw