TSplus 원격 지원과의 웹후크 통합
개요
웹후크를 사용하면 TSplus Remote Support를 귀하의 시스템(티켓팅, CRM, SIEM, 내부 도구)에 연결할 수 있습니다. 구독에서 이벤트가 발생하면 Remote Support가 HTTP를 전송합니다.
게시물
이벤트를 설명하는 JSON 페이로드를 포함하는 요청을 귀하가 제어하는 URL로 전송합니다.
각 요청은 암호학적으로 서명된 서버가 진정으로 Remote Support에서 온 것임을 확인하고 변조되지 않았음을 검증할 수 있도록 합니다.
일반적인 사용 사례:
- 지원 세션이 종료될 때 자동으로 티켓을 생성하거나 업데이트합니다.
- 세션 채팅 기록을 귀하의 저장소에 보관하십시오.
- 내부 알림 또는 자동화 워크플로를 트리거합니다.
필수 조건
웹훅을 구성하려면 다음을 확인하세요:
- 구독 관리자 계정.
-
공개적으로 접근 가능한
HTTPS
엔드포인트 수신 가능
게시물요청. - 서버에서 HTTP 요청 헤더와 원시 요청 본문을 읽는 기능(서명을 확인하는 데 필요).
웹훅 구성
-
열기 TSplus Remote Support 관리 콘솔.
-
왼쪽 메뉴에서 확장하십시오. 통합 그리고 클릭 웹후크 .
-
클릭 웹후크 추가 .
-
양식을 작성하십시오:
- URL — 이벤트를 수신할 HTTPS 엔드포인트.
- 설명 선택 사항 — 이 엔드포인트를 식별하는 데 도움이 되는 레이블입니다.
- 이벤트 — 최소한 하나의 이벤트 유형을 선택하여 구독하세요.
-
클릭 저장 .
-
A 비밀 생성되어 표시됩니다 한 번 지금 복사하여 안전하게 저장하세요 — 이는 들어오는 요청의 서명을 확인하는 데 사용되며 다시는 표시되지 않습니다.
보안: 귀하의 보호를 위해 URL이 저장할 때 검증됩니다. 포인팅된 엔드포인트
로컬호스트사설/내부 IP 주소는 거부됩니다.
웹후크 관리
웹훅 목록에서 다음을 수행할 수 있습니다:
- 테스트 이벤트 보내기 (flask icon) — 샘플 배달을 대기열에 추가하여 엔드포인트가 요청을 수신하고 수락하는지 확인할 수 있습니다.
- 편집 (연필 아이콘) — URL, 설명, 구독한 이벤트를 변경하거나 엔드포인트를 활성화/비활성화합니다.
- 삭제 (휴지통 아이콘) — 엔드포인트를 영구적으로 제거합니다.
각 엔드포인트는 보여줍니다. 상태 :
- 활성 — 엔드포인트가 활성화되어 이벤트를 수신하고 있습니다.
- 비활성화됨 — 엔드포인트가 수동으로 비활성화되었습니다.
- 자동 비활성화 — 원격 지원이 엔드포인트를 자동으로 비활성화했습니다. 10회의 연속 실패한 배달 엔드포인트를 수정하고 편집 양식에서 다시 활성화하십시오.
페이로드 형식
모든 이벤트는 다음과 같이 제공됩니다.
게시물
JSON 본문과 다음 헤더가 포함된 요청:
| 헤더 | 설명 |
|---|---|
콘텐츠 유형
|
애플리케이션/제이슨
|
X-웹후크-서명
|
원시 본문의 HMAC-SHA256 서명, 접두사가 붙은
sha256=
|
X-Webhook-Id
|
고유 이벤트 식별자(귀하 측에서의 멱등성을 위해 사용하십시오) |
X-웹후크-타임스탬프
|
배송의 ISO 8601 타임스탬프 |
사용자 에이전트
|
RemoteSupport-Webhook/1.0
|
모든 이벤트는 공통의 봉투를 공유합니다. 오직 내용만
데이터
이벤트 유형에 따라 변경됩니다:
{ "id": "evt_abc123def456", "type": "session.ended", "created_at": "2026-07-10T15:00:00Z", "subscription_key": "XXXX-XXXX-XXXX", "data": { }}
세션이 종료되었습니다.
지원 세션이 종료될 때 전송됩니다(모든 참가자가 연결이 끊어졌습니다). 페이로드에는 세션 중에 수집된 전체 채팅 기록이 포함됩니다.
{ "id": "evt_xyz789ghi012", "type": "session.ended", "created_at": "2026-07-10T15:00:00Z", "subscription_key": "XXXX-XXXX-XXXX", "data": { "remote_support_id": "ABC123", "computer_name": "Front-desk PC", "started_at": "2026-07-10T14:30:00Z", "ended_at": "2026-07-10T15:00:00Z", "duration_seconds": 1800, "is_abnormal_closure": false, "chat_transcript": [ { "timestamp": "2026-07-10T14:31:00Z", "sender": "agent", "user_id": 42, "message": "Hello, how can I help you?" }, { "timestamp": "2026-07-10T14:31:30Z", "sender": "client", "message": "My screen is black" } ] }}
비정상 종료있다참된예기치 않은 중계 재시작 후 플랫폼에 의해 세션이 종료될 때만. 그 경우에는채팅 기록비어 있습니다.
서명 확인
귀하의 엔드포인트는 요청을 신뢰하기 전에 항상 서명을 확인해야 합니다. 귀하의 URL을 아는 사람은 그렇지 않으면 가짜 이벤트를 보낼 수 있습니다. 비밀이 없으면 유효한 서명을 생성할 수 없습니다.
요청을 확인하려면:
- 읽어보세요 원시 요청 본문 받은 정확한 바이트 — JSON을 다시 직렬화하지 마십시오.
-
계산하다
HMAC-SHA256(rawBody, yourSecret)그리고 16진수로 인코딩합니다. -
접두사로 설정하십시오
sha256=그리고 그것을 비교하십시오X-웹후크-서명상수 시간 비교를 사용하는 헤더.
Node.js
const crypto = require('crypto');
function verifyWebhook(rawBody, signatureHeader, secret) { const expected = 'sha256=' + crypto .createHmac('sha256', secret) .update(rawBody, 'utf8') .digest('hex');
const a = Buffer.from(expected); const b = Buffer.from(signatureHeader || ''); return a.length === b.length && crypto.timingSafeEqual(a, b);}
파이썬
import hmacimport hashlib
def verify_webhook(raw_body: bytes, signature_header: str, secret: str) -> bool: expected = "sha256=" + hmac.new( secret.encode("utf-8"), raw_body, hashlib.sha256 ).hexdigest() return hmac.compare_digest(expected, signature_header or "")
배달 및 재시도
- 귀하의 엔드포인트는 다음과 같이 응답해야 합니다. 2xx 상태 코드를 가능한 한 빨리 요청하십시오. 10초 후에 시간 초과됩니다. .
- 배송이 실패하면, Remote Support는 지수 백오프 일정으로 재시도합니다. 10초, 30초, 1분, 5분, 15분, 1시간, 4시간, 24시간 (24시간 동안 최대 8회 시도)
-
연결 오류, HTTP에서 재시도가 발생합니다.
429, 그리고5xx응답. 기타4xx응답은 영구적인 실패로 처리됩니다. 아니다 재시도했습니다. - 후에 10회의 연속 실패한 배달 엔드포인트는 자동으로 비활성화됨 .
같은 이벤트를 두 번 처리하지 않도록 (예: 재시도 후) 사용하십시오.
X-Webhook-Id
헤더 (또는 the)
아이디
페이로드의 필드) 아이덴포턴시 키로 사용됩니다.
사용 가능한 이벤트
| 이벤트 | 설명 |
|---|---|
세션이 종료되었습니다.
|
지원 세션이 종료되었습니다. 지속 시간과 전체 채팅 기록이 포함됩니다. |
향후 버전에서 더 많은 이벤트 유형이 추가될 예정입니다.