2017-06-20 7 views
0

ボットフレームワークでインテントとメッセージの両方に同時にアクセスできるプラグインを作成することはできますか?私は、受け取ったメッセージだけでなく、外部のアナリティクスに登録されて使用された意図を送信できるプラグインを作成することに特に関心を持っています。MS Botframework - インテントとメッセージへのアクセス

+0

あなたはBotBuilderのために、.NETまたはノードSDKを使用していますか? – nilsw

+0

私は両方の機能に興味があると思いますが、.NETはそれをやるのが難しいと思いますか? – jimmiebtlr

答えて

1

はい、カスタムミドルウェアでintercept and log messagesとすることができます。

次のコードサンプルは、.NET用のBot Builder SDKのミドルウェアの概念を使用して、ユーザーとボットの間で交換されるメッセージをインターセプトする方法を示しています。

まず、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に次のコードを追加します。ユーザーとボットの間で(どちらの方向でも)交換されるすべてのメッセージは、DebugAsctivityLoggerクラスの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()?Type"なのでしょうか? – jimmiebtlr

+0

これは、Bot Frameworkメッセージをインターセプトするためのものです。 「意図」とは、LUISの意図を意味しますか? – nilsw

関連する問題