NLQ Service
About
The NLQ service can be called via API from external components.
Details about the Endpoints used are below.
EndPoints
Two end points must be called:
- Verify User Question
                                                    
- Description:
                                                            
- This endpoint tells you if the user query can be a natural language query.
 - The result of this query will determine if the endpoint Get NLQ Response below is necessary and beneficial to call.
 
 - This endpoint is called first.
 - Endpoint: https://<SmartHub-app-url>/_bai/v1.0/chatbot/verify
 - POST request
 - Must include HTTP request header: X-SH-Authorization
 - Request body (see "Endpoint Sample Request Body" code below)
- Format: JSON
 
 
 - Description:
                                                            
 - Get NLQ Response
                                                    
- Description:
- This endpoint calls your NLQ service, and returns the user intent and entities detected in the original query.
 - If a Bot Conversation matches the intent, this call returns the new query text, or the HTML snippet configured in the Bot Conversation. 
 - Returns a query transformation
 
 - POST request
 - Must include HTTP request header: X-SH-Authorization
 - Call the Get NLQ Response endpoint only if the Verify User Question endpoint returns 
TRUE - Endpoint: https://<SmartHub-app-url/_bai/v1.0/chatbot/process
 
 - Description:
 
Endpoint Sample Request Body
This applies to both endpoints:
{
  "question": "show me diabetes treatment documents",
  "query": {
    "CorrelationId": "7bb46f7a-8b7c-8192-0376-84a53105f2bd",
    "QueryText": "show me diabetes treatment documents",
    "QueryTemplate": "{searchboxquery} FederatorBackends:\"*\"",
    "SortList": [
      {
        "SortType": 1,
        "PropertyName": "Rank",
        "Direction": 1
      }
    ],
    "EnableSorting": true,
    "PreferredLanguage": "en-US",
    "HitHighlightedProperties": [
      "Title"    ],
    "RowLimit": 10,
    "StartRow": 0,
    "SelectProperties": [
      "title",
      "escbasecrawurl",
      "Size",
      "DisplayAuthor"    ],
    "Refiners": "DisplayAuthor,filetype,ContentSource,RefinableString131",
    "SourceId": "221c396f-c525-4fe2-a210-c58c81ffeb99",
    "RefinementFilters": [],
    "TrimDuplicates": true,
    "EnableStemming": true,
    "Source": "ChatBot",
    "SummaryLength": 200,
    "ResultsUrl": "https://smarthuba.bainsight.com/SmartSearchNew/Results.html"  }
}
                                                        Verify User Question Sample Response Body
"{\"IsNLQ\":\"true\"}"
                                                        Get NLQ Sample Response Body
"{\"message\":\"\",\"queryText\":\"( diabetes treatment )\",\"additionalResultsQueryToRun\":\"( diabetes treatment )\",\"raw\":\"{\\r\\n  \\\"query\\\": \\\"show me diabetes treatment documents\\\",\\r\\n  \\\"topScoringIntent\\\": {\\r\\n    \\\"intent\\\": \\\"SearchForDocuments\\\",\\r\\n    \\\"score\\\": 0.885881841\\r\\n  },\\r\\n  \\\"intents\\\": [\\r\\n    {\\r\\n      \\\"intent\\\": \\\"SearchForDocuments\\\",\\r\\n      \\\"score\\\": 0.885881841\\r\\n    },\\r\\n    {\\r\\n      \\\"intent\\\": \\\"SearchForPeople\\\",\\r\\n      \\\"score\\\": 0.154521391\\r\\n    },\\r\\n    {\\r\\n      \\\"intent\\\": \\\"None\\\",\\r\\n      \\\"score\\\": 0.000812157639\\r\\n    },\\r\\n    {\\r\\n      \\\"intent\\\": \\\"AskForExperts\\\",\\r\\n      \\\"score\\\": 0.0005798265\\r\\n    }\\r\\n  ],\\r\\n  \\\"entities\\\": [\\r\\n    {\\r\\n      \\\"entity\\\": \\\"diabetes\\\",\\r\\n      \\\"type\\\": \\\"Diseases\\\",\\r\\n      \\\"startIndex\\\": 8,\\r\\n      \\\"endIndex\\\": 15,\\r\\n      \\\"resolution\\\": {\\r\\n        \\\"values\\\": [\\r\\n          \\\"diabetes\\\"\\r\\n        ]\\r\\n      }\\r\\n    },\\r\\n    {\\r\\n      \\\"entity\\\": \\\"diabetes treatment\\\",\\r\\n      \\\"type\\\": \\\"Information\\\",\\r\\n      \\\"startIndex\\\": 8,\\r\\n      \\\"endIndex\\\": 25,\\r\\n      \\\"resolution\\\": {\\r\\n        \\\"values\\\": [\\r\\n          \\\"diabetes treatment\\\"\\r\\n        ]\\r\\n      }\\r\\n    },\\r\\n    {\\r\\n      \\\"entity\\\": \\\"diabetes\\\",\\r\\n      \\\"type\\\": \\\"Skills\\\",\\r\\n      \\\"startIndex\\\": 8,\\r\\n      \\\"endIndex\\\": 15,\\r\\n      \\\"resolution\\\": {\\r\\n        \\\"values\\\": [\\r\\n          \\\"Diabetes\\\"\\r\\n        ]\\r\\n      }\\r\\n    }\\r\\n  ]\\r\\n}\",\"payload\":\"{\\\"UserIntent\\\":\\\"SearchForDocuments\\\",\\\"Entities\\\":[{\\\"Type\\\":\\\"Diseases\\\",\\\"Value\\\":\\\"diabetes\\\",\\\"Properties\\\":{\\\"values\\\":[\\\"diabetes\\\"]}},{\\\"Type\\\":\\\"Information\\\",\\\"Value\\\":\\\"diabetes treatment\\\",\\\"Properties\\\":{\\\"values\\\":[\\\"diabetes treatment\\\"]}},{\\\"Type\\\":\\\"Skills\\\",\\\"Value\\\":\\\"Diabetes\\\",\\\"Properties\\\":{\\\"values\\\":[\\\"Diabetes\\\"]}}]}\"}"
                                                        Response Body
To use the received response body, use the following JavaScript code:
- 
                                                    
var nlqResponse = JSON.parse(responseBodyHere) 
The full RAW response from the configured NLQ service can be found by using this command:
- 
                                                    
JSON.parse(nlqResponse.raw)