Azure QnA Maker认知服务:以编程方式将知识库连接到QnA Maker

时间:2019-10-28 11:52:02

标签: bash azure curl azure-cognitive-services qnamaker

如果我通过Azure门户创建新的知识库,则需要我将现有的QnA Maker Service连接到它。

但是似乎没有编程的方式可以做到这一点:

QnA Maker REST API提供了创建和发布知识库的调用,但是没有有关如何指定要使用的QnAmaker服务的信息:

https://docs.microsoft.com/en-us/rest/api/cognitiveservices/qnamaker/knowledgebase

我大致使用以下操作来创建和发布知识库,但是似乎找不到任何将新创建的知识库与现有QnA Maker认知服务关联的方法。

我是否误解了这两种资源之间的关系,或者这是文档中的空白?如果是的话,如何将新的kbase连接到现有的QnA Maker服务实例?


function create_kb () {

 userId=$(curl -s -X POST "${api_create_end_point}" \
  -H "Content-Type: application/json" \
  -H "Ocp-Apim-Subscription-Key: ${subscription_key}" \
  --data-ascii "${body}" | jq -r '.userId')

}

function get_user_kbases () {

  kbId=$(curl -s -X GET "https://${endpoint}/qnamaker/v4.0/knowledgebases" \
    -H "Ocp-Apim-Subscription-Key: ${subscription_key}" \
    --data-ascii "" | jq -r '.knowledgebases | .[] | select(.name == "govbotkb").id')
  echo "${kbId}"
}


function publish_knowledge_base () {

  echo "Publishing the knowledgebase ${kbId} ..."

  publish_result=$(curl -s -X POST "https://${endpoint}/qnamaker/v4.0/knowledgebases/${kbId}" \
    -H "Ocp-Apim-Subscription-Key: ${subscription_key}" \
    --data-ascii "${body}")

  echo "${publish_result}"

}


function get_knowledgebase_details () {

   echo "Getting knowledgebase details ..."
   echo curl -v -X GET "https://${endpoint}/qnamaker/v4.0/knowledgebases/${kbId}" -H "Ocp-Apim-Subscription-Key: ${subscription_key}"
   kbase_details=$( curl -s -X GET "https://${endpoint}/qnamaker/v4.0/knowledgebases/${kbId}" \
                   -H "Ocp-Apim-Subscription-Key: ${subscription_key}" \
                   --data-ascii "{body}"
                  )
    echo "${kbase_details}"

}

1 个答案:

答案 0 :(得分:0)

您正在将订阅密钥传递到每个API调用中,包括在创建知识库时。订阅密钥来自您的QnA服务,因此可用于识别您的服务并将知识库连接到该服务。