Teams Incoming Webhook 종료: Workflows로 전환
Microsoft는 Teams의 Office 365 커넥터를 May 18~22, 2026에 비활성화하기로 했습니다. 대신 Workflows 웹훅 URL을 만들고 Adaptive Card를 POST하세요.

네. Teams Incoming Webhook은 웹훅 기반 Office 365 커넥터이며, Microsoft의 최종 지원 종료 업데이트는 이 커넥터들을 비활성화하는 배포 기간을 May 18부터 May 22, 2026까지로 정했습니다. 그 이후 커넥터는 "will no longer function"(더 이상 동작하지 않음) 상태가 됩니다. 대체 수단은 Workflows 웹훅입니다. "When a Teams webhook request is received" 트리거로 시작하는 흐름(flow)을 만들면 URL이 생기고, 그 URL로 JSON을 POST하면 채널이나 채팅에 메시지나 Adaptive Card를 게시할 수 있습니다.
Microsoft 관련 내용은 지원 종료 공지, Teams의 Create Incoming Webhooks 페이지, Microsoft Teams 커넥터 레퍼런스, Microsoft 지원의 수신 웹훅 문서, 카드 작업 페이지에서, Sume 관련 내용은 Run 웹훅 (영문)과 실행과 결과 (영문)에서 가져왔습니다. 모두 2026-09-28에 확인했습니다. Sume에는 Teams 앱이나 커넥터가 없습니다. Sume 웹훅은 여러분의 서버가 받고, 그다음 그 서버가 워크플로에 게시합니다. 반대 방향, 즉 흐름이 Sume를 호출하는 경우는 Power Automate HTTP 요청 API에서 다룹니다.
Teams Incoming Webhook은 언제 동작을 멈췄나요?
Microsoft는 기한을 여러 차례 옮긴 끝에 April 14, 2026 업데이트에서 최종 배포 기간을 May 18부터 May 22, 2026까지로 정했습니다. July 3, 2024에 처음 게시된 지원 종료 공지에는 각 변경 사항이 날짜가 붙은 업데이트로 실려 있습니다.
| 업데이트 | 내용 |
|---|---|
| July 3, 2024 | August 15, 2024부터 새 커넥터 생성 차단, October 1, 2024에 모든 커넥터 동작 중단 예정 |
| July 23, 2024 | 지원 종료 일정을 December 2025까지 연장 |
| October 16, 2024 | 웹훅 커넥터 URL을 January 31, 2025까지 새 URL 구조로 옮겨야 함 |
| October 28, 2025 | 마이그레이션 기한을 March 31, 2026으로 연장 |
| February 5, 2026 | 기한을 April 30, 2026으로 연장, Workflows에 Message Card 지원 추가 |
| April 14, 2026 | May 18부터 May 22, 2026까지 최종 배포, 이후 커넥터는 "will no longer function"(더 이상 동작하지 않음) |
Teams Incoming Webhook은 무엇으로 대체하나요?
Workflows 웹훅입니다. Power Automate 기반인 Workflows 앱은 웹훅 URL로 HTTP 요청을 받아 Teams 채널이나 채팅에 메시지나 Adaptive Card를 게시할 수 있습니다. Microsoft의 안내 단계에서는 채널 옆의 More options (...)를 열고, Workflows를 선택하고, Send webhook alerts to a channel 같은 템플릿을 고른 뒤 설정하고, Save를 선택한 다음 웹훅 링크를 복사합니다. Microsoft 지원 문서에 따르면 이 템플릿들과 Teams 웹훅 트리거에는 프리미엄 라이선스가 필요 없습니다.
- 트리거는 POST 요청만 받습니다.
- 누가 호출할 수 있는지는 직접 고릅니다. 누구나, 테넌트의 모든 사용자, 특정 사용자 중 하나입니다. "Anyone"을 고르면 인증 토큰 헤더를 보내지 마세요. 보내면 트리거로 가는 POST 요청이 실패합니다. 테넌트 쪽 두 옵션은 모든 요청에 토큰이 필요합니다.
- "Anyone"으로 두면 인터넷과 여러분의 채널 사이를 가로막는 것은 URL뿐이므로, URL을 서버 측 시크릿 저장소에 보관하세요.
- 본문은 Adaptive Card 묶음이거나 Message Card 하나입니다. Microsoft에 따르면 Message Card 페이로드는 렌더링되지만 HttpPost 작업 버튼은 지원하지 않습니다.
워크플로 URL로 Adaptive Card는 어떻게 보내나요?
카드를 메시지로 감싸세요. type은 항상 "message"이고, 각 attachments[] 항목에는 contentType application/vnd.microsoft.card.adaptive, contentUrl null, 그리고 content로 카드를 넣습니다. Action.OpenUrl 버튼은 사용자의 브라우저에서 url을 엽니다.
// Node 18+. TEAMS_WORKFLOW_URL is the trigger's URL; keep it server-side.
async function postToTeams(title, videoUrl) {
const card = {
type: "AdaptiveCard",
$schema: "http://adaptivecards.io/schemas/adaptive-card.json",
version: "1.2",
body: [{ type: "TextBlock", text: title }],
actions: [{ type: "Action.OpenUrl", title: "Open video", url: videoUrl }],
};
const res = await fetch(process.env.TEAMS_WORKFLOW_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
type: "message",
attachments: [{
contentType: "application/vnd.microsoft.card.adaptive",
contentUrl: null,
content: card,
}],
}),
});
if (!res.ok) throw new Error(`workflow answered ${res.status}`);
}완성된 Sume 영상은 Teams에 어떻게 게시하나요?
Sume와 워크플로 사이에 여러분의 서버를 두고, 전달이 검증된 뒤에만 게시하세요.
- Sume의
communication.webhook_url에는 워크플로 URL이 아니라 여러분의 서버를 등록하세요. Sume의 POST에는 카드가 아니라 실행 영수증이 담기며, 트리거의 액세스 옵션은 누가 호출할 수 있는지를 정할 뿐 Sume 서명이 유효한지는 판단하지 않습니다. - 원본 본문에 대한 HMAC-SHA256 서명을 검증하고, 이벤트를 기록하고, 10초 시도 시간 안에
2xx로 응답하세요.request_id는 재시도마다 반복되므로 이 값으로 중복을 제거하면 재시도된 전달이 두 번 게시되지 않습니다. 검증 방법은 Sume 영상 실행용 서명된 웹훅에서 다룹니다. - 카드 문구는
status에 따라 정하세요. 실행이 완료되면OK, 실패하면ERROR입니다. 취소된 실행은 웹훅을 보내지 않습니다. payload.primary_output_url을 링크하세요.media.sume.comURL은 내구성 있고 URL을 가진 누구에게나 공개되므로 채널에 있는 누구나 영상을 열 수 있습니다. 고객별 접근 제어가 필요하다면 프록시를 거치거나 복사본을 두세요.
Workflows 웹훅에는 어떤 제약이 있나요?
- 워크플로는 팀이나 채널이 아니라 소유자에게 속합니다. 공동 소유자가 없으면 소유자를 잃었을 때 고아 흐름(orphan flow)이 될 수 있으므로 공동 소유자를 추가하세요.
- 게시물은 기본 Workflows 봇(Flow bot)으로 표시됩니다. 웹훅으로 게시할 때는 봇 아이콘과 이름을 바꿀 수 없습니다.
- 스로틀링은 Power Automate 성능 프로필을 따르며, 커넥터 레퍼런스에는 동시 인바운드 호출이 약 1,000개로 나와 있습니다.
출처
관련 글
연동 카테고리의 다른 글
- ChatGPT에 MCP 서버를 추가하는 방법: 개발자 모드
ChatGPT 개발자 모드를 켜고, 서버 URL로 앱을 만들고, OAuth로 로그인하세요. Sume 호스팅 MCP 서버를 예로 들어 단계를 설명합니다.
- Python으로 영상에 자막을 넣는 방법
Python Requests로 영상에 자막을 넣으세요. 영상 URL을 Sume의 /v1/video-captions로 POST하고, Job을 폴링한 뒤 자막을 입힌 video_url을 읽으면 됩니다.
- Claude 커스텀 커넥터로 Sume 추가하기 (원격 MCP)
Customize > Connectors에서 Sume 호스팅 MCP 서버를 Claude에 추가하고, Sume OAuth 동의가 무엇을 부여하는지 확인한 뒤, 유료 도구를 허용할지 정하세요.
- Airflow HTTP 센서로 AI 영상 Job 완료 기다리기
Airflow의 HttpOperator로 AI 영상 Job을 제출한 뒤, Job 상태가 completed가 되면 통과하는 reschedule 모드의 HttpSensor로 기다리세요.
작성자 Sume