Search code examples
botframeworkazure-qna-maker

How to send a local file path thorugh the QnA Create Knowledgebase API?


I am referring to this QnA create knowledgebaseAPI documentation. I want to upload the knowledge base through the Excel file which is stored in the local path. I don't have URL for the excel file, only the local path.

I followed the code given on github link, I removed the unnecessary things and kept the variable "kb" as shown below:

   static string kb = $@"
    {{
      'name': 'VivekKB',
      'qnaList': [],
      'urls': [ ],
      'files': [
            'files': {{DBFile}}
        ]
    }}

DBFile is the filename with full path. When I run the code, it creates an Empty knowledge store. It doesn't upload the excel file which I mentioned. Can you please help me to figure it out how to upload a local excel QnA data directly to QnA store. I want to avoid manual uploading excel to knowledgebases at https://www.qnamaker.ai.

Thanks in advance. Vivek


Solution

  • Connected with the QnA team directly, asking the following:

    Question: Is it possible to use a local file path to create KB through the programmatic API?

    I know given in the programmatic QnA API docs it demonstrates how to add a PDF file that’s already also available online as well:

    "files": [
        {
          "fileName": "SurfaceManual.pdf",
          "fileUri": "https://download.microsoft.com/download/2/9/B/29B20383-302C-4517-A006-B0186F04BE28/surface-pro-4-user-guide-EN.pdf"
        }
    

    However when I tried using “POST Create Knowledgebase “ in Postman using the relative file path in the “fileUri”, I get “invalid uri” error.

    Request Body

    {
      "name": "Simple QnA",
      "files": [
        {
          "fileName": "simpleQnaSource.docx",
          "fileUri": "C:\\Users\\v-asho\\Documents\\RandomWordDocs"
        }
      ]
    }
    

    Response

    {
        "error": {
            "code": "BadArgument",
            "message": "Invalid input. See details.",
            "details": [
                {
                    "code": "ValidationFailure",
                    "message": "File Uri has one or more invalid uri.",
                    "target": "Files[0].FileUri"
                }
            ]
        }
    }
    

    Uploading the .docx file online through qnamaker.ai portal successfully creates a KB, it’s specifically through the programmatic api where I’m having issues.


    QnA Team's Answer:

    fileUri” can have a publicly available and downloadable URI as value. When using it via API, please upload the contents of local file to a publicly available domain. (Example: Azure storage blob shared to public).