2017-10-11 61 views
1

我試圖在QnAMakerRecognizer中使用onEnabled方法,這樣我就可以擁有多個QnAMakerRecognizers,並可以選擇啓用哪個以及禁用哪個。我試過以下這example和嘗試類似的東西,但我得到一個錯誤說:在QnAMakerRecognizer中使用onEnabled方法

TypeError: (intermediate value).onEnabled is not a function

如何正確使用方法onEnable

示例代碼:

var bot = new builder.UniversalBot(connector); 

var qnarecognizer1 = new cognitiveservices.QnAMakerRecognizer({ 
    knowledgeBaseId: knowledgeId, 
    subscriptionKey: subscriptionId, 
    qnaThreshold:0.3, 
    top:1}) 
.onEnabled(function (session, callback) { 
     // Check to see if this recognizer should be enabled 
     if (session.conversationData.useqna1) { 
      callback(null, true); 
     } else { 
      callback(null, false); 
     } 
    }); 

var qnarecognizer2 = new cognitiveservices.QnAMakerRecognizer({ 
    knowledgeBaseId: knowledgeId, 
    subscriptionKey: subscriptionId, 
    qnaThreshold:0.3, 
    top:1}) 
.onEnabled(function (session, callback) { 
     // Check to see if this recognizer should be enabled 
     if (session.conversationData.useqna2) { 
      callback(null, true); 
     } else { 
      callback(null, false); 
     } 
    }); 

var intentrecognizer = new builder.IntentDialog(); 

var intents = new builder.IntentDialog({ recognizers: [intentrecognizer, qnarecognizer1, qnarecognizer2] }); 
bot.dialog('/', intents); 

intents.matches('qna', [ 
    function (session, args, next) { 
      args.entities.forEach(function(element) { 
      session.send(element.entity);  
     }, this);   
    } 
]); 

intents.matchesAny([/hi/i, /main menu/i], [ 
    function (session) { 
    builder.Prompts.choice(session, "Hi, What would you like to ask me about?", ["Service1","Service2"],{ listStyle: builder.ListStyle.button}); 

    }, 

     function (session, result) { 
    var selection = result.response.entity; 
      switch (selection) { 
       case "Service1": 
        session.conversationData.useqna1 = true; 
     session.conversationData.useqna2 = false; 
        session.send('You can now ask me anything about '+selection+'. Type \'main menu\' anytime to choose a different topic.') 
        session.endConversation(); 
        return 

       case "Service2": 
        session.conversationData.useqna1 = false; 
     session.conversationData.useqna2 = true; 
        session.send('You can now ask me anything about '+selection+'. Type \'main menu\' anytime to choose a different topic.') 
        session.endConversation(); 
        return 

      } 
    } 

]) 

回答