Microsoft Teams SDK, 기존 AI 에이전트용 HTTP 서버 어댑터 추가

Microsoft Teams SDK는 이제 개발자가 핵심 코드를 수정하지 않고도 기존 AI 에이전트를 Microsoft Teams에 연결할 수 있도록 HTTP 서버 어댑터를 제공합니다. 이 접근 방식은 Slack이나 LangChain과 같은 다른 플랫폼용으로 구축된 에이전트가 최소한의 변경으로 Teams에서 실행될 수 있게 합니다.
패턴
핵심 패턴은 Teams TypeScript SDK를 사용하는 세 단계로 구성됩니다:
import { App as TeamsApp, ExpressAdapter } from '@microsoft/teams.apps';
const adapter = new ExpressAdapter(expressApp); // 1. 서버 래핑
const teamsApp = new TeamsApp({ httpServerAdapter: adapter }); // 2. 앱 생성
teamsApp.on('message', async ({ send, activity }) => {
// 3. 메시지 처리
await send(/* 에이전트 응답 */);
});
await teamsApp.initialize(); // 서버에 POST /api/messages 등록
SDK는 기존 Express 앱에 POST /api/messages 경로를 주입합니다. 이는 Teams가 봇에 메시지를 전달하는 데 사용하는 엔드포인트입니다. 서버는 다른 부분은 변경되지 않으며, SDK는 해당 엔드포인트 하나만 추가합니다.
시나리오 1: Slack 봇 통합
Bolt로 구축된 Slack 봇이 있는 경우 동일한 Express 서버에서 Slack과 Teams 봇을 모두 실행할 수 있습니다. Teams SDK는 /api/messages에 마운트되고 Slack은 /slack/events를 사용하므로, 두 핸들러가 호출하는 일반 함수에 공유 에이전트 로직(LLM 호출, 데이터베이스 조회, 비즈니스 규칙)이 위치할 수 있습니다.
시나리오 2: LangChain 통합
기존 LangChain 체인의 경우 체인을 가져와 Teams에 연결하는 브리지 파일을 생성할 수 있습니다. Teams 메시지 핸들러는 LangChain 체인을 호출하고 Teams 사용자에게 응답을 반환할 수 있습니다.
SDK는 들어오는 요청이 Teams에서 온 것인지 확인하여 핸들러를 호출하기 전에 검증하고, 메시지를 올바른 이벤트 핸들러로 자동 라우팅합니다.
📖 전체 소스 읽기: HN AI Agents
👀 See Also

ViralCanvas.ai는 Sonnet 4.5를 포함한 Claude 모델을 위한 지속적 컨텍스트 작업 공간을 제공합니다.
ViralCanvas.ai는 Claude 모델 위에 구축된 시각적 작업 공간으로, Sonnet 4.5, Sonnet 4.6, Opus 4.5, Opus 4.6에 대한 접근을 제공하며 지속적인 컨텍스트 첨부 기능을 갖추고 있습니다. 이 도구는 연결된 문서를 모든 프롬프트에서 능동적으로 가중치를 부여함으로써 긴 대화에서 발생하는 컨텍스트 저하 문제를 해결합니다.

루쿠즈: 체계적인 테스트와 함께 20만 줄의 C++ 그래프 데이터베이스를 Rust로 이식하기
Rukuzu 프로젝트는 20만 줄의 C++ kuzu 임베디드 그래프 데이터베이스를 Rust로 포팅하는 워크플로우를 설명합니다. Claude Code 커스텀 명령어를 사용해 두 버전을 동시에 유지하고 2,700개 이상의 테스트를 통해 정확성을 검증합니다.

귀하의 공정한 몫 계산 도구: 회사 이익에 대한 귀하의 동등한 몫 계산하기
한 개발자가 클로드 코드와 Vercel을 사용해 SEC 10-K 제출 자료를 기반으로 고용주의 연간 이익 중 귀하의 균등 분배액을 계산하는 웹 도구를 구축했습니다. 이 도구는 애플 직원당 74만 7천 달러, 엔비디아 직원당 280만 달러와 같은 구체적인 수치를 보여줍니다.

Steam City: 클로드 코드로 만든 스팀 라이브러리의 3D 픽셀 아트 맵
한 개발자가 Claude Code를 사용해 Steam 라이브러리를 3D 픽셀 아트 도시로 만든 Steam City를 만들었습니다. 플레이 시간이 건물 높이를 결정하고, 플레이하지 않은 게임은 어둡게 표시됩니다. 이미 1,000명 이상의 플레이어가 참여했습니다.