2017-09-26 1 views
0

Je développe un bot capable de répondre à différentes questions sur différents produits. Je pensais à créer plusieurs services dans QnA Maker pour les différents produits, donc les questions et les réponses ne sont pas mélangées. Par exemple, les questions liées à «mon profil» ont des réponses différentes selon le produit, et je pourrais utiliser LUIS pour gérer ce contexte. Est-ce possible avec plusieurs services QnA?Plusieurs services QnA Maker pour un seul bot

Y a-t-il une autre approche à ce problème?

+0

C'est certainement possible, mais c'est difficile à faire correctement. Vous pouvez avoir des intentions distinctes pour chaque service QnA, puis acheminer les requêtes. – Miskov

+0

J'ai posé presque la même question il y a quelques jours. J'ai essayé quelques petites choses mais je n'ai pas réussi à le faire fonctionner. Je serais intéressé de savoir si vous pouvez le faire fonctionner. https://stackoverflow.com/questions/46409189/use-multiple-qna-services-in-one-bot – Anish

Répondre

0

Eh bien, je l'ai eu en cours d'exécution avec 2 services QnA différents. La seule solution que j'ai trouvée était de faire un appel au service REST au lieu d'utiliser le module de reconnaissance.

Voici le code pour faire un appel manuel à un service:

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; 

Puisque vous utilisez l'ID de service, il vous suffit d'appeler chaque service dans les différentes intentions que vous avez pour LUIS.