1.1개요
본 문서는 http(https) 프로토콜을 통해 데이터를 json 형식으로 가공하여 GET, POST, PUT method를 사용하여 전송하고, json형식의 결과 데이터를 parsing하여 처리할 수 있음을 전제로 작성되었다.
1.2용어 정의
1.2.1어댑터
카카오 청약 홈페이지에서 데이터를 전달 받고, 결과를 전달해 주는 서비스 입니다.
1.2.2트랜젝션 코드
- 트랜젝션시나리오 코드 입니다.
t_create_csapp : 상담앱 상용 설정 트랜젝션
t_create_notitalk: 알림톡 설정 트렌젝션
t_create_ai: AI 교육, AI 면접 트랜잭션
t_create_callbot: 콜봇 생성 트랜젝션
t_create_notitalk_callbot: 알림톡 + 콜봇 설정 트랜젝션
t_start_csapp: 청약 시작 날짜 변경
1.3연동 스펙
연동방식은 Restfull API 방식 및 DB Polling 두가지 방식을 지원 합니다.
Restfull API 방식은 Adaptor -> 각 Server 로 처리를 요청하는 방식입니다.
DB Polling 방식은 어뎁터에서는 JOB 테이블에 각 Server 에서 해야할 일 정보를 업데이트만 하는 방식입니다.
1.3.1Host
청약서버
[개발서버] http://10.10.30.47:8450/
1.3.2서비스별 전송 규격
서버정보는 청약 DB 의 server_list 를 사용합니다.
트랜젝션 요청 시나리오는 청약 DB 의 job_transaction_list 로 만듭니다.
트랜젝션 작업 히스토리는 청약 DB 의job_transaction_history 로 확인 가능합니다.
트랜젠션 상태정보는 job_status 를 참조 하면 됩니다.
1.3.3서비스별 Restfull 연동
1.3.3.1트랜젝션 요청 (adaptor -> server)
성공일 경우 200 OK 를 전달하면 됩니다.
- [Request]
path : /subscription/request/{server_type}
method : POST
header
Content-type: application/json
parameter : {transaction_code:"t_create_notitalk", activate_id:"UUUU-IIII-0007", ...}
- [server_type]
server_type | 서버 | 비고 |
---|---|---|
pbx | U PBX | U PBX |
cube | CUBE | CUBE |
ivr | IVR | IVR |
alimtalk | BIZTALK | 상담톡 서버 |
nexs | NEXS | 콜봇 GateWay 서버 |
- [Parameter]
키 | 타입 | 필수 | 설명 | 예제 |
---|---|---|---|---|
transaction_code | text(100) | Y | 트랜잭션 코드 | transaction_code:"t_create_notitalk" |
activate_id | text(20) | Y | 트랜잭션 ID | "activate_id":"UUUU-IIII-0007" |
tenant_alias | text | N | 테넌트 명 | transaction_code:"t_terminated_csapp" 일경우 필수 |
compensate | bool | N | 철회여부(rollback) | "compensate":true |
pause | bool | N | 청약 해지시 테넌트 일시정지를 위한 설정 | transaction_code:"t_terminated_csapp" 일경우 자원 삭제가 아닌 테넌트 일시정지를 위한 설정값. |
response_url | text | N | 전달될 메시지 | 요청에 대한 응답 URL 값 |
- [Example]
curl -H "Content-type: application/json" \ -X POST -d \ '{"transaction_code":"t_create_csapp", "activate_id":"UUUU-IIII-0007" , "response_url": "http://10.10.30.47:8450/subscription/response/pbx"}' \ http://10.10.30.47:8080/subscription/request/pbx
1.3.3.2트랜젝션 응답 (server -> adaptor)
- [Request]
path : /subscription/response/{server_type}
method : POST
header
Content-type: application/json
parameter : {transaction_code:"t_create_notitalk", activate_id:"UUUU-IIII-0007", ...}
- [Parameter]
키 | 타입 | 필수 | 설명 | 예제 |
---|---|---|---|---|
transaction_code | text(100) | Y | 트랜젹션 코드 | transaction_code:"t_create_notitalk" |
activate_id | text(20) | Y | 트랜젹션 ID | "activate_id":"UUUU-IIII-0007" |
compensate | bool | N | 철회여부(rollback) 기본값은 false | "compensate":true |
report | text | N | 전달될 메시지 | 결과 report 데이터 |
code | text | Y | 성공/실패 | 성공 :200, 실패 : 200 외 |
message | text | N | 실패일경우 실패 사유 |
- [Example] 성공
curl -H "Content-type: application/json" \ -X POST -d \ '{ code : "200", transaction_code:"t_create_notitalk", activate_id:"UUUU-IIII-0007" , report:{ dn:"1" }}' \ http://10.10.30.47:8450/subscription/reponse/pbx
- [Example] 실패
curl -H "Content-type: application/json" \ -X POST -d \ '{ code : "400", transaction_code:"t_create_notitalk", activate_id:"UUUU-IIII-0007" , message :"자원생성 실패 "' \ http://10.10.30.47:8450/subscription/reponse/pbx
1.3.4DB Polling 연동(각서버에서 DB 참조 처리)
처리순서
1.3.4.11. job_status Table 의 transaction_code , job_process, job_status 를 확인.
job_status : W ( polling 은 인것은 W 만 찾으면 됩니다)
transaction_code : 각각 처리해야하는 트랜젝션 코드로 검색 ( 청약신청의 경우는 t_crate_csapp 만 검색)
job_process : Job_transaction_list 에서 현재 할당된 작업이 맞는지 확인 ( Job_transaction_list.order == job_process )
서버가 여러개일 경우는 job_transaction_server_list , server_list 의 server_id 로 Server IP 를 확인 가능
1.3.4.2작업이 완료 될 경우 Job_status Table 의 상태를 업데이트
각각 필요한 테이블에 데이터를 업데이트
job_status : C or F ( 완료 또는 실패 ) 업데이트
중요 TABLE 개요
- [Job_status Table 정보]
Field | 필수 | 설명 | 값 |
---|---|---|---|
t_log_id | Y | 요청아이디 | adaptor 요청 id |
transaction_code | Y | 트랜젹션 코드 | t_create_csapp |
activate_id | Y | 트랜젹션 ID | UUUU-IIII-0007 |
job_process | Y | 처리중인 트랜잭션 ID | [job_transaction_list 테이블]에서 서버정보를 확인 |
job_status | Y | 상태값 | 상태(W:Waiting,P:Progress,C:Complete,F:Failed) |
- [job_status Data 샘플]
- [job_transaction_list Table 정보]
Field | 필수 | 설명 | 값 |
---|---|---|---|
order | Y | 처리순서 | 0: default(시작) |
transaction_code | Y | 트랜젹션 코드 | t_create_csapp |
server_type | Y | 서버 타입 | 서버 타입(CUBE,PBX,IVR,NEXS) 서버정보는 [server_list Table 참조] |
api_polling | Y | 처리방식 구분 | Restfull:0, DB polling:1 |
api_path | N | Restfull 일경우 path | /subscription/request/pbx |
api_method | N | Restfull 일경우 method | GET, POST,PUT,DELETE, |
- [job_transaction_list Data 샘플]
1.4코드 정의
code | 설명 |
---|---|
200 | 성공 |