如何在 Javascript 代码中使用 REST API 从 QnAMaker 获取问题和答案
how to Get the Questions and Answers from QnAMaker using REST API in a Javascript code
我正在开发 V4 MS Bot 框架,我想构建一个功能,例如,当用户开始输入问题时,机器人应该填充并给出确切的问题短语,以便用户可以单击机器人给出的建议。因此减少了用户的工作量并减少了出错的机会。
所以我在客户端编写了一个函数(使用普通 JavaScript),它会在按键时被调用。
我使用以下代码构建了该函数。
$( "[aria-label='Sendbox']" ).keypress(function() {
if($( "[aria-label='Sendbox']" )[0].defaultValue.length >3){
getquestion(this.value);
}
});
我想在函数内部创建一个 REST API 调用并获取与用户输入的关键字相关的问题。
function getquestion(value)
{
var params = value;
$.ajax({
url: "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/create?" + $.param(params),
beforeSend: function(xhrObj){
// Request headers
xhrObj.setRequestHeader("Content-Type","application/json");
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","<key>");
},
type: "GET",
// Request body
//data: "{body}",
})
.done(function(data) {
alert("success");
})
.fail(function(data) {
alert("error");
});
}
使用此功能只能访问我的知识库,无法缩小查询与关键字相关的问题。
任何人都可以帮助我实现我的要求。
您可以尝试按照代码片段请求 QnA maker
端点并从那里获得答案。
正确的请求格式 Jquery:
$("#btnQnAMakerAnswer").click(function () {
var question = {
question: "will you marry me"
}
$.ajax({
type: "POST",
url: "https://YourEndPointURL/qnamaker/knowledgebases/eb895acb-e034-4f7c-asda7c-1955458ecec6/generateAnswer",
data: JSON.stringify(question),
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization','EndpointKey c44444_Your_Endpoint_Key_4556');
},
dataType: "json",
contentType: "application/json",
success: function (data) {
console.log(data);
console.log(data.answers[0].answer);
}
});
});
来自 QnA 端点的响应:
希望这能解决您的问题。
更多细节你可以参考这个official docs
我正在开发 V4 MS Bot 框架,我想构建一个功能,例如,当用户开始输入问题时,机器人应该填充并给出确切的问题短语,以便用户可以单击机器人给出的建议。因此减少了用户的工作量并减少了出错的机会。
所以我在客户端编写了一个函数(使用普通 JavaScript),它会在按键时被调用。
我使用以下代码构建了该函数。
$( "[aria-label='Sendbox']" ).keypress(function() {
if($( "[aria-label='Sendbox']" )[0].defaultValue.length >3){
getquestion(this.value);
}
});
我想在函数内部创建一个 REST API 调用并获取与用户输入的关键字相关的问题。
function getquestion(value)
{
var params = value;
$.ajax({
url: "https://westus.api.cognitive.microsoft.com/qnamaker/v4.0/knowledgebases/create?" + $.param(params),
beforeSend: function(xhrObj){
// Request headers
xhrObj.setRequestHeader("Content-Type","application/json");
xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","<key>");
},
type: "GET",
// Request body
//data: "{body}",
})
.done(function(data) {
alert("success");
})
.fail(function(data) {
alert("error");
});
}
使用此功能只能访问我的知识库,无法缩小查询与关键字相关的问题。
任何人都可以帮助我实现我的要求。
您可以尝试按照代码片段请求 QnA maker
端点并从那里获得答案。
正确的请求格式 Jquery:
$("#btnQnAMakerAnswer").click(function () {
var question = {
question: "will you marry me"
}
$.ajax({
type: "POST",
url: "https://YourEndPointURL/qnamaker/knowledgebases/eb895acb-e034-4f7c-asda7c-1955458ecec6/generateAnswer",
data: JSON.stringify(question),
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization','EndpointKey c44444_Your_Endpoint_Key_4556');
},
dataType: "json",
contentType: "application/json",
success: function (data) {
console.log(data);
console.log(data.answers[0].answer);
}
});
});
来自 QnA 端点的响应:
希望这能解决您的问题。
更多细节你可以参考这个official docs