Q&A 와 문서 업로드하기
먼저 Alli 에 로그인 해야 합니다. 그 다음 Q&A 메뉴 로 이동하면 질문/답변 쌍을 등록할 수 있습니다. 워드, PDF, 파워포인트, 엑셀 등 문서 파일을 등록하려면 문서 메뉴 로 이동합니다.
문서 데이터베이스를 마이크로소프트 OneDrive 등의 데이터 소스와 연동하려면 소스 설정 메뉴 로 이동하세요. API 를 통해 문서를 직접 업로드하려면 본 문서의 Documents 업로드 부분을 참고하세요.
API 키 얻기
각 요청의 헤더에 프로젝트에 할당된 API-KEY
를 제공해야 합니다. API 키는 대시보드의 설정 메뉴 아래 일반 탭에서 찾을 수 있습니다.
에이전트 혹은 유저 정보 입력하기
특정 엔드포인트에는 리퀘스트 헤더에 에이전트나 유저 정보를 입력해 누가 해당 API 콜을 실행하는지 지정할 수 있습니다.
에이전트 정보는 AGENT-EMAIL
헤더를 사용해 입력합니다. 에이전트의 메일 주소는 Alli 대시보드 프로젝트 설정 > 담당자 메뉴 에서 확인할 수 있습니다. 아래는 입력 예시입니다.
Copy -H 'AGENT-EMAIL: agent_1@email.com'
유저 정보는 OWN-USER-ID
에 유저 ID 를 입력하여 제공할 수 있습니다. 기존 유저 ID 를 사용하거나 새로운 ID 를 사용할 수 있으며, 새로운 ID 가 입력되면 Alli 가 해당 ID 로 신규 유저를 생성합니다. 이후 같은 OWN-USER-ID
헤더가 사용되면 해당 콜은 동일 유저가 실행한 것으로 인식됩니다.
또한 유저 ID 를 사용할 때 유저의 이메일 정보를 업데이트할 수 있습니다. USER-EMAIL
헤더에 업데이트를 원하는 이메일을 입력하면 됩니다. 아래는 입력 예시입니다.
Copy -H 'OWN-USER-ID: 5f1234567a409876c082487z' \
-H 'USER-EMAIL: user_1@email.com'
OWN-USER-ID
에는 ASCII 캐릭터만 사용할 수 있습니다. 사용하고자 하는 유저 ID 에 ASCII 캐릭터가 아닌 캐릭터가 포함되는 경우, base64 인코딩 후 base64:CONVERTED_ID 형식을 사용할 수 있습니다.
유저 ID 정보는 Alli 대시보드의 고객 메뉴 에서 확인할 수 있습니다.
URL 내 Path parameter 인코딩하기
URL Path parameter 입력 시, 비예약문자(a-z,A-Z,0-9, - _ . ~)를 제외한 모든 문자를 UTF-8 및 퍼센트 인코딩 후 입력하시는 것을 권장합니다. 예약문자는( ! * ' ( ) ; : @ & = + $ , / ? # [ ] )는 반드시 UTF-8 및 퍼센트 인코딩되어야합니다.
에러 메시지
예상했던 response 를 받지 못한 경우 에러 메시지를 확인해 주세요. 예를 들어 잘못된 HTTP 메소드를 사용한 경우 아래와 같은 형식의 에러 메시지가 리턴됩니다.
Copy {“error”: “Method Not Allowed POST: /webapi/faq_feedbacks”}
Q&A에서 검색하기
POST
https://backend.alli.ai/webapi/faq
Q&A API 를 사용하면 Q&A 데이터베이스에 질문과 가장 관련이 깊은 Q&A 쌍을 찾아 제시합니다.
할당된 API 키입니다. 대시보드의 설정 메뉴 > 일반 탭에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
해당 API 콜을 실행하는 유저를 지정하고 싶은 경우 신규 혹은 기존 유저 ID 를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.
OWN-USER-ID
와 함께 사용합니다. 이메일 주소를 입력하여 해당 유저의 이메일 정보를 업데이트할 수 있습니다.
Request Body
기본값은 true 입니다. 이 값을 false 로 설정하면 정답을 찾지 못한 경우에 자동으로 Candidates에 등록하지 않습니다.
AND 혹은 OR 값입니다. 지정된 해시태그를 모두 포함하는 Q&A 를 찾으려면 AND를, 하나라도 포함하는 Q&A 를 찾으려면 OR 를 사용합니다.
해당 해시태그를 포함하는 Q&A 만 검색 대상에 포함합니다.
html
혹은 text
입니다. 답변에 Styled html 이 포함되어 있는 경우 (폰트 크기 혹은 색상 등) html 을 사용하면 됩니다. 단순 텍스트로만 답변을 얻고 싶으면 text 를 사용합니다. 기본값은 html 입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
confidence: AI 모델이 산출한 confidence 값을 보여줍니다. 0과 1 사이의 숫자입니다.
effectiveConfidence: 쿼리 결과에 피드백이 제공되면 AI 모델의 트레이닝에 반영되며, 유저와 에이전트의 피드백 결과를 반영하여 조정된 confidence 값이 effective confidence 입니다. 0과 1 사이의 숫자입니다.
question: 제시된 질문/답변 쌍에서 질문 부분입니다.
answer: 제시된 질문/답변 쌍에서 답변 부분입니다.
id: 피드백을 입력하거나 취소할 Q&A 검색 결과를 특정하기 위해 사용됩니다.
hashtags: Q&A 등록되어 있는 해시태그 목록입니다.
lastUpdatedDate: Q&A 가 마지막으로 수정된 날짜입니다.
agentFeedback: 해당 Q&A 에 대해 에이전트가 부여한 긍정(positiveCount) / 부정(negativeCount) 피드백입니다.
userFeedback: 해당 Q&A 에 대해 고객이 부여한 피드백입니다. 고객이 질문 후 해당 Q&A 를 선택한 경우 positiveCount, 제시된 Q&A 들을 고객이 선택하지 않은 경우 negativeCount 가 증가합니다.
count: 질문에 대해 제시된 Q&A 의 개수입니다.
hashId: 쿼리/결과 쌍의 고유 ID로 select_answer 에서 사용됩니다.
제시되는 Q&A 개수, threshold 설정 등은 대시보드의 설정에 따릅니다. 지식 베이스 > Q&A 메뉴에서 Q&A 설정을 참고하세요.
Copy {"result":
[
{
"confidence": 0.8371959004827834,
"effectiveConfidence": 0.9698303406362148,
"question": "제품 가격은 어떻게 되나요?",
"answer": "웹사이트에서 무료 플랜을 포함한 프라이싱 플랜을 확인하실 수 있습니다.",
"id": "ClMVIjCoNDAiZDLyNWZhM1O3YTUIIKZjPPRcER==",
"hashtags": [],
"lastUpdatedDate": "2020-11-19",
"agentFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"]
},
{
"confidence": 0.6119840535714456,
"effectiveConfidence": 0.7738889000171243,
"question": "플랜별 가격표가 있나요?",
"answer": "물론 있습니다. 웹사이트의 PRICING 메뉴에서 확인하실 수 있습니다.",
"id": "RkFROjVmNDAwZDMyNWZhM2Y4YTA1ZDZjNWUwMQ==",
"hashtags": [],
"lastUpdatedDate": "2020-11-20",
"agentFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
}
],
"count": 2,
"hashId": "d4cr44d4e56766ce0c2b21f4aa5463a4"
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -d '{
"query": "보험 해지",
"hashtags": ["wiki", "knowledge"],
"hashtagsOperator": "OR",
"maxResults": 3,
"format": "text"}' \
-H "Content-Type: application/json" \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/faq
Response Example
Copy {"result":
[
{
"confidence": 0.8371959004827834,
"effectiveConfidence": 0.9698303406362148,
"question": "제품 가격은 어떻게 되나요?",
"answer": "웹사이트에서 무료 플랜을 포함한 프라이싱 플랜을 확인하실 수 있습니다.",
"id": "ClMVIjCoNDAiZDLyNWZhM1O3YTUIIKZjPPRcER==",
"hashtags": [],
"lastUpdatedDate": "2020-11-19",
"agentFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"]
},
{
"confidence": 0.6119840535714456,
"effectiveConfidence": 0.7738889000171243,
"question": "플랜별 가격표가 있나요?",
"answer": "물론 있습니다. 웹사이트의 PRICING 메뉴에서 확인하실 수 있습니다.",
"id": "RkFROjVmNDAwZDMyNWZhM2Y4YTA1ZDZjNWUwMQ==",
"hashtags": [],
"lastUpdatedDate": "2020-11-20",
"agentFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
}
],
"count": 2,
"hashId": "d4cr44d4e56766ce0c2b21f4aa5463a4"
}
Documents에서 검색하기
POST
https://backend.alli.ai/webapi/mrc
Documents API 를 사용하면 복잡한 표 등이 포함된 비정형 문서에서 질문에 답변을 추출할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
해당 API 콜을 실행하는 유저를 지정하고 싶은 경우 신규 혹은 기존 유저 ID 를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.
OWN-USER-ID 와 함께 사용합니다. 이메일 주소를 입력하여 해당 유저의 이메일 정보를 업데이트할 수 있습니다.
Request Body
true 인 경우 각 검색 결과 html 프리뷰의 html body 및 css 정보가 리턴됩니다. 기본값은 false 입니다.
default 값은 true 입니다. 이 값을 false 로 설정하면 정답을 찾지 못한 경우에 자동으로 Candidates 에 등록하지 않습니다.
AND 혹은 OR 값입니다. 지정된 해시태그를 모두 포함하는 Q&A 를 찾으려면 AND를, 하나라도 포함하는 Q&A 를 찾으려면 OR 를 사용합니다.
대시보드에 등록한 문서에 해시태그를 추가할 수 있으며, hashtags 를 사용해 해당 태그가 붙은 문서로 검색 대상을 한정할 수 있습니다.
html
혹은 text
입니다. 답변에 styled html 이 포함되어 있는 경우 (폰트 크기 혹은 색상 등) html 을 사용하면 됩니다. 단순 텍스트로만 답변을 얻고 싶으면 text 를 사용합니다. 기본값은 html 입니다.
true 인 경우 각 검색 결과 pdf 프리뷰의 링크를 pdfPreview 패러미터로 리턴합니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
answer
: 대시보드에 업로드된 문서에서 추출된 답변입니다
answerHash
: 피드백을 입력하거나 취소할 Documents 검색 결과를 특정하기 위해 사용됩니다.
confidence
: AI 모델이 산출한 confidence 값을 보여줍니다. 0과 1 사이의 숫자입니다.
effectiveConfidence
: 쿼리 결과에 피드백이 제공되면 AI 모델의 트레이닝에 반영되며, 유저와 에이전트의 피드백 결과를 반영하여 조정된 confidence 값이 effective confidence 입니다. 0과 1 사이의 숫자입니다.
documentId
: 답변이 추출된 문서의 ID 입니다.
documentName
: 답변이 추출된 문서의 이름입니다.
hashtags
: 문서에 등록되어 있는 해시태그 목록입니다.
pageNo
: 문서 내 답변이 추출된 페이지 정보입니다.
createdDate
: 해당 문서가 생성(업로드) 된 날짜입니다.
agentFeedback
: 해당 검색 결과에 대해 에이전트가 부여한 긍정(positiveCount) / 부정(negativeCount) 피드백입니다.
userFeedback
: 해당 검색 결과에 대해 유저가 부여한 긍정 / 부정 피드백입니다.
body
: 요청에서 returnPreview 가 true 인 경우 문서 검색 프리뷰의 html body 가 출력됩니다.
css
: 요청에서 returnPreview 가 true 인 경우 문서 검색 프리뷰의 css 가 출력됩니다.
pdfPreview
: 요청에서 pdfPreview 가 true 인 경우 문서 검색 결과 pdf 프리뷰의 url 이 리턴됩니다. 해당 url로의 엑세스는 다운로드 IP 화이트리스트를 이용해 제한이 가능합니다.
Copy {
"result": [
{
"answer": "ANSWER_1",
"answerHash": "ANSWER_HASH_1",
"confidence": CONFIDENCE_1,
"effectiveConfidence": EFFECTIVE_CONFIDENCE_1,
"documentId": "DOCUMENT_ID_1",
"documentName": "DOCUMENT_NAME_1",
"hashtags": [],
"pageNo": PAGE_NUMBER,
"createdDate": "DATE",
"agentFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"userFeedback": {
"positiveCount": 2,
"negativeCount": 0
},
"body": "PREVIEW_HTML_BODY",
"css": "PREVIEW_CSS"
"pdfPreview": "PDF_PREVIEW_URL"
}
]
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -d '{
"query": "보험 해지",
"hashtags": ["wiki", "knowledge"],
"hashtagsOperator": "OR",
"maxResults": 3,
"format": "text",
"pdfPreview": true}' \
-H "Content-Type: application/json" \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/mrc
Response Example
Copy {
"result": [
{
"answer": "30일 안에는 불이익 없이 해지가 가능합니다.",
"answerHash": "8430cf3b9af628abc1bb063802db39be",
"confidence": 0.9998937845230103,
"effectiveConfidence": 1,
"documentId": "S25vd2xlZGdlQmFzZTo1ZjMzODFkZmNhYWJjYWUyMjkzYjFhY2U=",
"documentName": "보험표준약관.docx",
"hashtags": [],
"pageNo": 5,
"createdDate": "2020-11-18",
"agentFeedback": {
"positiveCount": 2,
"negativeCount": 0
},
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"pdfPreview": "PDF_PREVIEW_URL",
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true,
"properties": {}
},
{
"answer": "30일 이후 해지 시 환불이 불가능합니다.",
"answerHash": "d849a49662a4f21df51de24d06196547",
"confidence": 0.9998629689216614,
"effectiveConfidence": 1,
"documentId": "S25vd2xlZGdlQmFzZTo1ZjMzODFkZmNhYWJjYWUyMjkzYjFhY2U=",
"documentName": "실보험 약관 2020.pdf",
"hashtags": ["policy", "2020"],
"pageNo": 234,
"createdDate": "2020-11-18",
"agentFeedback": {
"positiveCount": 4,
"negativeCount": 1
},
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"pdfPreview": "PDF_PREVIEW_URL",
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true,
"properties": {}
}
]
}
Q&A 상세 정보 확인
GET
https://backend.alli.ai/webapi/single_faq
이 API 를 사용하면 Q&A 항목 하나의 상세 정보를 확인할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
Q&A 의 답변 부분 형식입니다. html 혹은 text 을 사용할 수 있습니다. 기본값은 html 입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
question: 해당 Q&A 항목의 질문 부분입니다.
answer : 해당 Q&A 항목의 답변 부분입니다.
id: 해당 Q&A 의 ID 입니다.
userFeedback: 해당 Q&A 항목에 대한 고객 피드백 정보입니다. 대화 중 고객에게 선택되는 경우 positiveCount 가, 제시되었지만 선택되지 않은 경우 negativeCount 가 더해집니다.
agentFeedback: 해당 Q&A 항목에 대해 대시보드 혹은 API 를 통해 에이전트가 부여한 긍정/부정 피드백 정보입니다.
lastUpdatedDate, createdDate: 마지막으로 업데이트된 날짜와 생성된 날짜입니다.
hashtags: 해당 Q&A 항목에 등록된 해시태그들입니다.
Copy {
"result": {
"question": "올거나이즈 사무실은 어디에 있나요?",
"answer": "본사는 미국 캘리포니아의 실리콘밸리에 위치하고 있습니다.",
"id": "RkFROjYwMmD2ZTQ0YWZmQWQ5YmQ0NmM5Y4VkNw==",
"userFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"agentFeedback": {
"positiveCount": 0,
"negativeCount": 1
},
"lastUpdatedDate": "2021-02-19",
"createdDate": "2021-02-19",
"hashtags": [],
"statusOnAt": null,
"statusOffAt": null,
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
}
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -X GET \
-d '{"id": "RkFROjY0YWZmQWQ5YmQ0NmM5Y4VkNw==", "format": "text"}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/single_faq
Response Example
Copy {
"result": {
"question": "올거나이즈 사무실은 어디에 있나요?",
"answer": "본사는 미국 캘리포니아의 실리콘밸리에 위치하고 있습니다.",
"id": "RkFROjYwMmD2ZTQ0YWZmQWQ5YmQ0NmM5Y4VkNw==",
"userFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"agentFeedback": {
"positiveCount": 0,
"negativeCount": 1
},
"lastUpdatedDate": "2021-02-19",
"createdDate": "2021-02-19",
"hashtags": [],
"statusOnAt": null,
"statusOffAt": null,
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
}
}
Documents 상세 정보 확인
GET
https://backend.alli.ai/webapi/single_document
이 API 를 사용하면 Q&A 항목 하나의 상세 정보를 확인할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
확인하고자 하는 문서의 ID The id of the document.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
id: 해당 문서의 ID 입니다.
documentName: 해당 문서의 파일명입니다.
createdDate: 해당 문서의 생성(업로드) 날짜입니다.
hashtags: 해당 문서에 등록된 해시태그들입니다.
agentFeedback: 해당 문에 대해 대시보드 혹은 API 를 통해 에이전트가 부여한 긍정/부정 피드백 정보입니다.
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -X GET \
-d '{"id": "S25v42xlZGdlQmFzZTo1ZjEzODFkZmNhYWQjYWUyMjkZYjFhY2U="}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/single_document
Response Example
Copy {"result": {
"id": "S25vd2xlZGdlQmFzZTo1ZjMzODFkZmNhYWJjYWUyMjkzYjFhY2U=",
"documentName": "정책문 1.docx",
"createdDate": "2020-11-12",
"agentFeedback": {
"positiveCount": 1,
"negativeCount": 0
},
"hashtags" : ["정책", "가이드"]
}
}
Q&A Feedbacks
GET
https://backend.alli.ai/webapi/faq_feedbacks
이 API 를 사용하면 검색 쿼리별로 Q&A 쌍에 주어지는 피드백 리스트를 받아올 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
특정 에이전트가 부여한 피드백만 조회하고 싶은 경우 에이전트의 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
특정 유저가 뷰여한 피드백만 조회하고 싶은 경우 유저의 아이디를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.
Request Body
페이지에 출력될 첫번째 항목의 위치를 결정합니다.
한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값은 100입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
query: 아래 Q&A 에 대해 피드백 정보를 가지고 있는 검색 쿼리입니다.
feedbacks: 해당 쿼리에 종속된 피드백 정보입니다. faq_id와 positive를 포함합니다.
faqId: 해당 쿼리에 대해 피드백이 주어진 Q&A의 ID입니다.
positive: true 혹은 false 입니다. true 는 Q&A 가 긍정 피드백을 가지고 있음을 나타내며 false 는 부정 피드백을 나타냅니다.
count: 리스트된 피드백들의 수입니다.
Copy {
"result": [
{
"query": "QUERY_1",
"feedbacks": [
{
"faqId": "FAQ_ID_1_1",
"positive": true or false
}, ...
]
}, ...
],
"count": COUNT_1
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -X GET \
-d '{"offset": 0, "limit": 10}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/faq_feedbacks
Response Example
Copy {
"result": [
{
"query": "오피스가 어디죠?",
"feedbacks": [
{
"faqId": "RkFROjVmNDA1MWVkMTFmOWJjMTJjOGUwMTg5YQ==",
"positive": true
},
{
"faqId": "RkFROjVmNDA1MWVkMTFmOWJjMTJjOGUwMThhNA==",
"positive": false
},
{
"faqId": "RkFROjVmNDA1MWVjMTFmOWJjMTJjOGUwMTgyYw==",
"positive": true
}
]
},
{
"query": "투자를 받았나요?",
"feedbacks": [
{
"faqId": "RkFROjVmNDA1MWVjMTFmOWJjMTJjOGUwMTgyNw==",
"positive": true
}
]
}
],
"count": 4
}
Q&A Feedback
POST
https://backend.alli.ai/webapi/faq_feedback
이 API 를 사용하면 검색 쿼리별로 Q&A 에 피드백을 주거나 주어진 피드백을 삭제할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
Request Body
해당 Q&A 에 피드백 정보를 주거나 취소하고자 하는 검색 쿼리입니다.
피드백 정보를 주거나 취소할 Q&A 의 ID 입니다. 검색이 일어날 때 검색 쿼리와 결과 Q&A 쌍에 대해 주어지며, 위의 POST Q&A API 를 이용해 추출할 수 있습니다.
true 이면 긍정 피드백을 주며, false 이면 부정 피드백을 줍니다. null 이면 주어진 피드백을 취소합니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
id: 피드백 정보를 주거나 취소한 Q&A 의 ID 입니다. Request 에서 사용한 것과 동일한 정보입니다.
positiveCount: Request 가 처리된 후의 총 긍정 피드백 수입니다.
negativeCount: Request 가 처리된 후의 총 부정 피드백 수입니다.
Copy {
"errors": null,
"result": {
"faq": {
"id": "ID_1"
},
"agentFeedback": {
"positiveCount": NUMBER,
"negativeCount": NUMBER
}
}
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Q&A_ID 를 해당하는 Q&A ID 로 바꾸어야 합니다. Q&A ID 를 얻으려면 Q&A 에서 검색하기의 Response Example 혹은 Q&A Feedbacks 의 Response Example 항목을 참고하세요.
Copy curl https://backend.alli.ai/webapi/faq_feedback \
-d '{"query": "어디에 있나요?",
"id": "Q&A_ID",
"isPositive": true}' \
-H "Content-Type: application/json" \
-H "API-KEY: YOUR API KEY"
Response Example
Copy {
"errors": null,
"result": {
"faq": {
"id": "RkFROjVmNDA1MWVjMTFmOWJjMTJjOGUwMTgyNw=="
},
"agentFeedback": {
"positiveCount": 3,
"negativeCount": 1
}
}
}
Q&A User Feedback
POST
https://backend.alli.ai/webapi/faq/user_feedback
이 API 를 사용하면 검색 쿼리별로 Q&A 에 유저 피드백을 부여할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 유저를 지정하고 싶은 경우 신규 혹은 기존 유저 ID 를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.
OWN-USER-ID
와 함께 사용합니다. 이메일 주소를 입력하여 해당 유저의 이메일 정보를 업데이트할 수 있습니다.
Request Body
해당 쿼리에 부여한 과거의 피드백을 수정하려면 true 로 설정합니다.
true 인 경우 긍정 피드백, false 인 경우 부정 피드백을 부여합니다.
피드백 정보를 Q&A 의 ID 입니다. 검색이 일어날 때 검색 쿼리와 결과 Q&A 쌍에 대해 주어지며, 위의 POST Q&A API 를 이용해 추출할 수 있습니다.
해시태그 별 통계에서 사용될 해시태그를 수동으로 등록할 수 있습니다. 해당 해시태그가 적용 범위로 사용됩니다.
200 결과는 아래 JSON 형식으로 리턴되며, 총 긍정 피드백과 부정 피드백 개수를 보여줍니다.
Copy {
"result": {
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
}
}
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Q&A_ID 를 해당하는 Q&A ID 로 바꾸어야 합니다. Q&A ID 를 얻으려면 Q&A 에서 검색하기의 Response Example 혹은 Q&A Feedbacks 의 Response Example 항목을 참고하세요.
Copy curl --request POST 'https://backend.alli.ai/webapi/mrc/user_feedback' \
--header 'API-KEY: YOUR_API_KEY' \
-d '{
"query": "office loacation?",
"prev": false,
"id": "RkFROjYwwEk4YTU0YTc0MjNmMDgxOIdkZTZiNA==",
"positive": true
}'
Response Example
Copy {
"result": {
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
}
}
}
Q&A 업로드
POST
https://backend.alli.ai/webapi/upload_faq_file
이 API 를 이용하면 tsv, csv, xlsx, zip 형식으로 다수의 Q&A 를 한꺼번에 업로드할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
Request Body
Q&A 파일이 저장된 로컬 위치입니다. xlsx, tsv, csv 및 zip 파일 형식을 지원합니다.
200 result: 파일이 성공적으로 업로드되면 success 가 리턴됩니다.
notUploaded: 하나 이상의 파일이 업로드되지 않거나 기존의 Q&A 를 업데이트하는 경우 여기에 상세 내역이 표시됩니다.
question: 업로드되지 않거나 업데이트된 Q&A 의 질문 부분입니다.
state: 기존 Q&A 의 '유사 질문' 과 중복되는 질문은 업로드되지 않으며 dup 이 리턴됩니다. 기존 Q&A 의 질문과 동일한 질문은 답변 내용 등 새 Q&A 의 내용으로 기존 Q&A 를 업데이트하며 up 이 리턴됩니다.
Copy {
"result": "success",
"notUploaded": [
{
"question": "QUESTION_1",
"state": "dup"
},
{
"question": "QUESTION_2",
"state": "up"
}
]
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -F 'file=@/location/to/your_file' \
-H 'API-KEY: YOUR_API_KEY'
https://backend.alli.ai/webapi/upload_faq_file
Response Example
Copy {
"result": "success",
"notUploaded": [
{
"question": "AI 를 어떻게 트레이닝하나요?",
"state": "dup"
},
{
"question": "미팅 혹은 데모를 진행하고 싶습니다.",
"state": "up"
}
]
}
Q&A 추가
POST
https://backend.alli.ai/webapi/register_faq
이 API 를 이용하면 새 Q&A 를 추가하거나 기존 Q&A 를 업데이트할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
Request Body
ON 혹은 OFF 값을 가집니다. ON 인 경우 해당 Q&A 가 Q&A 검색에 사용됩니다.
동일한 답변을 가지는 유사한 질문들입니다. 복수의 질문을 추가할 수 있습니다.
Q&A 의 답변 부분입니다. 질문이 동일한 Q&A 가 존재하는 경우 해당 답변으로 기존 Q&A 가 업데이트됩니다.
Q&A 에 추가될 해시태그들입니다. 복수의 해시태그를 추가할 수 있습니다.
해당 Q&A 와 관련해 다른 에이전트와 공유할 메모를 추가할 수 있습니다.
업로드 시 속한 폴더가 있을 경우, 해당 폴더의 권한을 그대로 승계하거나 승계하지 않습니다.(기본값: 참) 승계하지 않을 경우, 아래에서 따로 지정하는 권한을 사용합니다. 별도로 지정하지 않을 경우, 모든 에이전트 및 유저가 권한을 갖게 됩니다.
해당 파일을 편집 가능한 권한을 가진 에이전트를 등록합니다.
해당 파일을 조회 가능한 권한을 가진 에이전트를 등록합니다.
해당 파일을 조회 가능한 권한을 가진 유저를 등록합니다. customer_id, customer_group을 이용해 등록할 수 있습니다. customer_id는 own-user-id와 동일하고, customer_group의 id(categoryElementsId)는 CUSTOMER GROUP 조회하기 API를 통해 획득하실 수 있습니다.
editor/viewer 목록에 없는 에이전트도 조회가 가능하도록 설정합니다.
viewer 목록에 없는 유저도 조회가 가능하도록 설정합니다.
200 status: 등록된 Q&A 의 상태입니다. Q&A가 새롭게 등록된 경우 created, 기존 Q&A 가 업데이트된 경우 updated 가 리턴됩니다.
id: 등록된 Q&A 의 ID 입니다.
Copy {
"result": {
"status": "created",
"id": "Q&A_ID"
},
"errors": null
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl 'https://backend.alli.ai/webapi/register_faq' \
-H 'API-KEY: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"status": "ON",
"question": "사무실 위치가 어디인가요?",
"similarQuestions": ["오피스 주소?", "주소가 어떻게 되죠?"],
"answer": "미국 오클랜드, 한국 서울 및 일본 도쿄에 사무실이 있습니다.",
"hashtags": ["office", "location"],
"memo": "API 에서 추가",
"folder": "folder 1",
"agentEditor": ["your@email.com"],
"agentViewer": ["your@email_2.com"],
"userViewer": {
"variables": {
"CUSTOMER_ID": ["id_1", "id_2"],
"CUSTOMER_GROUP": ["{categoryElementId}", "{categoryElementId}"]
}
},
"followFolderPermission": false,
"allowOtherAgentsView": true,
"allowOtherUsersView": true
}'
Response Example
Copy {
"result": {
"status": "created",
"id": "RkFROkYwYRQxYzIzMDcxYWM5M3JlOWR5Y2EeOQ=="
},
"errors": null
}
Q&A 삭제
POST
https://backend.alli.ai/webapi/delete_faq
이 API 를 사용해 Q&A 를 삭제할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
200 status: Q&A 가 성공적으로 삭제되면 'deleted' 가 리턴됩니다. 404 지식 베이스에 일치하는 Q&A ID 가 없으면 아래 에러가 리턴됩니다.
Copy {
"result": {
"status": "deleted"
},
"errors": null
}
Copy {
"errors": "The record doesn't exist."
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl 'https://backend.alli.ai/webapi/delete_faq' \
-H 'API-KEY: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d {
"id": "RkFROkYwYRQxYzIzMDcxYWM5M3JlOWR5Y2EeOQ=="
}
Response Example
Copy {
"result": {
"status": "deleted"
},
"errors": null
}
Q&A 목록 조회
GET
https://backend.alli.ai/webapi/faqs
이 API 를 이용해 지식 베이스에 등록된 Q&A 의 목록을 조회할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
Q&A 목록을 필터링할 키워드 검색 쿼리입니다. Operator 를 이용해 고급 검색이 가능합니다. "TERM1 TERM2" 로 AND 검색, "TERM1 OR TERM2" 로 OR 검색, "\"TERM\"" 로 정확하게 일치하는 경우 검색이 가능합니다.
true
인 경우 켜져있는 Q&A 만 조회합니다. false
인 경우 꺼져있는 Q&A 만 조회합니다.
해시태그를 이용해 목록을 필터링합니다. 복수의 태그를 사용할 수 있습니다.
and
혹은 or
를 사용할 수 있습니다. and
인 경우 복수의 해시태그를 모두 가지는 Q&A 만 조회합니다. or
인 경우 하나라도 가지는 Q&A 를 모두 조회합니다.
true
인 경우 에이전트가 직접 등록한 Q&A 만 조회합니다. false
인 경우 그렇지 않은 Q&A 들만 조회합니다.
createdByAgent
, answeredByMrc
, autoGenerated
, editedByAgent
필터들은 상호 배타적으로 적용되며, 둘 이상이 사용될때는 OR 로직이 적용됩니다.
true
인 경우 문서에서 자동으로 답변이 추출된 Q&A 만 조회합니다. false
인 경우 그렇지 않은 Q&A 들만 조회합니다.
true
인 경우 자동 생성된 Q&A 만 조회합니다. false
인 경우 그렇지 않은 Q&A 들만 조회합니다.
true
인 경우 에이전트가 편집한 기록이 있는 Q&A 만 조회합니다. false
인 경우 그렇지 않은 Q&A 들만 조회합니다.
html
혹은 text
입니다. 답변에 styled html 이 포함되어 있는 경우 (폰트 크기 혹은 색상 등) html 을 사용하면 됩니다. 단순 텍스트로만 답변을 얻고 싶으면 text 를 사용합니다. 기본값은 html 입니다.
페이지에 출력될 첫번째 항목의 위치를 결정합니다.
한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값 및 기본은 1,000입니다.
200 offset: 리퀘스트 패러미터의 offset 과 동일한 값입니다.
count: 모든 필터 및 limit 이 적용된 후 리턴된 Q&A 의 총 수입니다.
totalCount: 모든 필터가 적용된 후의 총 Q&A 수입니다.
id: 해당 Q&A 의 ID 입니다.
question: 해당 Q&A 의 질문 부분입니다.
answer: 해당 Q&A 의 답변 부분입니다.
hashtags: 해당 Q&A 에 등록된 해시태그들입니다.
userFeedback: 긍정/부정 유저 피드백의 수입니다. 유저 피드백은 향후 검색 결과에 영향을 줍니다.
agentFeedback: 긍정/부정 에이전트 피드백 수입니다. 에이전트 피드백은 향후 검색 결과에 영향을 줍니다.
lastUpdatedDate: 해당 Q&A 가 마지막으로 업데이트된 날짜입니다.
createdDate: 해당 Q&A 가 생성된 날짜입니다.
Copy {
"offset": 0,
"count": 2,
"totalCount": 2,
"results": [
{
"id": "RkRODjYwUIr2YTUzYTc0MjNmMDgxOTFkZTRlNA==",
"question": "올거나이즈 직원 수는 몇명인가요?",
"answer": "현재 25명이 글로벌 오피스에서 근무하고 있습니다.",
"hashtags": [
"회사",
"현황"
],
"userFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"agentFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"lastUpdatedDate": "2021-05-04",
"createdDate": "2021-02-23",
"statusOnAt": null,
"statusOffAt": null,
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
},
{
"id": "RkFROjYwIdU4YTUzYTc0MjNmUR2wOTFkZTU1OA==",
"question": "올거나이즈에사 발간한 백서가 있나요?",
"answer": "물론 있습니다. 홈페이지의 Resources 메뉴를 확인하세요.",
"hashtags": [
"회사"
],
"userFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"agentFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"lastUpdatedDate": "2021-05-04",
"createdDate": "2021-02-23",
"statusOnAt": null,
"statusOffAt": null,
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
}
]
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -X GET 'https://backend.alli.ai/webapi/faqs' \
-H 'API-KEY: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"searchTerm": "올거나이즈",
"isUsed": true,
"hashtags": ["정책", "회사"],
"hashtagsOperator": "OR",
"createdByAgent": true,
"answeredByMrc": true,
"autoGenerated": false,
"editedByAgent": false,
"format": "text",
"offset": 0,
"limit": 10
}'
Response Example
Copy {
"offset": 0,
"count": 2,
"totalCount": 2,
"results": [
{
"id": "RkRODjYwUIr2YTUzYTc0MjNmMDgxOTFkZTRlNA==",
"question": "올거나이즈 직원 수는 몇명인가요?",
"answer": "현재 25명이 글로벌 오피스에서 근무하고 있습니다.",
"hashtags": [
"회사",
"현황"
],
"userFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"agentFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"lastUpdatedDate": "2021-05-04",
"createdDate": "2021-02-23",
"statusOnAt": null,
"statusOffAt": null,
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
},
{
"id": "RkFROjYwIdU4YTUzYTc0MjNmUR2wOTFkZTU1OA==",
"question": "올거나이즈에사 발간한 백서가 있나요?",
"answer": "물론 있습니다. 홈페이지의 Resources 메뉴를 확인하세요.",
"hashtags": [
"회사"
],
"userFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"agentFeedback": {
"positiveCount": 0,
"negativeCount": 0
},
"lastUpdatedDate": "2021-05-04",
"createdDate": "2021-02-23",
"statusOnAt": null,
"statusOffAt": null,
"folder": "folder 1",
"agentEditor": ["email_1@allganize.ai", "email_2@allganize.ai", "email_3@allganize.ai"],
"agentViewer": ["email_4@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_ID": [{"id": "customer_id_1", "value": "customer_id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
}
]
}
Q&A Candidates
GET
https://backend.alli.ai/webapi/faq_candidates
이 API 를 이용하면 고객의 질문 중 답변되지 않은 질문, 즉 '미답변 질문' 들의 목록을 받아올 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
해당 해시태그들 붙어 있는 미답변 질문만 확인할 수 있도록 하는 array 입니다.
확인할 미답변 질문을 필터링하기 위한 검색 쿼리입니다. Operator 를 이용해 고급 검색이 가능합니다. "TERM1 TERM2" 로 AND 검색, "TERM1 OR TERM2" 로 OR 검색, "\"TERM\"" 로 정확하게 일치하는 경우 검색이 가능합니다.
미답변 질문을 정렬할 기준입니다. 속성_[DESC or ASC] 형식으로 구성되며, 속성에는 FREQUENCY 와 CREATEDAT 이 있습니다.
확인할 미답변 질문들의 상태입니다. ALL, ACTIVE, ARCHIVED 중 하나의 값입니다.
페이지에 출력될 첫번째 항목의 위치를 결정합니다.
한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값은 100입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
count: 리스트된 미답변 질문의 전체 수입니다.
id: 미답변 질문에 대해 추출된 답변의 ID 입니다. 새로운 미답변 질문이 등록되면 Alli 는 자동으로 업로드된 문서에서 답변을 추출하여 등록을 시도합니다.
frequency: questions 아래에 있는 모든 frequency 값의 합입니다.
textAnswer: 미답변 질문에 대해 자동으로 추출된 답변의 내용입니다.
state: 미답변 질문의 상태입니다. Q&A 데이터베이스로 아직 추가되지 않았다면 ACTIVE, 추가되었다면 ARCHIVED 로 표시됩니다.
createdAt: 미답변 질문이 생성된 일시입니다.
questions: 복수의 유사한 질문들이 같은 답변을 공유할 수 있습니다. 해당 답변을 공유하는 모든 미답변 질문 정보들이 여기에 나열됩니다.
id (under questions): 미답변된 고객 질문의 ID 입니다.
question (under questions): 미답변된 고객 질문 내용입니다.
frequency (under questions): 고객이 같은 질문을 몇번 했는지 보여줍니다.
id (under history): 미답변 질문의 히스토리 정보에 할당된 ID 입니다. 히스토리 정보는 고객들이 해당 질문을 했을 때의 로그 정보입니다.
Copy {
"count": NUMBER,
"result": [
{
"id": "ID_ANSWER_1",
"frequency": 1,
"textAnswer": "ANSWER_1",
"state": "ACTIVE",
"createdAt": NUMBER,
"questions": [
{
"id": "ID_QUESTION_1",
"question": "QUESTION_1",
"frequency": 1,
"history": {
"id": "ID_HISTORY_1"
}
}
]
}, ...
],
"errors": null
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -X GET \
-d '{
"hashtags": ["wiki"],
"searchTerm": "고객",
"order": "FREQUENCY_DESC",
"state": "ALL",
"offset": 0,
"limit": 10}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/faq_candidates
Response Example
Copy {
"count": 2,
"result": [
{
"id": "RkFRQ2FuZGlkYXRlOjVlYjA3OGU5MGFmZmMyM2QxZjc4ZTMzMQ==",
"frequency": 1,
"textAnswer": "사용법은 이와 같습니다.\n— From 고객 가이드.pdf",
"state": "ACTIVE",
"createdAt": 1588623593321,
"questions": [
{
"id": "RkFRQ2FuZGlkYXRlUXVlc3Rpb246NWViMDc4ZTkwYWZmYzIzZDFmNzhlMzMw",
"question": "고객 매뉴얼이 있나요?",
"frequency": 1,
"history": {
"id": "Q29udmVyc2F0aW9uOjVlYjA3OGI2NWUyMTJlMTMzZDM4NDAzOA=="
}
}
]
},
{
"id": "RkFRQ2FuZGlkYXRlOjVlOWEzZWI2MmZlOTFkMzIwYjE2YWQyOQ==",
"frequency": 1,
"textAnswer": "15일 안에는 언제든 취소가 가능합니다.\n— From 고객정책.pdf",
"state": "ACTIVE",
"createdAt": 1587166902114,
"questions": [
{
"id": "RkFRQ2FuZGlkYXRlUXVlc3Rpb246NWU5YTNlYjYyZmU5MWQzMjBiMTZhZDI4",
"question": "환불받고 싶어요.",
"frequency": 1,
"history": {
"id": "Q29udmVyc2F0aW9uOjVlOWEzZDliNjU5YmM2NTEyMTk5MDQ3Ng=="
}
}
]
}
],
"errors": null
}
Q&A Candidates
POST
https://backend.alli.ai/webapi/add_faq_candidates
새로운 미답변 질문을 등록합니다. 미답변 질문은 지식 베이스 > 미답변 탭에 등록되며 답변 등록 후 Q&A 로 이동시킬 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
해당 API 콜을 실행하는 유저를 지정하고 싶은 경우 신규 혹은 기존 유저 ID 를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.
OWN-USER-ID
와 함께 사용합니다. 이메일 주소를 입력하여 해당 유저의 이메일 정보를 업데이트할 수 있습니다.
Request Body
해시태그 별 통계에서 사용될 해시태그를 수동으로 등록할 수 있습니다. 해당 해시태그가 적용 범위로 사용됩니다. 미답변 Q&A 자체의 해시태그로 직접 등록되지 않는 점을 유의해주세요.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
id: 등록된 미답변 질문의 ID 입니다.
Copy {
"result": {
"candidates": [
{
"id": "CANDIDATE_ID_1"
},
{
"id": "CANDIDATE_ID_2"
}
]
},
"errors": null
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl https://backend.alli.ai/webapi/add_faq_candidates \
-d '{"queries": ["what is that processor", "how much does the processor cost"]}' \
-H "Content-Type: application/json" \
-H "API-KEY: YOUR_API_KEY"
Response Example
Copy {
"result": {
"candidates": [
{
"id": "RkFRQ2FuZGlDYXRlOjYwMzBiMjRwNDM3NGI2ZmNjNDQ5ZTg0Nw=="
},
{
"id": "RkFRQ2FuZGlkYXRlOjYwMzBiMjcwNDM3NGW2ZmNjNDQ5ZThhYQ=="
}
]
},
"errors": null
}
Documents Feedbacks
GET
https://backend.alli.ai/webapi/mrc_feedbacks
이 API 를 사용하면 검색 쿼리별로 문서에서 추출된 답변에 주어지는 피드백 리스트를 불러올 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
특정 에이전트가 부여한 피드백만 조회하고 싶은 경우 에이전트의 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
특정 유저가 뷰여한 피드백만 조회하고 싶은 경우 유저의 아이디를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.
Request Body
페이지에 출력될 첫번째 항목의 위치를 결정합니다.
한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값은 100입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
query: 아래의 답변이 추출된 검색 쿼리입니다.
documentId: 답변을 추출한 문서의 ID 입니다.
answer: 해당 쿼리에 대해 문서에서 추출된 답변 내입니다.
answerHash: 해당 쿼리에 대해 문서에서 추출된 답변에 부여되는 ID 값입니다. Documents 검색이 일어날 때 쿼리와 검색 결과 쌍에 주어지는 값이며, 위의 POST Documents API 를 이용해 얻을 수 있는 값과 동일합니다.
positive: true 혹은 false 입니다. true 는 해당 답변이 긍정 피드백을 가지고 있다는 뜻이며 false 는 부정 피드백을 뜻합니다.
count: 리스트된 피드백의 총 개수입니다.
Copy {
"result": [
{
"query": "QUERY_1",
"feedbacks": [
{
"documentId": "DOCUMENT_ID_1",
"answer": "ANSWER_1",
"answerHash": "ANSWER_HASH_1",
"positive": true or false
}, ...
]
}
],
"count": NUMBER
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl -X GET \
-d '{"offset": 0, "limit": 10}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/mrc_feedbacks
Response Example
Copy {
"result": [
{
"query": "보험 해지하려구요",
"feedbacks": [
{
"documentId": "S25vd2xlZGdlQmFzZTo1ZWM1YmJiZTczNmUxNmM0NDRjZDI2ZGM=",
"answer": "30일 안에는 불이익 없이 해지가 가능합니다.",
"answerHash": "44094c4a281484daadf28e67a4745747",
"positive": true
},
{
"documentId": "S25vd2xlZGdlQmFzZTo1ZWM1YmJiZTczNmUxNmM0NDRjZDI2ZGM=",
"answer": "보험 가입 방법은 아래와 같습니다.",
"answerHash": "296ffa9691166c583b00365fb6839a06",
"positive": false
},
{
"documentId": "S25vd2xlZGdlQmFzZTo1ZWM1YmJiZTczNmUxNmM0NDRjZDI2ZGM=",
"answer": "30일 이후 해지 시 보험료 환불이 어려울 수 있습니다.",
"answerHash": "48e5273910c913dbf0fc08482f7cd22c",
"positive": true
}
]
}
],
"count": 3
}
Documents Search Feedback
POST
https://backend.alli.ai/webapi/mrc_feedback
이 API 를 사용하면 검색 쿼리에 따라 추출된 검색 결과에 대해 피드백을 주거나 제거할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
Request Body
Documents 검색 결과에 피드백 정보를 주고자 하는 검색 쿼리입니다.
해당 쿼리에 대해 문서에서 추출된 답변에 부여되는 ID 값입니다. Documents 검색이 일어날 때 쿼리와 검색 결과 쌍에 주어지는 값이며, 위의 POST Documents API 를 이용해 얻을 수 있습니다.
true 이면 해당 쿼리에 대한 검색 결과에 긍정 피드백을 부여합니다. false 이면 부정을 부여하며, null 일 때는 주어진 피드백을 취소합니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
positiveCount: Request 가 처리된 후의 총 긍정 피드백 수입니다.
negativeCount: Request 가 처리된 후의 총 정 피드백 수입니다.
Copy {
"errors": null,
"result": {
"agentFeedback": {
"positiveCount": NUMBER,
"negativeCount": NUMBER
}
}
}
Request Example
YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
DOCUMENT_ID 와 ANSWER_HASH 부분을 해당하는 ID 로 바꾸어야 합니다. 각각의 정보를 얻으려면 Documents 에서 검색하기의 Response Example 항목이나 Documents Feedbacks의 Response Example 항목을 참고하세요.
Copy curl https://backend.alli.ai/webapi/mrc_feedback \
-d '{"query": "보험 해지는 어떻게 하나요?",
"id": "DOCUMENT_ID",
"answerHash": "ANSWER_HASH",
"isPositive": true}' \
-H "Content-Type: application/json" \
-H "API-KEY: YOUR API KEY"
Response Example
Copy {
"errors": null,
"result": {
"agentFeedback": {
"positiveCount": 2,
"negativeCount": 1
}
}
}
Documents Search User Feedback
POST
https://backend.alli.ai/webapi/mrc/user_feedback
이 API 를 이용해 특정 Documents 검색 결과에 긍정 혹은 부정 유저 피드백을 부여할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
해당 쿼리에 대해 문서에서 추출된 답변에 부여되는 ID 값입니다. Documents 검색이 일어날 때 쿼리와 검색 결과 쌍에 주어지는 값이며, 위의 POST Documents API 를 이용해 얻을 수 있습니다.
해당 쿼리에 대해 문서에서 추출된 답변입니다.
값이 true 인 경우 긍정 피드백이, false 인 경우 부정 피드백이 주어집니다. null 인 경우 주어진 피드백을 취소합니다.
Documents 검색 결과에 유저 피드백 정보를 주고자 하는 검색 쿼리입니다.