2017-09-26 39 views
0

我正在开发一个能够回答关于不同产品的不同问题的机器人。我正在考虑在QnA Maker中为不同的产品创建多个服务,所以问题和答案不会混杂在一起。例如,与“我的个人资料”相关的问题根据产品有不同的答案,我可以使用LUIS来处理该情境。单个机器人的多个QnA Maker服务

这是可能的多个QnA服务?有没有其他解决这个问题的方法?

+0

这是绝对可能的,但要做到正确,这是一项挑战。您可以为每个QnA服务分别设置意图,然后路由查询。 – Miskov

+0

几天前我问过几乎相同的问题。尝试了一些东西,但不能得到它的工作。有兴趣知道你是否可以实现它的工作。 https://stackoverflow.com/questions/46409189/use-multiple-qna-services-in-one-bot – Anish

回答

0

那么,我得到它与2个不同的QnA服务运行。我找到的唯一解决方案是调用REST服务,而不是使用识别器。

这里做一个手工调用一个服务代码:

var fetch = require('node-fetch'); 
require('dotenv-extended').load({ 
    path: '../.env' 
}); 

var get_restQnA = function (question, callback){ 

    qnaurl=`https://westus.api.cognitive.microsoft.com/qnamaker/v2.0/knowledgebases/${process.env.KB_ID}/generateAnswer`;  
    fetch(qnaurl, { 
     method: 'POST', 
     headers: { 
      "Content-Type": "application/json", 
      "Ocp-Apim-Subscription-Key": process.env.QNA_KEY 
     }, 
     body: JSON.stringify({ 
      "question": question, 
      "top": 1 
     }) 
    }).then(response => { 
     return response.json(); 
    }).then(data => { 
     console.log('Here is the data: ', data); 
    }).catch(err => {console.log(err);}); 
} 

module.exports.get_restQnA = get_restQnA; 

由于您使用的是独特的服务ID,你只需要调用每个服务在你有LUIS不同的意图。