Q&A 와 문서 업로드하기
먼저 Alli 에 해야 합니다. 그 다음 로 이동하면 질문/답변 쌍을 등록할 수 있습니다. 워드, PDF, 파워포인트, 엑셀 등 문서 파일을 등록하려면 로 이동합니다.
문서 데이터베이스를 마이크로소프트 OneDrive 등의 데이터 소스와 연동하려면 로 이동하세요. API 를 통해 문서를 직접 업로드하려면 본 문서의 부분을 참고하세요.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 검색 결과에 유저 피드백 정보를 주고자 하는 검색 쿼리입니다.
해시태그 별 통계에서 사용될 해시태그를 수동으로 등록할 수 있습니다. 해당 해시태그가 적용 범위로 사용됩니다.
200 결과는 아래 JSON 형식으로 리턴되며, 총 긍정 피드백과 부정 피드백 개수를 보여줍니다.
Copy {
"result": {
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
}
}
}
Request Example
Copy curl -request POST 'https://backend.alli.ai/webapi/mrc/user_feedback' \
--header 'API-KEY: YOUR_API_KEY' \
-d '{
"query": "왜 머신 러닝을 사용하나?",
"answer": "However, this is rarely robust to natural language variation.\nSince the so-called \"statistical revolution\"[11][12] in the late 1980s and mid 1990s, much natural language processing research has relied heavily on machine learning.\nThe machine-learning paradigm calls instead for using statistical inference to automatically learn such rules through the analysis of large corpora of typical real-world examples (a corpus (plural, \"corpora\") is a set of documents, possibly with human or computer annotations).\nMany different classes of machine-learning algorithms have been applied to natural-language-processing tasks.\nThese algorithms take as input a large set of \"features\" that are generated from the input data.\n— From Natural language processing wiki (13).docx",
"answerHash": "9108b12d0e2202fc39846bdeb9d2313b",
"id": "S25vd2xlZGdlQmEuiTo2MDIxOTg3ZmekmDZmZTE0YTk4NjA2ZDU=",
"positive": true
}'
Response Example
Copy {
"result": {
"userFeedback": {
"positiveCount": 1,
"negativeCount": 0
}
}
}
Documents 업로드
POST
https://backend.alli.ai/webapi/upload_file
이 API를 사용하면 로컬 저장공간에서 Cognitive Search 에 사용할 문서를 업로드할 수 있습니다. PDF, TXT, MS 워드, 파워포인트 엑셀, HTM 및 HTML 파일을 업로드할 수 있습니다. 연결된 리소스와 함께 HTML 파일을 업로드하려면 관련된 링크가 포함된 ZIP 파일을 업로드하면 됩니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
Request Body
업로드하는 파일에서 검색 결과가 추출될 때 소스 부분에 들어갈 텍스트를 footer 형태로 입력할 수 있습니다. 해당 텍스트는 검색 결과 아래 '- From' 텍스트 다음에 출력됩니다.
footerTitle
에 연결될 링크를 지정할 수 있습니다.
업로드 시 파일이 속하게 될 폴더를 지정할 수 있습니다.
업로드 시 속한 폴더가 있을 경우, 해당 폴더의 권한을 그대로 승계하거나 승계하지 않습니다.(기본값: 참) 승계하지 않을 경우, 아래에서 따로 지정하는 권한을 사용합니다. 별도로 지정하지 않을 경우, 모든 에이전트 및 유저가 권한을 갖게 됩니다.
해당 파일을 편집 가능한 권한을 가진 에이전트를 등록합니다.
해당 파일을 조회 가능한 권한을 가진 에이전트를 등록합니다.
해당 파일을 조회 가능한 권한을 가진 유저를 등록합니다. customer_id, customer_group을 이용해 등록할 수 있습니다. customer_id는 own-user-id와 동일하고, customer_group의 id(categoryElementsId)는 CUSTOMER GROUP 조회하기 API를 통해 획득하실 수 있습니다.
editor/viewer 목록에 없는 에이전트도 조회가 가능하도록 설정합니다.
viewer 목록에 없는 유저도 조회가 가능하도록 설정합니다.
Request Example
/location/to/your_file는 로컬에 저장된 파일 경로로, YOUR HASH TAG 는 원하는 해시태그로 바꾸어야 합니다.
Copy curl -F 'file=@"/location/to/your_file"' \
-F 'hashtags="[\"api1\", \"api2\"]"' \
-F 'footerUrl="www.allganize.ai"' \
-F 'footerTitle="Allganize 웹사이트"' \
-F 'folder="folder 1"' \
-F 'followFolderPermission=false' \
-F 'agentViewer="[\"agent@allganize.io\"]"' \
-F 'userViewer="{
\"variables\": {
\"CUSTOMER_ID\": [\"customer_1\"],
\"CUSTOMER_GROUP\": [\"Q2F0ZWdvcnlFbGVtZW5OAjYzNzkyZDY1NWM5ZDIxMTU5NDMwZDY1OA==\"]
}
}"' \
-H 'API-KEY: YOUR_API_KEY' https://backend.alli.ai/webapi/upload_file
Response Example
Copy {
"result": {
"id": "S25vd2xlZGdlQmA23To2MGJjIsjA1YjM1Nz9iRc1YWIzYjA1ODk=",
"fileName": "판매정보.docx",
"hashtags": [
"api1",
"api2"
],
"footer": "{\"blocks\": [{\"key\": \"oio7\", \"text\": \"— From ocr_en.png\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [{\"offset\": 0, \"length\": 17, \"style\": \"ITALIC\"}], \"entityRanges\": [{\"offset\": 7, \"length\": 10, \"key\": 0}], \"data\": {}}], \"entityMap\": {\"0\": {\"type\": \"LINK\", \"mutability\": \"MUTABLE\", \"data\": {\"url\": \"https://download.alli.ai/download_document/UHJvamUiddDo1ZGMxYmI1qwe0ZTk0YWNmMmY5MjRlMzU=/S12vd2xlZGdlQmFzZTo2MGJijef1YjM1Nzc4NTc1YWIzYjA1ODk=\"}}}}",
"folder": "folder 1",
"agentEditor": ["admin_1@allganize.ai", "admin_2@allganize.ai"],
"agentViewer": ["viewer_email@allganize.ai"],
"allowOtherAgentsView": true,
"allowOtherUsersView": true,
"properties": {}
}
}
Upload Documents from S3
POST
https://backend.alli.ai/webapi/upload_from_s3
이 API 를 이용하면 S3 에 저장된 문서를 가져와 Cognitive Search 에서 사용할 수 있습니다. 불러온 문서는 대시보드의 지식 베이스 아래 문서 탭에 등록됩니다. PDF, TXT, MS 워드, 파워포인트 엑셀, HTM 및 HTML 파일을 불러올 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
Request Body
업로드하는 파일에서 검색 결과가 추출될 때 소스 부분에 들어갈 텍스트를 footer 형태로 입력할 수 있습니다. 해당 텍스트는 검색 결과 아래 '- From' 텍스트 다음에 출력됩니다.
footerTitle
에 연결될 링크를 지정할 수 있습니다.
업로드할 파일의 S3 경로입니다. 파일 이름으로 끝나야 하며 버킷 이름은 포함하지 않아야 합니다.
업로드 시 파일이 속하게 될 폴더를 지정할 수 있습니다.
업로드 시 속한 폴더가 있을 경우, 해당 폴더의 권한을 그대로 승계하거나 승계하지 않습니다.(기본값: 참) 승계하지 않을 경우, 아래에서 따로 지정하는 권한을 사용합니다. 별도로 지정하지 않을 경우, 모든 에이전트 및 유저가 권한을 갖게 됩니다.
해당 파일을 편집 가능한 권한을 가진 에이전트를 등록합니다.
해당 파일을 조회 가능한 권한을 가진 에이전트를 등록합니다.
해당 파일을 조회 가능한 권한을 가진 유저를 등록합니다. customer_id, customer_group을 이용해 등록할 수 있습니다. customer_id는 own-user-id와 동일하고, customer_group의 id(categoryElementsId)는 CUSTOMER GROUP 조회하기 API를 통해 획득하실 수 있습니다.
editor/viewer 목록에 없는 에이전트도 조회가 가능하도록 설정합니다.editor/viewer 목록에 없는 에이전트도 조회가 가능하도록 설정합니다.
viewer 목록에 없는 유저도 조회가 가능하도록 설정합니다.
Request Example
YOUR API KEY 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.
Copy curl https://backend.alli.ai/webapi/upload_from_s3 -d '{
"path": "s3://YOUR_S3_FILE_PATH",
"secretKey": "YOUR_SECRET_KEY",
"accessKey": “YOUR_ACCESS_KEY",
"bucket": "YOUR_BUCKET_NAME",
"hashtags": ["HASHTAG_1", "HASHTAG_2"],
"footerTitle": "Allganize API 문서",
"footerUrl": "docs.allganize.ai"},
"folder": "folder 1",
"followFolderPermission": false,
"agentViewer": ["viewer_email@allganize.ai"],
"userViewer": {
"variables": {
"CUSTOMER_ID": ["id_1"],
"CUSTOMER_GROUP": ["{categoryElementsId}"]
}
}}' \
-H "Content-Type: application/json" \
-H "API-KEY: YOUR_API_KEY"
Response Example
Copy {
"result": {
"id": "S25vd2xlZGdlQmA23To2MGJjIsjA1YjM1Nz9iRc1YWIzYjA1ODk=",
"fileName": "판매정보.docx",
"hashtags": [
"api1",
"api2"
],
"footer": "{\"blocks\": [{\"key\": \"oio7\", \"text\": \"— From ocr_en.png\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [{\"offset\": 0, \"length\": 17, \"style\": \"ITALIC\"}], \"entityRanges\": [{\"offset\": 7, \"length\": 10, \"key\": 0}], \"data\": {}}], \"entityMap\": {\"0\": {\"type\": \"LINK\", \"mutability\": \"MUTABLE\", \"data\": {\"url\": \"https://download.alli.ai/download_document/UHJvamUiddDo1ZGMxYmI1qwe0ZTk0YWNmMmY5MjRlMzU=/S12vd2xlZGdlQmFzZTo2MGJijef1YjM1Nzc4NTc1YWIzYjA1ODk=\"}}}}",
"folder": null,
"agentEditor": [
"agent1@allganize.io"
],
"agentViewer": [],
"userViewer": {
"variables": {
"CUSTOMER_ID": [
{
"id": "new_user_1",
"value": "new_user_1"
}
],
"CUSTOMER_GROUP": [
{
"id": "Q2F0ZWdvcnlFbGVtZW50OjYzNdf2MjU0OWU4OTM4N2IzMTkxN2Y0ZA==",
"value": "group_1"
},
{
"id": "Q2F0ZWdvcnlFbGVtZW50OjYzNziymRU1Nzg4YWFmODVjZTU1YjVkMg==",
"value": "group_2"
}
]
}
},
"allowOtherAgentsView": true,
"allowOtherUsersView": false,
"properties": {}
}
}
Document 처리 상태 확인
GET
https://backend.alli.ai/webapi/check_file_status
업로드된 문서는 변환 및 파싱 등 처리 과정을 거치게 됩니다. 이 API를 사용하면 업로드된 문서의 처리 현황을 알 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
id: 업로드중인 문서의 ID 입니다.
status: 문서의 처리 현황입니다. 가능한 값은 아래 Response Example 항목을 참고하세요.
Copy {"result":
{"id": "YOUR DOCUMENT ID",
"status": "initializing"}}
Request Example
Copy curl -X GET https://backend.alli.ai/webapi/check_file_status \
-d '{"id": "DOCUMENT_ID"}' \
-H "API-KEY: YOUR API KEY" \
-H "Content-Type: application/json"
Response Example
Copy {"result":
{"id": "S25vd2xlZGdlQmFzZTo1ZWM1YmJiZTczNmUxNmM0NDRjZDI2ZGM",
"status": "initializing"}}
Status 는 아래 중 한가지 값을 가집니다.
Copy 'initializing : preparing for the processing or waiting
'converting': converting the files
'conversion_complete'
'conversion_fail'
'parsing': parsing for retrievers
'parsing_fail'
'completed': parsing and embedding are done
Document 삭제
POST
https://backend.alli.ai/webapi/delete_file
이 API 를 사용하면 업로드된 문서를 삭제할 수 있습니다. 복수의 문서를 한꺼번에 삭제할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
삭제할 문서 ID 의 어레이 형식 목록입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
result: 삭제를 성공한 경우 true 로 나타나며, 실패한 경우에는 false 로 나타나고 errors 항목에 에러 메시지가 나타납니다.
Copy {
"result": {
"ok": true,
},
"errors": null
}
Request Example
Copy curl -d '{"ids": ["DOCUMENT_ID"]}' \
-H "API-KEY: YOUR API KEY" \
-H "Content-Type: application/json" \
https://backend.alli.ai/webapi/delete_file
Response Example
Copy {
"result": {
"ok": true,
},
"errors": null
}
Document 목록 조회
GET
https://backend.alli.ai/webapi/knowledge_bases
이 API 를 사용하면 업로드된 문서 목록을 불러올 수 있습니다.
Query Parameters
AND
혹은 OR
입니다. 복수의 해시태그로 필터링할 때의 로직을 결정합니다. 기본값은 OR
입니다.
On/off 상태에 따라 목록을 필터링할 수 있습니다.
검색어를 입력해 목록을 필터링할 수 있습니다. Operator 를 이용해 고급 검색이 가능합니다. "TERM1 TERM2" 로 AND 검색, "TERM1 OR TERM2" 로 OR 검색, "\"TERM\"" 로 정확하게 일치하는 경우만 검색이 가능합니다.
해시태그에 따라 목록을 필터링할 수 있습니다.
목록의 정렬 방식을 결정합니다. 사용 가능한 값은 아래 Request Example을 참고하세요.
페이지에 출력될 첫번째 항목의 위치를 결정합니다.
한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값은 100입니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
id: 해당 문서의 ID 입니다.
fileName: 해당 문서의 파일명입니다.
hashtags: 해당 문서에 등록된 해시태그들입니다.
Request Example
Copy curl -X GET -d '{"status": true,
"offset": 0,
"limit": 10,
"order": "FILE_NAME_ASC",
"hashtags": ["policy", "insurance"],
"hashtagsSearchOperator": "OR"}' \
-H 'API-KEY: YOUR API KEY' \
https://backend.alli.ai/webapi/knowledge_bases
order
패러미터에는 아래 값들을 사용할 수 있습니다.
파일의 on/off 상태에 따라 오름차순 정렬
파일의 on/off 상태에 따라 내림차순 정렬
Response Example
Copy {
"result": {
"items": [
{
"id": "S23wd2xlZGdlQmRzZTo1ZmFmMzYwZ3IyYjliMTI2OTAyMWVmMDQ=",
"fileName": "정책문서1.docx",
"hashtags": ["정책", "문서"],
"folder": "folder 2",
"editor": ["email_1@allganize.ai", "email_2@allganize.ai"],
"viewer": ["email_3@allganize.ai"]
},
{
"id": "S75vd2elZGdlQmFzZTo1ZmFlMjdhYmMx22E3MWM1MzA0NDI3ZWQ=",
"fileName": "보험약관2.pdf",
"hashtags": ["보험", "약관"],
"folder": "folder 2",
"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
}
]
},
"errors": null
}
Documents 이름 변경 (지식 베이스)
POST
https://backend.alli.ai/webapi/update_kb_name
이 API 를 이용하면 업로드된 문서의 이름을 변경할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
200
Copy {
"result": {
"id": "DOCUMENT_ID",
"filename": "FILENAME"
}
}
Request Example
Copy curl -L -X POST 'https://backend.alli.ai/webapi/update_kb_name' \
-H 'Content-Type: application/json' \
-H 'API-KEY: YOUR_API_KEY' \
--data-raw '{"id": "DOCUMENT_ID", "filename": "FILENAME"}'
Response Example
Copy {
"result": {
"id": "DOCUMENT_ID",
"filename": "정책문서.docx"
}
}
Documents 업데이트
POST
https://backend.alli.ai/webapi/update_document
이 API 를 이용하면 지정된 문서의 해시태그, footer, footer 링크를 업데이트할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
업로드하는 파일에서 검색 결과가 추출될 때 소스 부분에 들어갈 텍스트를 footer 형태로 입력할 수 있습니다. 해당 텍스트는 검색 결과 아래 '- From' 텍스트 다음에 출력됩니다.
footerTitle
에 연결될 링크를 지정할 수 있습니다.
업데이 시 파일이 속하게 될 폴더를 지정할 수 있습니다.
업로드 시 속한 폴더가 있을 경우, 해당 폴더의 권한을 그대로 승계하거나 승계하지 않습니다.(기본값: 참) 승계하지 않을 경우, 아래에서 따로 지정하는 권한을 사용합니다. 별도로 지정하지 않을 경우, 모든 에이전트 및 유저가 권한을 갖게 됩니다.
해당 파일을 편집 가능한 권한을 가진 에이전트를 등록합니다.
해당 파일을 조회 가능한 권한을 가진 에이전트를 등록합니다.
해당 파일을 조회 가능한 권한을 가진 유저를 등록합니다. customer_id, customer_group을 이용해 등록할 수 있습니다. customer_id는 own-user-id와 동일하고, customer_group의 id(categoryElementsId)는 CUSTOMER GROUP 조회하기 API를 통해 획득하실 수 있습니다.
editor/viewer 목록에 없는 에이전트도 조회가 가능하도록 설정합니다.
viewer 목록에 없는 유저도 조회가 가능하도록 설정합니다.
Request Example
Copy curl -L -X POST 'https://backend.alli.ai/webapi/update_document' \
-H 'Content-Type: application/json' \
-H 'API-KEY: YOUR_API_KEY' \
-d '{
"hashtags": ["hashtag1", "hashtag2"],
"id": "DOCUMENT_ID",
"footerTitle": "Allganize API 문서",
"footerUrl": "docs.allganize.ai",
"folder": "folder 2",
"followFolderPermission": false,
"agentViewer": ["viewer_email@allganize.ai"],
"userViewer": {
"variables": {
"CUSTOMER_ID": ["id_1"],
"CUSTOMER_GROUP": ["{categoryElementsId}"]
}
},
"allowOtherUsersView": true
}'
Response Example
Copy {
"result": {
"knowledgeBase": {
"id": "S25vd1iuRGdlQmFzZTo2MGJhYjQzERHjYTNiNWE0PLD3MDk1YTg=",
"hashtags": [
"hashtag1",
"hashtag2"
],
"footer": "{\"blocks\": [{\"key\": \"qn8p\", \"text\": \"— From Allganize API documentation\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [{\"offset\": 7, \"length\": 27, \"key\": 0}], \"data\": {}}], \"entityMap\": {\"0\": {\"type\": \"LINK\", \"mutability\": \"MUTABLE\", \"data\": {\"url\": \"docs.allganize.ai\"}}}}",
"folder": "folder 2",
"agentsEditor": ["admin_1@allganize.ai", "admin_2@allganize.ai"],
"agentsViewer": ["viewer_email@allganize.ai"],
"userViewer": {"variables": {"CUSTOMER_GROUP": [{"id": "Q2F0ZwdvcnlFbGVtZW50OjYzNzcyZDY1NWM5ZDIxMTU5NDMwZDY1OA==", "value": "group_name"}], "CUSTOMER_ID": [{"id": "id_1", "value": "id_1"}]}},
"allowOtherAgentsView": true,
"allowOtherUsersView": true
}
},
"errors": null
}
List Documents
GET
https://backend-ja.alli.ai/webapi/knowledge_bases
이 API 를 사용하면 업로드된 문서 일람을 확인할 수 있습니다.
Query Parameters
리스트를 필터링 하기 위한 문서의 온/오프 상태입니다.
리스트를 필터링 하기 위한 해시태그 정보입니다.
리스트 표시 타입입니다. 가능한 표시타입은 아래 Request Example을 참고해 주세요.
offset을 사용하면 페이지의 첫 번째 아이템의 랭킹 번호를 지정할 수 있습니다.
limit을 사용하면 1페이지에 반한되는 오브젝트 수를 설정할 수 있습니다. 최대값은 100건 입니다.
AND와 OR은 여러 해시태그를 매칭하기 위해 사용하는 논리 연산자입니다. 디폴트는 OR입니다.
Secondary Sorting(보조 정렬)키로 사용되는 문서의 Custom Property Key입니다. Primary sort는 파라미터에 따라 이루어 집다.
Secondary Sorting 순서 입니다. 해당 값은 ‘asc’ 또는 ‘desc’입니다.
200
아래와 같은 JSON 형식으로 리턴할 수 있습니다.
id: 리스트에 있는 문서의 ID입니다.
fileName: 리스트에 있는 문서의 파일명입니다.
hashtags: 문서에 추가된 해시태그입니다.
autoHashtags: 문서에 자동 생성된 해시태그입니다.
downloadUrl: 문서 다운로드 URL입니다.
footerUrl: 문서 푸터에 포함된 URL입니다.
folder: 문서 DB 폴더에서 답변이 검색된 경우, 이곳에 폴더명이 반한됩니다.
editor: 문서 편집 권한을 갖는 에이전트의 메일 주소 리스트입니다.
viewer: 문서 조회 권한을 갖는 에이전트의 메일 주소 리스트입니다.
count: 조건에 해당하는 문서의 총 합계입니다.
Copy {
"result": {
"items": [
{
"id": "DOCUMENT_ID",
"fileName": "FILENAME",
"hashtag": ["HASHTAG_1", "HASHTAG_2"],
"autoHashtag": ["AUTOHASHTAG_1"],
"folder": "folder 2",
"editor": ["email_1@allganize.ai", "email_2@allganize.ai"],
"viewer": ["email_3@allganize.ai"]
}
]
"count": 1
},
"errors": null
}
Request Example
Copy curl -X GET -d '{"status": true,
"offset": 0,
"limit": 10,
"order": "FILE_NAME_ASC",
"searchTerm": "term1 OR term2"
"hashtags": ["policy", "insurance"],
"hashtagsSearchOperator": "OR"}' \
-H 'API-KEY: YOUR_API_KEY' \
https://backend-ja.alli.ai/webapi/knowledge_bases
다음 중 하나의 값을 order 파라미터로 사용할 수 있습니다.
Response Example
Copy {
"result": {
"items": [
{
"id": "S23wd2xlZGdlQmRzZTo1ZmFmMzYwZ3IyYjliMTI2OTAyMWVmMDQ=",
"fileName": "policy1.docx",
"hashtags": ["policy"],
"score": 1.0,
"downloadUrl": "https://download.alli.ai/download_document/UHJvamVjdDo1YzZiYjYyNDQxNmFmYzAwMDgyMTQwNDU=/S23wd2xlZGdlQmRzZTo1ZmFmMzYwZ3IyYjliMTI2OTAyMWVmMDQ=",
"footerUrl": "https://download.alli.ai/download_document/UHJvamVjdDo1YzZiYjYyNDQxNmFmYzAwMDgyMTQwNDU=/S23wd2xlZGdlQmRzZTo1ZmFmMzYwZ3IyYjliMTI2OTAyMWVmMDQ=",
"folder": "folder 2",
"editor": ["email_1@allganize.ai", "email_2@allganize.ai"],
"viewer": ["email_3@allganize.ai"]
},
{
"id": "S75vd2elZGdlQmFzZTo1ZmFlMjdhYmMx22E3MWM1MzA0NDI3ZWQ=",
"fileName": "insurance_policy.pdf",
"hashtags": ["policy", "insurance"],
"score": 0.89,
"downloadUrl": "https://download.alli.ai/download_document/UHJvamVjdDo1YzZiYjYyNDQxNmFmYzAwMDgyMTQwNDU=/S75vd2elZGdlQmFzZTo1ZmFlMjdhYmMx22E3MWM1MzA0NDI3ZWQ=",
"footerUrl": "www.example.com",
"folder": "folder 2",
"editor": ["email_1@allganize.ai", "email_2@allganize.ai"],
"viewer": ["email_3@allganize.ai"]
}
]
"count": 450
},
"errors": null
}
Knowledge Base Documents 상태 변경
POST
https://backend.alli.ai/webapi/toggle_documents
이 API 를 사용하면 지식 베이스 다수의 문서 상태를 한꺼번에 변경할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
변경할 문서의 상태입니다. True(켜짐) 혹은 False(꺼짐) 중 하나를 입력합니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
knowledgeBases : a list of ONLY the knowledge bases whose status were toggled
id: id of knowledge base
status: new status of knowledge base (boolean). true meaning status is now on.
Copy {
"result": {
"knowledgeBases": [
{
"id": "YOUR_FIRST_DOCUMENT_ID",
"status": true or false
},
{
"id": "YOUR_SECOND_DOCUMENT_ID",
"status": true or false
}
]
},
"errors": null
}
Request Example
Copy curl -X 'POST'
-H 'API-KEY: YOUR_API_KEY'
-d '{
"ids":[YOUR_FIRST_DOCUMENT_ID,
YOUR_SECOND_DOCUMENT_ID, ETC],
"use": true
}'
https://backend.alli.ai/webapi/toggle_documents
Response Example
Copy {
"result": {
"knowledgeBases": [
{
"id": "YOUR_FIRST_DOCUMENT_ID",
"status": true
},
{
"id": "YOUR_SECOND_DOCUMENT_ID",
"status": false
}
]
},
"errors": null
}
Knowledge Base 자동 해시태그 (Classification)
POST
https://backend.alli.ai/webapi/knowledge_base_auto_hashtag
이 API 를 사용하면 해당 문서에 classification 을 이용해 제시된 자동 해시태그의 정보를 가져옵니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
자동 해시태그 정보를 불러올 문서의 ID 입니다.
200 조회 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
updated -> id : 해시태그가 제시된 문서의 ID 입니다.
autoHashtags: 문서에 제시된 자동 해시태그의 리스트를 포함하고 있는 JSON 객체 어레이입니다.
state: 에이전트의 승인 여부에 따라 결정되는 자동 해시태그의 상태 정보입니다. "SUGGESTED", "APPROVED", "DECLINED" 중 하나입니다.
bestConfidence: 0과 1 사이의 수치로, 해당 자동 해시태그의 신뢰도 값입니다.
autohashtag -> id: 해당 해시태그의 ID 입니다.
hashtag: 대시보드에 표시되는 해시태그의 텍스트입니다.
Request Example
Copy curl -X POST -d '{"ids": ["DOCUMENT_ID"]}' \
-H 'API-KEY: YOUR_API_KEY' \
https://backend.alli.ai/webapi/kb_auto_hashtag
Response Example
Copy {
"result": {
"updated": [
{
"id": "S25vd2xlZGdlQmFzZTo1ZmY3Y2U0YzZiNzk4MjM0YTAwNGRkNGE=",
"autoHashtags": [
{
"state": "SUGGESTED",
"bestConfidence": 0.9866862297058105,
"autoHashtag": {
"id": "QXV0b0hhc2h0YWc6NWZmNjk2ZGQyYTZmMjBhZjUxMTY3ZTU1",
"hashtag": "CLASSIFICATION_RESULT"
}
},
{
"state": "SUGGESTED",
"bestConfidence": 0.9445914626121521,
"autoHashtag": {
"id": "QXV0b0hhc2h0YWc6NWZmNjk2ZWYyYTZmMjBhZjUxMTY3ZWQ1",
"hashtag": "CLASSIFICATION_RESULT"
}
}
]
}
],
"errors": null
},
"errors": null
}
Knowledge Base 자동 해시태그 피드백 (Classification)
POST
https://backend.alli.ai/webapi/kb_auto_hashtag_feedback
이 API 를 이용하면 문서에 제시된 자동 해시태그를 승인하거나 거절할 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
해시태그 ID 와 상태 쌍으로 이루어진 JSON 객체 리스트입니다. 'state' 는 'accepted', 'declined', 'suggested' 중 하나입니다.
200 조회 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
result: 각 자동 해시태그의 정보 포함하는 JSON 객체 어레이입니다.
id: 해시태그의 ID 입니다.
state: 에이전트에 의해 결정된 해시태그의 상태입니다. "suggested", "approved", "declined" 중 하나의 값입니다.
Copy {
"result": [
{
"id": "KNOWLEDGE_BASE_AUTO_HASHTAG_ID",
"state": "STATE"
},
{
"id": "KNOWLEDGE_BASE_AUTO_HASHTAG_ID_2",
"state": "STATE"
}
]
}
Request Example
Copy curl -X POST -d '{
"autoHashtagFeedbacks": [
{"id": "HASHTAG_ID_1", "state": "approved"},
{"id": "HASHTAG_ID_2", "state": "declined"}
]
}' \
-H 'API-KEY: YOUR_API_KEY' \
https://backend.alli.ai/webapi/kb_auto_hashtag_feedback
Response Example
Copy {
"result": [
{
"id": "S25vd2xlZGdlQmFzZUF1dG9IYXNodGFnOjVmZjhmZmJlYzJkNmUyNjJkOTVlZTQyYg==",
"state": "approved"
},
{
"id": "S25vd2xlZGdlQmFzZUF1dG9IYXNodGFnOjVmZjhmZTdmYzJkNmUyNjJkOTVlZTI5OQ==",
"state": "declined"
}
]
}
Q&A 선택
POST
https://backend.alli.ai/webapi/faq/select_answer
이 API 를 이용하면 특정 Q&A 를 고객이 선택한 것으로 처리할 수 있습니다.
Path Parameters
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
Q&A 검색 결과의 고유 ID 입니다. Q&A 에서 검색하기 항목을 참고하세요.
고객이 선택한 것으로 처리할 Q&A 의 ID 입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다. 404 잘못된 Q&A 아이디를 입력했을 때의 에러 메시지입니다.
Copy {"result": "Success"}
Copy {"result": [], "error": "Record does not exist."}
Request Example
Copy curl -X POST -d '{
"hashId": "Hash ID from Q&A search result",
"id": "Q&A_ID"
}' \
-H 'API-KEY: YOUR_API_KEY' \
https://backend.alli.ai/webapi/faq/select_answer
Response Example
Copy {
"result": "Success"
}
Agent 관리
POST
https://backend.alli.ai/webapi/agent_management
프로젝트에서 에이전트를 생성하거나 지울 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
생성할 에이전트의 언어 설정입니다. 두글자의 ISO-639-1 코드를 사용합니다.
에이전트를 생성할 때 비밀번호를 지정합니다. 유효한 비밀번호 (알파벳 소문자, 알파벳 대문자, 숫자, 특수문자 중 3종류 이상 포함) 여야 합니다. deleteFlag 가 false 인 경우 필수 입력 항목입니다.eFlag 가 false 인 경ㅜ 필
에이전트를 삭제하려는 경우 true, 생성하려는 경우 false 로 입력합니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
id: 삭제되거나 생성된 에이전트의 ID 입니다.
status: 변경된 상태입니다. deleted 혹은 created 중 하나의 값입니다. 400 생성하려 하는 에이전트 이메일이 이미 등록되어 있는 경우의 에러입니다. 404 존재하지 않는 에이전트를 삭제하려 할 때의 에러입니다.
Copy {
"result": {
"id" : "QWdlbnQ6NWZkMmFjMzIwODQ4MzY1ZDI4NWFjMGUw",
"status": "deleted"
},
"errors": null
}
Copy {
"result": [],
"errors": "Agent with provided email already exists."
}
Copy {
"result": [],
"errors": "The record does not exist."
}
Request Example
Copy curl https://backend.alli.ai/webapi/agent_management \
-d '{"email": "1234@gmail.com",
"deleteFlag": true,
"password": "password1234",
"locale": "ko"}' \
-H "Content-Type: application/json" \
-H "API-KEY: YOUR_API_KEY"
Response Example
Copy {
"result": {
"id" : "QWdlbnQ6NWZkMmFjMzIwODQ4MzY1ZDI4NWFjMGUw",
"status": "created"
},
"errors": null
}
해시태그 전체 확인
GET
https://backend.alli.ai/webapi/hashtags
Q&A 와 Documents 에 등록된 모든 해시태그들을 조회합니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다. 등록된 해시태그 및 각 태그가 등록된 횟수를 리턴합니다.
Copy {
"result": {
"HASHTAG_1": 2,
"HASHTAG_2": 1, ...
}
}
Request Example
Copy curl -X GET \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/hashtags
Response Example
Copy {
"result": {
"정책: 2,
"고객대응: 1
}
}
Q&A 검색 기록 확인
GET
https://backend.alli.ai/webapi/faq_histories
과거의 Q&A 검색 기록을 확인합니다.
Query Parameters
한 페이지에 보여 줄 검색 기록의 수를 지정합니다.
확인할 마지막 검색 기록의 날짜를 지정합니다. YYYY-MM-DD 형식으로 입력합니다.
확인할 최초 검색 기록의 날짜를 지정합니다. YYYY-MM-DD 형식으로 입력합니다.
DESC 로 입력하면 최근 기록부터, ASC 로 입력하면 예전 기록부터 확인합니다.
해당 키워드를 사용해 범위 내의 검색 기록에서 키워드 검색한 결과만 열람합니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
특정 에이전트의 검색 기록 조회하고 싶은 경우 에이전트의 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
특정 유저의 검색 기록 조회하고 싶은 경우 유저의 아이디를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
agent: 해당 검색을 수행한 에이전트 ID 입니다.
question: 검색된 쿼리입니다.
answers: 검색 결과 정보입니다. faq 는 해당 Q&A 의 ID 정보를, effectiveConfidence 는 조정 신뢰도, confidence 는 신뢰도를 나타냅니다.
count: 열람된 검색 기록 개수입니다.
Copy {
"result": {
"histories": [
{
"agent": {
"id": "QWdlbnQ6NjA0NmMyNsksNTFjMmVlYjc4Mjg3Zjcy"
},
"question": "보험 정책 정보?",
"answers": [
{
"faq": {
"id": "RkFROjYwND87MmUxM2MzYmQ5MjVmMzgxMGNkOQ=="
},
"effectiveConfidence": 0.9999999999999927,
"confidence": 0.9999999999999927
}
]
}
],
"count": 1
},
"errors": null
}
Request Example
Copy curl -X GET \
-d { "startDate":"2021-02-19","endDate":"2021-02-23", \
"order": "DESC","searchTerm":"life", "limit": 1, "offset": 0 } \
-H 'API-KEY: YOUR_API_KEY' \
https://backend.alli.ai/webapi/faq_histories
Response Example
Copy {
"result": {
"histories": [
{
"agent": {
"id": "QWdlbnQ6NjA0NmMyNsksNTFjMmVlYjc4Mjg3Zjcy"
},
"question": "보험 정책 정보?",
"answers": [
{
"faq": {
"id": "RkFROjYwND87MmUxM2MzYmQ5MjVmMzgxMGNkOQ=="
},
"effectiveConfidence": 0.9999999999999927,
"confidence": 0.9999999999999927
}
]
}
],
"count": 1
},
"errors": null
}
Documents 검색 기록 확인
GET
https://backend.alli.ai/webapi/mrc_histories
과거의 Documents 검색 기록을 확인합니다.
Query Parameters
해당 키워드를 사용해 범위 내의 검색 기록에서 키워드 검색한 결과만 열람합니다.
DESC 로 입력하면 최근 기록부터, ASC 로 입력하면 예전 기록부터 확인합니다.
확인할 마지막 검색 기록의 날짜를 지정합니다. YYYY-MM-DD 형식으로 입력합니다.
확인할 최초 검색 기록의 날짜를 지정합니다. YYYY-MM-DD 형식으로 입력합니다.
한 페이지에 보여 줄 검색 기록의 수를 지정합니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
특정 에이전트의 검색 기록 조회하고 싶은 경우 에이전트의 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.
특정 유저의 검색 기록 조회하고 싶은 경우 유저의 아이디를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
agent: 해당 검색을 수행한 에이전트 ID 입니다.
question: 검색된 쿼리입니다.
answers: 검색 결과 정보입니다. knowledgeBase 내의 id 는 원본 문서 ID, fileName 은 문서 파일명 정보이며, answer 는 해당 답변, answerHash 는 해당 답변의 고유 해시, answerFormat 은 답변 형식, hashtags 는 문서에 태그된 해시태그들, feedbackAvailable 은 피드백 부여가 가능한지 여부, columnFilterValues 는 표 검색 시 필터링되는 열 정보를 의미합니다.
count: 열람된 검색 기록 개수입니다.
Request Example
Copy curl -X GET \
-d { "startDate":"2021-02-19","endDate":"2021-02-23", \
"order": "DESC","searchTerm":"life", "limit": 1, "offset": 0 } \
-H 'API-KEY: YOUR_API_KEY' \
https://backend.alli.ai/webapi/mrc_histories
Response Example
Copy {
"result": {
"histories": [
{
"agent": {
"id": "QWdlbnQ6NWZiNzc5MGIwZjE3Zjc5ZmNiNzVlYzFh"
},
"question": "c004 프로그램 메모리",
"answers": [
{
"knowledgeBase": {
"id": "S25vd2xlZGdlQmFzZTo2MDUyODM0ODFiYzgxNDcwZTEzNGRjNDQ=",
"fileName": "specification_en.pdf"
},
"answer": "{\"blocks\": [{\"key\": \"kn13\", \"type\": \"unstyled\", \"text\": \"Type capacity program memory program memory - C004, B04KR: 80KB\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"2vjf\", \"text\": \" \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"45cb\", \"text\": \"— From specification_en.pdf\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [{\"offset\": 0, \"length\": 27, \"style\": \"ITALIC\"}], \"entityRanges\": [{\"offset\": 7, \"length\": 20, \"key\": 0}], \"data\": {}}], \"entityMap\": {\"0\": {\"type\": \"LINK\", \"mutability\": \"MUTABLE\", \"data\": {\"url\": \"https://staging-download.alli.ai/download_document/UHJvamVjdDo1ZmI3NzkwYjBmMTdmNzlmY2I3NWVjMWM=/S25vd2xlZGdlQmFzZTo2MDUyODM0ODFiYzgxNDcwZTEzNGRjNDQ=\"}}}}",
"answerHash": "6648c76e9be27864557f84ab7822cde8",
"answerFormat": "DRAFTJS",
"hashtags": [],
"feedbackAvailable": true,
"columnFilterValues": []
},
...
{
"knowledgeBase": {
"id": "S25vd2xlZGdlQmFzZTo2MDUyODM0ODFiYzgxNDcwZTEzNGRjNDQ=",
"fileName": "specification_en.pdf"
},
"answer": "{\"blocks\": [{\"key\": \"87us\", \"type\": \"unstyled\", \"text\": \"Type capacity reload memory reload memory - C004, B04KR: 2048KB\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"p0wr\", \"text\": \" \", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [], \"entityRanges\": [], \"data\": {}}, {\"key\": \"qpau\", \"text\": \"— From specification_en.pdf\", \"type\": \"unstyled\", \"depth\": 0, \"inlineStyleRanges\": [{\"offset\": 0, \"length\": 27, \"style\": \"ITALIC\"}], \"entityRanges\": [{\"offset\": 7, \"length\": 20, \"key\": 0}], \"data\": {}}], \"entityMap\": {\"0\": {\"type\": \"LINK\", \"mutability\": \"MUTABLE\", \"data\": {\"url\": \"https://staging-download.alli.ai/download_document/UHJvamVjdDo1ZmI3NzkwYjBmMTdmNzlmY2I3NWVjMWM=/S25vd2xlZGdlQmFzZTo2MDUyODM0ODFiYzgxNDcwZTEzNGRjNDQ=\"}}}}",
"answerHash": "9537b6560701930d079f39ced8be1b3e",
"answerFormat": "DRAFTJS",
"hashtags": [],
"feedbackAvailable": true,
"columnFilterValues": []
}
]
}
],
"count": 1
},
"errors": null
}
유저 정보 조회하기
GET
https://backend.alli.ai/webapi/users
유저(고객)의 OWN-USER-ID, CUSTOMER GROUP, e-mail 을 확인합니다.
Query Parameters
사용자 조회 시 필터링할 CUSTOMER GROUP의 이름입니다. CUSTOMER GROUP 조회하기 API를 사용해서 획득(displayValue)하실 수 있습니다.
페이지에 출력될 첫번째 항목의 위치를 결정합니다. 기본값은 0입니다.
한 페이지에 몇개의 항목을 출력할 결정합니다. 기본값은 10이며 최대값은 1000입니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
Copy {
"result": [
{
"id": "1"
"email": "example_1@email.com",
"customerGroup": {
"id": "B3D0ZWdvcnlFbGVtZW50OjYzNzcyZDY1NWM5ZDIxMTU5NDMwZDY1OA==",
"value": "IT",
}
},
{
"id": "2"
"email": "example_2@email.com",
"customerGroup": {
"id": "X2F0ZWdvcnlFbGVtZW50OjYzNzcyZDY1NWM5ZDIxMTU5NDMwZDY1OC==",
"value": "QA",
}
}
],
"totalCount": 10
"count": 2
}
Request Example
Copy curl -L -X GET 'https://backend.alli.ai/webapi/users' \
-H 'API-KEY: YOUR_API_KEY'
Response Example
Copy {
"result": [
{
"id": "1"
"email": "example_1@email.com",
"customerGroup": {
"id": "B3D0ZWdvcnlFbGVtZW50OjYzNzcyZDY1NWM5ZDIxMTU5NDMwZDY1OA==",
"value": "IT",
}
},
{
"id": "2"
"email": "example_2@email.com",
"customerGroup": {
"id": "X2F0ZWdvcnlFbGVtZW50OjYzNzcyZDY1NWM5ZDIxMTU5NDMwZDY1OC==",
"value": "QA",
}
}
],
"totalCount": 10
"count": 2
}
개별 유저 정보 조회하기
GET
https://backend.alli.ai/webapi/users/{OWN-USER-ID}
개별 유저(고객)의 OWN-USER-ID, CUSTOMER GROUP, e-mail 을 확인합니다.
Path Parameters
사용자의 ID입니다. 유저 정보 조회하기 API를 사용해서 전체 유저의 ID를 획득하실 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
Copy {
"result": {
"id": "123"
"email": "abc@email.com",
"customerGroup": {
"id": "Q2F0ZWdvcnlFbGVtZW50OjYzNzcyZDY1NWM5sXIxMTU5NDMwZDY1OA==",
"value": "IT",
}
}
}
Request Example
{OWN-USER-ID}를 해당하는 사용자의 ID로 바꾸어야합니다. 유저 정보 조회하기 API를 사용해서 전체 유저의 ID를 획득하실 수 있습니다.
Copy curl -L -X GET 'https://backend.alli.ai/webapi/user/{OWN-USER-ID}' \
-H 'API-KEY: YOUR_API_KEY'
Response Example
Copy {
"result": {
"id": "123"
"email": "abc@email.com",
"customerGroup": {
"id": "Q2F0ZWdvcnlFbGVtZW50OjYzNzcyZDY1NWM5sXIxMTU5NDMwZDY1OA==",
"value": "IT",
}
}
}
유저 정보 업데이트하기
POST
https://backend.alli.ai/webapi/user/{OWN-USER-ID}/customer_variables/{variableName}
개별 유저(고객)의 OWN-USER-ID, CUSTOMER GROUP를 업데이트하실 수 있습니다..
Path Parameters
사용자의 ID입니다. 유저 정보 조회하기 API를 사용해서 전체 유저의 ID를 획득하실 수 있습니다.
업데이트하고자하는 항목입니다. "CUSTOMER_GROUP" 혹은 "CUSTOMER_ID"만 입력하실 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
변경하려고 하는 CUSTOMER_GROUP 혹은 CUSTOMER_ID의 id 입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
Copy {
"result": {
"id": "123"
"email": "sdf@sdf.ca",
"customerGroup": {
"id": "123",
"value": "123",
}
}
}
Request Example
{variableName} 및 {id}를 해당하는 값으로 바꾸어야합니다. 업데이트하고자하는 항목( "CUSTOMER_GROUP" 혹은 "CUSTOMER_ID”)을 {variableName}에 입력하시고, 변경하시려는 id 값을 {id}에 입력해주세요. 유저 정보 조회하기 API를 통해 필요한 id를 확인하실 수 있습니다.
Copy curl -L -X POST 'https://backend.alli.ai/webapi/user/{OWN-USER-ID}/customer_variable/{variableName}' \
-H 'Content-Type: application/json' \
-H 'API-KEY: YOUR_API_KEY' \
-d '{
"id": "{id}"
}'
Response Example
Copy {
"result": {
"name": "CUSTOMER_ID",
"type": "STRING"
"id": "60091782",
"value": "60091782"
}
}
CUSTOMER GROUP 조회하기
GET
https://backend.alli.ai/webapi/customer_variable/customer_group/category_elements
등록된 CUSTOMER GROUP을 확인합니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
Copy {
"result": [
{
"id": "RkFROjVkZDQ4ZWFhN2E4ZGM2M2Y4OGNhZmUzOa==",
"value": "IT",
},
{
"id": "RkFROjVkZDQ4ZWFhN2E4ZGM2M2Y4OGNhZmUzOb==",
"value": "QA",
},
]
}
Request Example
Copy curl -L -X GET 'https://backend.alli.ai/webapi/customer_variable/customer_group/category_elements' \
-H 'API-KEY: YOUR_API_KEY'
Response Example
Copy {
"result": [
{
"id": "RkFROjVkZDQ4ZWFhN2E4ZGM2M2Y4OGNhZmUzOa==",
"value": "IT",
},
{
"id": "RkFROjVkZDQ4ZWFhN2E4ZGM2M2Y4OGNhZmUzOb==",
"value": "QA",
},
]
}
CUSTOMER GROUP 생성하기
POST
https://backend.alli.ai/webapi/customer_variable/customer_group/category_element
CUSTOMER GROUP을 생성합니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
추가할 CUSTOMER GROUP의 이름입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
Copy {
"result": {
"id": "category_element_id"
"value": "sample_category_element"
}
}
Request example
Copy curl -L -X POST 'https://backend.alli.ai/webapi/customer_variable/{variableName}/category_element' \
-H 'Content-Type: application/json' \
-H 'API-KEY: YOUR_API_KEY' \
-d '{
"value": "sample_category_element"
}'
Response example
Copy {
"result": {
"id": "category_element_id"
"value": "sample_category_element"
}
}
CUSTOMER GROUP 업데이트하기
POST
https://backend.alli.ai/webapi/customer_variable/customer_group/category_element/{categoryElementId}
CUSTOMER GROUP을 업데이트합니다.
Path Parameters
업데이트하고자 하는 CUSTOMER GROUP의 ID입니다. CUSTOMER GROUP 조회하기 API를 사용해서 획득하실 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
Request Body
변경할 CUSTOMER GROUP의 이름입니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
Copy {
"result": {
"id": "category_element_id"
"value": "sample_category_element"
}
}
Request Example
{categoryElementId}를 해당하는 CUSTOMER GROUP의 ID로 바꾸어야합니다. CUSTOMER GROUP 조회하기 API를 사용해서 획득하실 수 있습니다.
Copy curl -L -X POST 'https://backend.alli.ai/webapi/customer_variable/customer_group/category_element/{categoryElementId}' \
-H 'Content-Type: application/json' \
-H 'API-KEY: YOUR_API_KEY' \
-d '{
"value": "sample_category_element"
}'
Response Example
Copy {
"result": {
"id": "category_element_id"
"value": "sample_category_element"
}
}
CUSTOMER GROUP 삭제하기
DELETE
https://backend.alli.ai/webapi/customer_variable/customer_group/category_element/{categoryElementId}
CUSTOMER GROUP을 삭제합니다.
Path Parameters
삭제하고자 하는 CUSTOMER GROUP의 ID입니다. CUSTOMER GROUP 조회하기 API를 사용해서 획득하실 수 있습니다.
할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.
200 결과는 아래와 같은 JSON 형식으로 리턴됩니다.
Request Example
{categoryElementId}를 해당하는 CUSTOMER GROUP의 ID로 바꾸어야합니다. CUSTOMER GROUP 조회하기 API를 사용해서 획득하실 수 있습니다.
Copy curl -L -X DELETE 'https://backend.alli.ai/webapi/customer_variable/customer_group/category_element/{categoryElementId}' \
-H 'API-KEY: YOUR_API_KEY'
Response Example