Answer Bot API

Cognitive Search API를 사용하면 자연어 이해 AI 기반의 Q&A 검색은 물론, 기계독해(MRC)로 사전에 등록한 문서에서 AI 가 자동으로 답변을 추출할 수 있습니다.

Q&A 와 문서 업로드하기

먼저 Alli 에 로그인해야 합니다. 그 다음 Q&A 메뉴로 이동하면 질문/답변 쌍을 등록할 수 있습니다. 워드, PDF, 파워포인트, 엑셀 등 문서 파일을 등록하려면 문서 메뉴로 이동합니다.

문서 데이터베이스를 마이크로소프트 OneDrive 등의 데이터 소스와 연동하려면 소스 설정 메뉴로 이동하세요. API 를 통해 문서를 직접 업로드하려면 본 문서의 Documents 업로드 부분을 참고하세요.

API 키 얻기

각 요청의 헤더에 프로젝트에 할당된 API-KEY 를 제공해야 합니다. API 키는 대시보드의 설정 메뉴 아래 일반 탭에서 찾을 수 있습니다.

에이전트 혹은 유저 정보 입력하기

특정 엔드포인트에는 리퀘스트 헤더에 에이전트나 유저 정보를 입력해 누가 해당 API 콜을 실행하는지 지정할 수 있습니다.

에이전트 정보는 AGENT-EMAIL 헤더를 사용해 입력합니다. 에이전트의 메일 주소는 Alli 대시보드 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다. 아래는 입력 예시입니다.

-H 'AGENT-EMAIL: agent_1@email.com'

유저 정보는 OWN-USER-ID 에 유저 ID 를 입력하여 제공할 수 있습니다. 기존 유저 ID 를 사용하거나 새로운 ID 를 사용할 수 있으며, 새로운 ID 가 입력되면 Alli 가 해당 ID 로 신규 유저를 생성합니다. 이후 같은 OWN-USER-ID 헤더가 사용되면 해당 콜은 동일 유저가 실행한 것으로 인식됩니다.

또한 유저 ID 를 사용할 때 유저의 이메일 정보를 업데이트할 수 있습니다. USER-EMAIL 헤더에 업데이트를 원하는 이메일을 입력하면 됩니다. 아래는 입력 예시입니다.

-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 메소드를 사용한 경우 아래와 같은 형식의 에러 메시지가 리턴됩니다.

{“error”: “Method Not Allowed POST: /webapi/faq_feedbacks”}

Q&A에서 검색하기

POST https://backend.alli.ai/webapi/faq

Q&A API 를 사용하면 Q&A 데이터베이스에 질문과 가장 관련이 깊은 Q&A 쌍을 찾아 제시합니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 설정 메뉴 > 일반 탭에서 찾을 수 있습니다.

AGENT-EMAIL

string

해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

OWN-USER-ID

string

해당 API 콜을 실행하는 유저를 지정하고 싶은 경우 신규 혹은 기존 유저 ID 를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.

USER-EMAIL

string

OWN-USER-ID 와 함께 사용합니다. 이메일 주소를 입력하여 해당 유저의 이메일 정보를 업데이트할 수 있습니다.

Request Body

Name
Type
Description

autoRegisterCandidates

boolean

기본값은 true 입니다. 이 값을 false 로 설정하면 정답을 찾지 못한 경우에 자동으로 Candidates에 등록하지 않습니다.

hashtagsOperator

string

AND 혹은 OR 값입니다. 지정된 해시태그를 모두 포함하는 Q&A 를 찾으려면 AND를, 하나라도 포함하는 Q&A 를 찾으려면 OR 를 사용합니다.

hashtags

array

해당 해시태그를 포함하는 Q&A 만 검색 대상에 포함합니다.

maxResults

integer

리턴할 결과의 최대 개수입니다.

query*

string

문자열 형식의 검색 쿼리입니다.

format

string

html 혹은 text 입니다. 답변에 Styled html 이 포함되어 있는 경우 (폰트 크기 혹은 색상 등) html 을 사용하면 됩니다. 단순 텍스트로만 답변을 얻고 싶으면 text 를 사용합니다. 기본값은 html 입니다.

{"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 키 얻기 항목을 참고하세요.

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

{"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 를 사용하면 복잡한 표 등이 포함된 비정형 문서에서 질문에 답변을 추출할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

AGENT-EMAIL

string

해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

OWN-USER-ID

string

해당 API 콜을 실행하는 유저를 지정하고 싶은 경우 신규 혹은 기존 유저 ID 를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.

USER-EMAIL

string

OWN-USER-ID 와 함께 사용합니다. 이메일 주소를 입력하여 해당 유저의 이메일 정보를 업데이트할 수 있습니다.

Request Body

Name
Type
Description

returnPreview

boolean

true 인 경우 각 검색 결과 html 프리뷰의 html body 및 css 정보가 리턴됩니다. 기본값은 false 입니다.

autoRegisterCandidates

boolean

default 값은 true 입니다. 이 값을 false 로 설정하면 정답을 찾지 못한 경우에 자동으로 Candidates 에 등록하지 않습니다.

hashtagsOperator

string

AND 혹은 OR 값입니다. 지정된 해시태그를 모두 포함하는 Q&A 를 찾으려면 AND를, 하나라도 포함하는 Q&A 를 찾으려면 OR 를 사용합니다.

maxResults

integer

확인할 검색 결과의 최대 개수입니다.

query*

string

문자열 형식의 검색 쿼리입니다.

hashtags

string

대시보드에 등록한 문서에 해시태그를 추가할 수 있으며, hashtags 를 사용해 해당 태그가 붙은 문서로 검색 대상을 한정할 수 있습니다.

format

string

html 혹은 text 입니다. 답변에 styled html 이 포함되어 있는 경우 (폰트 크기 혹은 색상 등) html 을 사용하면 됩니다. 단순 텍스트로만 답변을 얻고 싶으면 text 를 사용합니다. 기본값은 html 입니다.

returnPdfPreview

boolean

true 인 경우 각 검색 결과 pdf 프리뷰의 링크를 pdfPreview 패러미터로 리턴합니다.

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 화이트리스트를 이용해 제한이 가능합니다.

{
    "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 키 얻기 항목을 참고하세요.

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

{
    "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 항목 하나의 상세 정보를 확인할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

Request Body

Name
Type
Description

id*

string

확인하고자 하는 Q&A 의 ID입니다.

format

string

Q&A 의 답변 부분 형식입니다. html 혹은 text 을 사용할 수 있습니다. 기본값은 html 입니다.

{
    "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 키 얻기 항목을 참고하세요.

curl -X GET \
-d '{"id": "RkFROjY0YWZmQWQ5YmQ0NmM5Y4VkNw==", "format": "text"}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/single_faq

Response Example

{
    "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 항목 하나의 상세 정보를 확인할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

Request Body

Name
Type
Description

id*

string

확인하고자 하는 문서의 ID The id of the document.

{"result": {
      "id": "DOCUMENT_ID_1",
      "documentName": "DOCUMENT_NAME_1.docx",
      "createdDate": "2020-11-12",
      "agentFeedback": {
                "positiveCount": 1,
                "negativeCount": 0
            },
      "hashtags" : ["HASHTAG_1", "HASHTAG_2"]
    }
}

Request Example

YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.

curl -X GET \
-d '{"id": "S25v42xlZGdlQmFzZTo1ZjEzODFkZmNhYWQjYWUyMjkZYjFhY2U="}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/single_document

Response Example

{"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 쌍에 주어지는 피드백 리스트를 받아올 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

AGENT-EMAIL

string

특정 에이전트가 부여한 피드백만 조회하고 싶은 경우 에이전트의 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

OWN-USER-ID

string

특정 유저가 뷰여한 피드백만 조회하고 싶은 경우 유저의 아이디를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.

Request Body

Name
Type
Description

offset

integer

페이지에 출력될 첫번째 항목의 위치를 결정합니다.

limit

integer

한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값은 100입니다.

{
  "result": [
    {
      "query": "QUERY_1",
      "feedbacks": [
        {
          "faqId": "FAQ_ID_1_1", 
          "positive": true or false
        }, ...
      ]
    }, ...
  ],
  "count": COUNT_1
}

Request Example

YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.

curl -X GET \
-d '{"offset": 0, "limit": 10}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/faq_feedbacks

Response Example

{
  "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 에 피드백을 주거나 주어진 피드백을 삭제할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

AGENT-EMAIL

string

해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

Request Body

Name
Type
Description

query*

string

해당 Q&A 에 피드백 정보를 주거나 취소하고자 하는 검색 쿼리입니다.

id*

string

피드백 정보를 주거나 취소할 Q&A 의 ID 입니다. 검색이 일어날 때 검색 쿼리와 결과 Q&A 쌍에 대해 주어지며, 위의 POST Q&A API 를 이용해 추출할 수 있습니다.

isPositive*

boolean

true 이면 긍정 피드백을 주며, false 이면 부정 피드백을 줍니다. null 이면 주어진 피드백을 취소합니다.

{
  "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 항목을 참고하세요.

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

{
  "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 에 유저 피드백을 부여할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

OWN-USER-ID

string

해당 API 콜을 실행하는 유저를 지정하고 싶은 경우 신규 혹은 기존 유저 ID 를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.

USER-EMAIL

string

OWN-USER-ID 와 함께 사용합니다. 이메일 주소를 입력하여 해당 유저의 이메일 정보를 업데이트할 수 있습니다.

Request Body

Name
Type
Description

prev

boolean

해당 쿼리에 부여한 과거의 피드백을 수정하려면 true 로 설정합니다.

positive*

boolean

true 인 경우 긍정 피드백, false 인 경우 부정 피드백을 부여합니다.

query*

string

결과에 피드백을 부여할 검색 쿼리입니다.

id*

string

피드백 정보를 Q&A 의 ID 입니다. 검색이 일어날 때 검색 쿼리와 결과 Q&A 쌍에 대해 주어지며, 위의 POST Q&A API 를 이용해 추출할 수 있습니다.

analyticsHashtags

array

해시태그 별 통계에서 사용될 해시태그를 수동으로 등록할 수 있습니다. 해당 해시태그가 적용 범위로 사용됩니다.

{
    "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 항목을 참고하세요.

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

{
    "result": {
        "userFeedback": {
            "positiveCount": 1,
            "negativeCount": 0
        }
    }
}

Q&A 업로드

POST https://backend.alli.ai/webapi/upload_faq_file

이 API 를 이용하면 tsv, csv, xlsx, zip 형식으로 다수의 Q&A 를 한꺼번에 업로드할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

AGENT-EMAIL

string

해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

Request Body

Name
Type
Description

file*

string

Q&A 파일이 저장된 로컬 위치입니다. xlsx, tsv, csv 및 zip 파일 형식을 지원합니다.

{
    "result": "success",
    "notUploaded": [
        {
            "question": "QUESTION_1",
            "state": "dup"
        },
        {
            "question": "QUESTION_2",
            "state": "up"
        }
    ]
}

Request Example

YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.

curl -F 'file=@/location/to/your_file' \
-H 'API-KEY: YOUR_API_KEY'
https://backend.alli.ai/webapi/upload_faq_file

Response Example

{
    "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 를 업데이트할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

AGENT-EMAIL

string

해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

Request Body

Name
Type
Description

status

string

ON 혹은 OFF 값을 가집니다. ON 인 경우 해당 Q&A 가 Q&A 검색에 사용됩니다.

question*

string

Q&A 의 질문 부분입니다.

similarQuestions

array

동일한 답변을 가지는 유사한 질문들입니다. 복수의 질문을 추가할 수 있습니다.

answer*

string

Q&A 의 답변 부분입니다. 질문이 동일한 Q&A 가 존재하는 경우 해당 답변으로 기존 Q&A 가 업데이트됩니다.

hashtags

array

Q&A 에 추가될 해시태그들입니다. 복수의 해시태그를 추가할 수 있습니다.

memo

string

해당 Q&A 와 관련해 다른 에이전트와 공유할 메모를 추가할 수 있습니다.

followFolderPermission

boolean

업로드 시 속한 폴더가 있을 경우, 해당 폴더의 권한을 그대로 승계하거나 승계하지 않습니다.(기본값: 참) 승계하지 않을 경우, 아래에서 따로 지정하는 권한을 사용합니다. 별도로 지정하지 않을 경우, 모든 에이전트 및 유저가 권한을 갖게 됩니다.

agentEditor

array

해당 파일을 편집 가능한 권한을 가진 에이전트를 등록합니다.

agentViewer

array

해당 파일을 조회 가능한 권한을 가진 에이전트를 등록합니다.

userViewer

object

해당 파일을 조회 가능한 권한을 가진 유저를 등록합니다. customer_id, customer_group을 이용해 등록할 수 있습니다. customer_id는 own-user-id와 동일하고, customer_group의 id(categoryElementsId)는 CUSTOMER GROUP 조회하기 API를 통해 획득하실 수 있습니다.

allowOtherAgentsView

boolean

editor/viewer 목록에 없는 에이전트도 조회가 가능하도록 설정합니다.

allowOtherUsersView

boolean

viewer 목록에 없는 유저도 조회가 가능하도록 설정합니다.

{
    "result": {
        "status": "created",
        "id": "Q&A_ID"
    },
    "errors": null
}

Request Example

YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.

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

{
    "result": {
        "status": "created",
        "id": "RkFROkYwYRQxYzIzMDcxYWM5M3JlOWR5Y2EeOQ=="
    },
    "errors": null
}

Q&A 삭제

POST https://backend.alli.ai/webapi/delete_faq

이 API 를 사용해 Q&A 를 삭제할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

Request Body

Name
Type
Description

id*

string

삭제할 Q&A 의 ID 입니다.

{
    "result": {
        "status": "deleted"
    },
    "errors": null
}

Request Example

YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.

curl 'https://backend.alli.ai/webapi/delete_faq' \
-H 'API-KEY: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d {
    "id": "RkFROkYwYRQxYzIzMDcxYWM5M3JlOWR5Y2EeOQ=="
    }

Response Example

{
    "result": {
        "status": "deleted"
    },
    "errors": null
}

Q&A 목록 조회

GET https://backend.alli.ai/webapi/faqs

이 API 를 이용해 지식 베이스에 등록된 Q&A 의 목록을 조회할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

Request Body

Name
Type
Description

searchTerm

string

Q&A 목록을 필터링할 키워드 검색 쿼리입니다. Operator 를 이용해 고급 검색이 가능합니다. "TERM1 TERM2" 로 AND 검색, "TERM1 OR TERM2" 로 OR 검색, "\"TERM\"" 로 정확하게 일치하는 경우 검색이 가능합니다.

isUsed

boolean

true 인 경우 켜져있는 Q&A 만 조회합니다. false 인 경우 꺼져있는 Q&A 만 조회합니다.

hashtags

array

해시태그를 이용해 목록을 필터링합니다. 복수의 태그를 사용할 수 있습니다.

hashtagsOperator

string

and 혹은 or 를 사용할 수 있습니다. and 인 경우 복수의 해시태그를 모두 가지는 Q&A 만 조회합니다. or 인 경우 하나라도 가지는 Q&A 를 모두 조회합니다.

createdByAgent

boolean

true 인 경우 에이전트가 직접 등록한 Q&A 만 조회합니다. false 인 경우 그렇지 않은 Q&A 들만 조회합니다. createdByAgent, answeredByMrc, autoGenerated, editedByAgent 필터들은 상호 배타적으로 적용되며, 둘 이상이 사용될때는 OR 로직이 적용됩니다.

answeredByMrc

boolean

true 인 경우 문서에서 자동으로 답변이 추출된 Q&A 만 조회합니다. false 인 경우 그렇지 않은 Q&A 들만 조회합니다.

autoGenerated

boolean

true 인 경우 자동 생성된 Q&A 만 조회합니다. false 인 경우 그렇지 않은 Q&A 들만 조회합니다.

editedByAgent

boolean

true 인 경우 에이전트가 편집한 기록이 있는 Q&A 만 조회합니다. false 인 경우 그렇지 않은 Q&A 들만 조회합니다.

format

string

html 혹은 text 입니다. 답변에 styled html 이 포함되어 있는 경우 (폰트 크기 혹은 색상 등) html 을 사용하면 됩니다. 단순 텍스트로만 답변을 얻고 싶으면 text 를 사용합니다. 기본값은 html 입니다.

offset

integer

페이지에 출력될 첫번째 항목의 위치를 결정합니다.

limit

integer

한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값 및 기본은 1,000입니다.

{
    "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 키 얻기 항목을 참고하세요.

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

{
    "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 를 이용하면 고객의 질문 중 답변되지 않은 질문, 즉 '미답변 질문' 들의 목록을 받아올 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

Request Body

Name
Type
Description

hashtags

array

해당 해시태그들 붙어 있는 미답변 질문만 확인할 수 있도록 하는 array 입니다.

searchTerm

string

확인할 미답변 질문을 필터링하기 위한 검색 쿼리입니다. Operator 를 이용해 고급 검색이 가능합니다. "TERM1 TERM2" 로 AND 검색, "TERM1 OR TERM2" 로 OR 검색, "\"TERM\"" 로 정확하게 일치하는 경우 검색이 가능합니다.

order

string

미답변 질문을 정렬할 기준입니다. 속성_[DESC or ASC] 형식으로 구성되며, 속성에는 FREQUENCY 와 CREATEDAT 이 있습니다.

state

string

확인할 미답변 질문들의 상태입니다. ALL, ACTIVE, ARCHIVED 중 하나의 값입니다.

offset

integer

페이지에 출력될 첫번째 항목의 위치를 결정합니다.

limit

integer

한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값은 100입니다.

{
  "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 키 얻기 항목을 참고하세요.

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

{
  "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 로 이동시킬 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

AGENT-EMAIL

string

해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

OWN-USER-ID

string

해당 API 콜을 실행하는 유저를 지정하고 싶은 경우 신규 혹은 기존 유저 ID 를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.

USER-EMAIL

string

OWN-USER-ID 와 함께 사용합니다. 이메일 주소를 입력하여 해당 유저의 이메일 정보를 업데이트할 수 있습니다.

Request Body

Name
Type
Description

queries*

string

등록할 미답변 질문 쿼리입니다.

analyticsHashtags

array

해시태그 별 통계에서 사용될 해시태그를 수동으로 등록할 수 있습니다. 해당 해시태그가 적용 범위로 사용됩니다. 미답변 Q&A 자체의 해시태그로 직접 등록되지 않는 점을 유의해주세요.

{
    "result": {
        "candidates": [
            {
                "id": "CANDIDATE_ID_1"
            },
            {
                "id": "CANDIDATE_ID_2"
            }
        ]
    },
    "errors": null
}

Request Example

YOUR API KEY 를 프로젝트의 API 키로 바꾸어야 합니다. API 키 얻기 항목을 참고하세요.

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

{
    "result": {
        "candidates": [
            {
                "id": "RkFRQ2FuZGlDYXRlOjYwMzBiMjRwNDM3NGI2ZmNjNDQ5ZTg0Nw=="
            },
            {
                "id": "RkFRQ2FuZGlkYXRlOjYwMzBiMjcwNDM3NGW2ZmNjNDQ5ZThhYQ=="
            }
        ]
    },
    "errors": null
}

Documents Feedbacks

GET https://backend.alli.ai/webapi/mrc_feedbacks

이 API 를 사용하면 검색 쿼리별로 문서에서 추출된 답변에 주어지는 피드백 리스트를 불러올 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

AGENT-EMAIL

string

특정 에이전트가 부여한 피드백만 조회하고 싶은 경우 에이전트의 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

OWN-USER-ID

string

특정 유저가 뷰여한 피드백만 조회하고 싶은 경우 유저의 아이디를 입력합니다. 유저 ID 는 대시보드의 고객 메뉴에서 확인할 수 있습니다.

Request Body

Name
Type
Description

offset

integer

페이지에 출력될 첫번째 항목의 위치를 결정합니다.

limit

integer

한 페이지에 몇개의 항목을 출력할 결정합니다. 최대값은 100입니다.

{
  "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 키 얻기 항목을 참고하세요.

curl -X GET \
-d '{"offset": 0, "limit": 10}' \
-H "API-KEY: YOUR API KEY" \
https://backend.alli.ai/webapi/mrc_feedbacks

Response Example

{
  "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 를 사용하면 검색 쿼리에 따라 추출된 검색 결과에 대해 피드백을 주거나 제거할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

AGENT-EMAIL

string

해당 API 콜을 실행하는 에이전트를 지정하고 싶은 경우 에이전트 이메일을 입력합니다. 에이전트 이메일은 대시보드의 프로젝트 설정 > 담당자 메뉴에서 확인할 수 있습니다.

Request Body

Name
Type
Description

query*

string

Documents 검색 결과에 피드백 정보를 주고자 하는 검색 쿼리입니다.

id*

string

답변이 추출된 문서의 ID 입니다.

answerHash*

string

해당 쿼리에 대해 문서에서 추출된 답변에 부여되는 ID 값입니다. Documents 검색이 일어날 때 쿼리와 검색 결과 쌍에 주어지는 값이며, 위의 POST Documents API 를 이용해 얻을 수 있습니다.

isPositive*

boolean

true 이면 해당 쿼리에 대한 검색 결과에 긍정 피드백을 부여합니다. false 이면 부정을 부여하며, null 일 때는 주어진 피드백을 취소합니다.

{
  "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 항목을 참고하세요.

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

{
  "errors": null,
  "result": {
    "agentFeedback": {
      "positiveCount": 2,
      "negativeCount": 1
    }
  }
}

Documents Search User Feedback

POST https://backend.alli.ai/webapi/mrc/user_feedback

이 API 를 이용해 특정 Documents 검색 결과에 긍정 혹은 부정 유저 피드백을 부여할 수 있습니다.

Headers

Name
Type
Description

API-KEY*

string

할당된 API 키입니다. 대시보드의 일반 > 설정 메뉴에서 찾을 수 있습니다.

Request Body

Name
Type
Description

answerHash*

string

해당 쿼리에 대해 문서에서 추출된 답변에 부여되는 ID 값입니다. Documents 검색이 일어날 때 쿼리와 검색 결과 쌍에 주어지는 값이며, 위의 POST Documents API 를 이용해 얻을 수 있습니다.

answer*

string

해당 쿼리에 대해 문서에서 추출된 답변입니다.

id*

string

답변이 추출된 문서의 ID 입니다.

positive*

boolean

값이 true 인 경우 긍정 피드백이, false 인 경우 부정 피드백이 주어집니다. null 인 경우 주어진 피드백을 취소합니다.

query*

string

Documents 검색 결과에 유저 피드백 정보를 주고자 하는 검색 쿼리입니다.

analyticsHashtags

array