如何在 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