Microservice that matches query strings to a large database of questions/answers, with context
Clone the repo. npm install
. Copy conf.json.example
to conf.json
.
Run mongod
locally in another process.
npm test
to run test suite. npm test -- -w
to watch for file updates.
npm test -- test/route-query.js
to run tests on a particular file.
npm start
to spin up the server, then call make requests with
curl 'localhost:3002/api/query?question=how+are+you' -H 'Authorization: Bearer test'
All inputs and outputs are JSON. Query parameters should be sent like so:
- Dates in Query Strings should be in ISO_8601 format
- Arrays in Query Strings should be any format understood by
qs
(a[]=b&a[]=c
works fine) - Bools in Query Strings should be
0
or1
-
PUT
methods merged onto the existing objects using_.assign
-
created
andupdated
are set automatically and cannot be modified
-
GET /query
- Run a question through the system. Creates aLog
entry.- Query Parameters
-
question : String
- User's question -
messagingService : String
- filters the Understandings based upon the college we are concerned about -
contexts : [String]
- allows access to Understandings that haveinputContexts
specified -
userId : String
- For logging purposes
-
- Returns
success : Boolean
-
topic : String
-topic
for the matchedUnderstanding
-
answer : String
- answer to send the user -
outputContexts : [String]
- contexts that should be sent with the next request -
logId : String
-id
of the generatedLog
entry.
- Query Parameters
-
GET /logs
- Return a list of all logs, optionally filtered. Please filter, or there will be too many results- Query Parameters
createdBefore, createdAfter, updatedBefore, updatedAfter : Date
needsReview, handled : Boolean
messagingService : String
- Query Parameters
-
PUT /logs/:id
- Update a log. SetshandledDate
andreviewedDate
automatically -
GET /understandings
- Get a list of all understandings, optionally filtered- Query Parameters
createdBefore, createdAfter, updatedBefore, updatedAfter : Date
- Query Parameters
-
PUT /understandings/:id
- Update an understanding -
POST /understandings/
- Create a new understanding -
GET /entities
- Get a list of all entities, optionally filtered- Query Parameters
createdBefore, createdAfter, updatedBefore, updatedAfter : Date
- Query Parameters
-
PUT /entities/:id
- Update an entity -
POST /entities
- Create a new entity
-
Understandings
created : Date
updated : Date
topic : String
keywords : [String]
outputContexts : [String]
-
questionGroups : [Object]
inputContexts : [String]
fuzzyQuestions [String]
exactQuestions [String]
-
answerGroups : [Object]
messagingService : String
answers : [String]
media : [String]
-
Entities
created : Date
updated : Date
name : String
-
synonymGroups : [Object]
messagingService : String
synonyms : [String]
-
Logs
created : Date
updated : Date
-
userId : String
- Oli User ID question : String
inputContexts : [String]
outputContexts : [String]
topic : String
messagingService : String
answer : String
sentToHuman : String
handled : Boolean
-
handledBy : String
- Oli User ID -
handledDate : Date
- Set automatically withPUT /logs
if{handled : true}
handledAction : [String]
humanResponse : String
reviewed : Boolean
-
reviewedBy : String
- Oli User ID -
reviewedDate : Date
- Set automatically withPUT /logs
if{needsReview : true -> false}
reviewedAction : String
error : String