이 자습서에서는 팀이 DM에서 직접 채팅하거나 채널에서 @멘션하여 채팅할 수 있도록 Azure SRE 에이전트를 Microsoft Teams 봇으로 배포합니다.
팁 (조언)
이 자습서에서 수행하는 작업은 다음과 같습니다.
- 에이전트가 Microsoft Teams에서 봇으로 표시됩니다.
- 팀 구성원은 개인 조사를 위해 봇을 DM할 수 있습니다.
- 팀 구성원은 공동 작업 문제 해결을 위해 채널에서 봇을 @멘션할 수 있습니다.
- 응답은 자동으로 Teams로 다시 스트리밍됩니다.
사전 요구 사항
시작하기 전에 다음 리소스 및 액세스 권한이 있는지 확인합니다.
| 요구 사항 | 세부 정보 |
|---|---|
| Azure SRE 에이전트 | 배포 및 실행 중인 에이전트 |
| Azure 구독 | Azure Bot Service 리소스를 만들려면 |
| 사용자가 할당한 관리 ID | 에이전트에서 사용하는 ID(에이전트 배포 중에 생성됨) |
| Teams 관리자 액세스 | 조직에 봇 앱을 게시하려면 |
개요
다음 세 단계로 Teams 봇을 설정합니다.
- Azure Bot Service 배포: Bot Framework에 에이전트의 엔드포인트를 등록합니다.
- Teams 앱 패키지 빌드: Teams에서 봇을 설치하는 데 필요한 매니페스트를 만듭니다.
- Teams에 게시: 조직에서 봇을 사용할 수 있도록 합니다.
1단계: Azure Bot Service 배포
Azure Bot Service는 Teams와 에이전트 간에 메시지를 라우팅합니다. 에이전트의 코드베이스에는 이 리소스를 만드는 Bicep 템플릿이 포함되어 있습니다.
필수 값 수집
배포하기 전에 다음 값을 수집합니다.
| 가치 | 찾는 위치 | 예시 |
|---|---|---|
| Bot App 클라이언트 ID | 에이전트의 관리형 ID 클라이언트 ID | aaaaaaaa-0000-1111-... |
| Bot App 도메인 | 에이전트의 컨테이너 앱 FQDN | my-agent.eastus2.azuresre.ai |
| 봇 표시 이름 | Teams에서 봇을 표시할 이름 | SRE Agent |
| 앱 유형 |
UserAssignedMsi 관리 ID용(권장) |
UserAssignedMsi |
| 테넌트 ID | Microsoft Entra 테넌트 ID | aaaaaaaa-0000-1111-... |
Azure CLI를 사용하여 배포
다음 명령을 실행하여 Bot Service 리소스를 배포합니다.
az deployment group create \
--name sre-agent-bot \
--resource-group <RESOURCE_GROUP> \
--template-file deploy/teams-bot.bicep \
--parameters \
resourceBaseName=<BOT_NAME> \
botAadAppClientId=<MANAGED_IDENTITY_CLIENT_ID> \
botAppDomain=<AGENT_FQDN> \
botDisplayName="SRE Agent" \
microsoftAppType=UserAssignedMsi \
microsoftAppTenantId=<TENANT_ID>
Bicep 템플릿은 다음 리소스를 만듭니다.
- Azure Bot Service 리소스입니다.
- 해당 봇의 Teams 채널 연결입니다.
- 를 가리키는 메시징 엔드포인트입니다
https://<AGENT_FQDN>/api/messages.
에이전트를 구성하세요
에이전트는 Teams 메시지를 수락하기 위해 세 가지 환경 변수가 필요합니다. 컨테이너 앱에서 이러한 변수를 설정합니다.
| 변수 | 가치 | 설명 |
|---|---|---|
| Teams 봇 앱 ID | 관리되는 ID의 클라이언트 ID | Bot Framework에 대한 봇 식별 |
| Teams 봇 앱 유형 | UserAssignedMsi |
인증 방법(관리 ID 권장) |
| Teams 봇 테넌트 ID | Microsoft Entra 테넌트 ID | 테넌트에 대한 인증 범위 지정 |
정확한 환경 변수 이름은 배포에 대한 ASP.NET 구성 바인딩 규칙을 따릅니다. 이러한 변수가 없으면 Teams 엔드포인트는 503을 반환하고 봇은 오프라인으로 표시됩니다.
팁 (조언)
를 사용하면 UserAssignedMsi암호나 비밀이 필요하지 않습니다. 관리 ID는 인증을 자동으로 처리합니다.
2단계: Teams 앱 패키지 빌드
Teams 앱 패키지는 매니페스트와 아이콘을 포함하는 ZIP 파일입니다. 에이전트의 코드베이스에는 템플릿 및 빌드 스크립트가 포함됩니다.
환경 파일 만들기
배포 값을 사용하여 .env 파일을 만듭니다.
TEAMS_APP_ID=<UNIQUE_GUID_FOR_TEAMS_APP>
AAD_APP_CLIENT_ID=<MANAGED_IDENTITY_CLIENT_ID>
BOT_DOMAIN=<AGENT_FQDN>
BOT_NAME="SRE Agent"
RESOURCE_SUFFIX=<SHORT_NAME>
MICROSOFT_APP_TYPE=UserAssignedMsi
MICROSOFT_APP_TENANT_ID=<TENANT_ID>
RESOURCE_GROUP=<RESOURCE_GROUP>
빌드 스크립트 실행
빌드 스크립트를 실행하여 앱 패키지를 생성합니다.
cd TeamsResources
chmod +x build.sh
./build.sh
이 스크립트는 다음 작업을 수행합니다.
- 값을 매니페스트 템플릿에 넣습니다.
- Azure에 Bot Service를 배포합니다.
- 매니페스트와 아이콘을 사용하여
appPackage.zip을 만듭니다.
결과물은 appPackage.zip Teams에 업로드할 준비가 되었습니다.
3단계: Teams에 게시
앱 패키지를 업로드하고 조직에서 봇을 사용할 수 있는지 확인합니다.
앱 패키지 업로드
다음 단계에 따라 조직에 봇을 게시합니다.
- admin.teams.microsoft.comTeams 관리 센터를 엽니다.
- Teams 앱>앱 관리로 이동합니다.
- 새 앱 업로드를 선택합니다.
-
appPackage.zip를 선택합니다. - 게시를 선택하여 조직에서 앱을 사용할 수 있도록 합니다.
Teams에서 확인
봇에 액세스하고 응답하고 있는지 확인합니다.
- Microsoft Teams 엽니다.
- 사이드바에서 앱을 선택합니다.
- 봇의 이름(예: "SRE 에이전트")을 검색합니다.
- 추가를 선택하여 설치합니다.
- "Hello"를 입력하여 채팅을 시작합니다.
에이전트는 자체 및 기능을 소개하는 환영 메시지로 응답합니다.
통합 테스트
게시한 후 직접 메시지와 채널 멘션 모두에서 봇을 테스트합니다.
DM 테스트
봇을 사용하여 직접 채팅을 엽니다.
You: Check the health of my resources
Agent: Searching your subscription for resource health...
✅ 10/12 resources healthy
⚠️ web-app-prod: High memory (87%)
채널 테스트
팀 채널에서 봇을 @멘션하세요.
@SREAgent what's the error rate on api-gateway?
봇은 전체 분석이 실행되는 동안 빠른 승인을 보낸 다음, 자세한 응답을 게시합니다.
작동 방식
다음 표에서는 Teams와 에이전트 간의 메시지 흐름을 설명합니다.
| Step | 어떻게 되나요? |
|---|---|
| Teams에서 메시지를 보냅니다. | Teams이 에이전트에서 POST /api/messages으로 전송 |
| 에이전트가 메시지를 받습니다. | Bot Framework SDK는 메시지를 인증하고 구문 분석합니다. |
| 스레드 매핑 | 에이전트는 Teams 대화를 내부 스레드에 매핑합니다. |
| 가공 | 전체 도구 액세스 권한이 있는 포털 채팅과 동일한 추론 엔진 |
| 빠른 응답(채널에만 해당) | 분석이 실행되는 동안 게시되는 간단한 알림 |
| 전체 응답 | 에이전트의 응답이 폴링되어 Teams로 다시 전달됩니다. |
응답은 처리 직후 Teams 대화로 다시 전달됩니다. 전체 도구 호출 세부 정보는 포털에 동일한 스레드가 표시됩니다.
Troubleshooting
다음 표를 사용하여 Teams 봇 설정의 일반적인 문제를 해결합니다.
| 증상 | 해결 방법 |
|---|---|
| 봇이 응답하지 않음 | Teams 봇 환경 변수가 컨테이너 앱에 설정되어 있는지 확인합니다. 앱 ID가 실제 관리 ID 클라이언트 ID로 설정되어 있는지 확인합니다. |
| "Teams 엔드포인트에서 503 오류 발생" | 봇이 구성되지 않았습니다. 세 가지 필수 환경 변수를 설정합니다. |
| 인증 오류 | 관리 ID 클라이언트 ID가 Bot Service의 msaAppIdID와 일치하는지 확인합니다. |
| Teams에서 봇을 찾을 수 없음 | 앱이 게시되고 사용자에게 앱을 설치할 수 있는 권한이 있는지 확인합니다. |
| 포털에서 작동하지만 Teams에서는 작동하지 않음 | Bot Service가 배포되고 메시징 엔드포인트에 연결할 수 있는지 확인합니다. |