2017-01-02 3 views
0

私は2つのActiveDelegate(S)を持っています:Microsoft BotフレームワークでどのActiveDelegateがTRUEであるかを特定する方法IForm?

ActiveDelegate isFormFlow =(procReq)=> procReq.UXExp == UserExperience.FormFlow;

ActiveDelegate isLUISFlow =(procReq)=> procReq.UXExp == UserExperience.LUIS;

私のPOSTメソッドでは、FormFlowがアクティブかLUISかをチェックし、それに応じて関数を呼び出すことにします。

public virtual async Task<HttpResponseMessage> Post([FromBody]Activity activity) 
{       
    if (activity != null) 
    { 
    // one of these will have an interface and process it 
    switch (activity.GetActivityType()) 
    { 
     case ActivityTypes.Message: 
     if (isFormFlow is TRUE) 
     { 
      await Conversation.SendAsync(activity, MakeRootDialogForm); 
     } 
     else if (isLUISFlow is TRUE) 
     { 
      await Conversation.SendAsync(activity, MakeRootDialogLUIS); 
     } 
     break; 

     case ActivityTypes.ConversationUpdate: 
     case ActivityTypes.ContactRelationUpdate: 
     case ActivityTypes.Typing: 
     case ActivityTypes.DeleteUserData: 
     default: 
     Trace.TraceError($"Unknown activity type ignored: {activity.GetActivityType()}"); 
     break; 
    } 
    } 
    return new HttpResponseMessage(System.Net.HttpStatusCode.Accepted); 
} 

アクティブな代理人を特定する方法を教えてください。助けをよろしく!

答えて

0

Microsoft.Bot.Builder.FormFlow.ActiveDelegate<T>がFormFlow FormDialog<T>内で使用され、特定のステップが現在のフォーム状態でアクティブかどうかを判断します。通常、複数のルートダイアログから選択するのには使用されません(通常は、1つのルートダイアログのみが必要です)。

関連する問題