메인 콘텐츠로 건너뛰기

개요

에이전트가 Outlook 이메일, 캘린더 이벤트 및 연락처에 액세스하고 관리할 수 있도록 합니다. AI 기반 자동화로 이메일을 보내고, 메시지를 검색하고, 캘린더 이벤트를 관리하며, 연락처를 구성합니다.

전제 조건

Microsoft Outlook 통합을 사용하기 전에 다음 사항을 확인하세요:
  • 활성 구독이 있는 CrewAI AMP 계정
  • Outlook 액세스 권한이 있는 Microsoft 계정
  • 통합 페이지를 통해 Microsoft 계정 연결

Microsoft Outlook 통합 설정

1. Microsoft 계정 연결

  1. CrewAI AMP 통합으로 이동
  2. 인증 통합 섹션에서 Microsoft Outlook 찾기
  3. 연결을 클릭하고 OAuth 플로우 완료
  4. 이메일, 캘린더 및 연락처 액세스에 필요한 권한 부여
  5. 통합 설정에서 Enterprise Token 복사

2. 필요한 패키지 설치

uv add crewai-tools

3. 환경 변수 설정

Agent(apps=[])와 함께 통합을 사용하려면 Enterprise Token으로 CREWAI_PLATFORM_INTEGRATION_TOKEN 환경 변수를 설정해야 합니다.
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"
또는 .env 파일에 추가하세요:
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token

사용 가능한 작업

설명: 사용자의 사서함에서 이메일 메시지를 가져옵니다.매개변수:
  • top (integer, 선택사항): 검색할 메시지 수 (최대 1000). 기본값: 10.
  • filter (string, 선택사항): OData 필터 표현식 (예: “isRead eq false”).
  • search (string, 선택사항): 검색 쿼리 문자열.
  • orderby (string, 선택사항): 필드별 정렬 (예: “receivedDateTime desc”). 기본값: “receivedDateTime desc”.
  • select (string, 선택사항): 반환할 특정 속성 선택.
  • expand (string, 선택사항): 관련 리소스를 인라인으로 확장.
설명: 이메일 메시지를 보냅니다.매개변수:
  • to_recipients (array, 필수): 받는 사람의 이메일 주소 배열.
  • cc_recipients (array, 선택사항): 참조 받는 사람의 이메일 주소 배열.
  • bcc_recipients (array, 선택사항): 숨은 참조 받는 사람의 이메일 주소 배열.
  • subject (string, 필수): 이메일 제목.
  • body (string, 필수): 이메일 본문 내용.
  • body_type (string, 선택사항): 본문 내용 유형. 옵션: Text, HTML. 기본값: HTML.
  • importance (string, 선택사항): 메시지 중요도 수준. 옵션: low, normal, high. 기본값: normal.
  • reply_to (array, 선택사항): 회신용 이메일 주소 배열.
  • save_to_sent_items (boolean, 선택사항): 보낸 편지함 폴더에 메시지를 저장할지 여부. 기본값: true.
설명: 사용자의 캘린더에서 캘린더 이벤트를 가져옵니다.매개변수:
  • top (integer, 선택사항): 검색할 이벤트 수 (최대 1000). 기본값: 10.
  • skip (integer, 선택사항): 건너뛸 이벤트 수. 기본값: 0.
  • filter (string, 선택사항): OData 필터 표현식 (예: “start/dateTime ge ‘2024-01-01T00:00:00Z’”).
  • orderby (string, 선택사항): 필드별 정렬 (예: “start/dateTime asc”). 기본값: “start/dateTime asc”.
설명: 새 캘린더 이벤트를 만듭니다.매개변수:
  • subject (string, 필수): 이벤트 제목/제목.
  • body (string, 선택사항): 이벤트 본문/설명.
  • start_datetime (string, 필수): ISO 8601 형식의 시작 날짜 및 시간 (예: ‘2024-01-20T10:00:00’).
  • end_datetime (string, 필수): ISO 8601 형식의 종료 날짜 및 시간.
  • timezone (string, 선택사항): 시간대 (예: ‘Pacific Standard Time’). 기본값: UTC.
  • location (string, 선택사항): 이벤트 위치.
  • attendees (array, 선택사항): 참석자의 이메일 주소 배열.
설명: 사용자의 주소록에서 연락처를 가져옵니다.매개변수:
  • top (integer, 선택사항): 검색할 연락처 수 (최대 1000). 기본값: 10.
  • skip (integer, 선택사항): 건너뛸 연락처 수. 기본값: 0.
  • filter (string, 선택사항): OData 필터 표현식.
  • orderby (string, 선택사항): 필드별 정렬 (예: “displayName asc”). 기본값: “displayName asc”.
설명: 사용자의 주소록에 새 연락처를 만듭니다.매개변수:
  • displayName (string, 필수): 연락처의 표시 이름.
  • givenName (string, 선택사항): 연락처의 이름.
  • surname (string, 선택사항): 연락처의 성.
  • emailAddresses (array, 선택사항): 이메일 주소 배열. 각 항목은 address (string)와 name (string)이 있는 객체.
  • businessPhones (array, 선택사항): 사업용 전화번호 배열.
  • homePhones (array, 선택사항): 집 전화번호 배열.
  • jobTitle (string, 선택사항): 연락처의 직책.
  • companyName (string, 선택사항): 연락처의 회사 이름.
설명: ID로 특정 이메일 메시지를 가져옵니다.매개변수:
  • message_id (string, 필수): 메시지의 고유 식별자. get_messages 작업에서 얻을 수 있습니다.
  • select (string, 선택사항): 반환할 속성의 쉼표로 구분된 목록. 예: “id,subject,body,from,receivedDateTime”. 기본값: “id,subject,body,from,toRecipients,receivedDateTime”.
설명: 이메일 메시지에 회신합니다.매개변수:
  • message_id (string, 필수): 회신할 메시지의 고유 식별자. get_messages 작업에서 얻을 수 있습니다.
  • comment (string, 필수): 회신 메시지 내용. 일반 텍스트 또는 HTML 가능. 원본 메시지가 이 내용 아래에 인용됩니다.
설명: 이메일 메시지를 전달합니다.매개변수:
  • message_id (string, 필수): 전달할 메시지의 고유 식별자. get_messages 작업에서 얻을 수 있습니다.
  • to_recipients (array, 필수): 전달할 받는 사람의 이메일 주소 배열. 예: [“[email protected]”, “[email protected]”].
  • comment (string, 선택사항): 전달된 콘텐츠 위에 포함할 선택적 메시지. 일반 텍스트 또는 HTML 가능.
설명: 메시지를 읽음 또는 읽지 않음으로 표시합니다.매개변수:
  • message_id (string, 필수): 메시지의 고유 식별자. get_messages 작업에서 얻을 수 있습니다.
  • is_read (boolean, 필수): 읽음으로 표시하려면 true, 읽지 않음으로 표시하려면 false로 설정합니다.
설명: 이메일 메시지를 삭제합니다.매개변수:
  • message_id (string, 필수): 삭제할 메시지의 고유 식별자. get_messages 작업에서 얻을 수 있습니다.
설명: 기존 캘린더 이벤트를 업데이트합니다.매개변수:
  • event_id (string, 필수): 이벤트의 고유 식별자. get_calendar_events 작업에서 얻을 수 있습니다.
  • subject (string, 선택사항): 이벤트의 새 제목/제목.
  • start_time (string, 선택사항): ISO 8601 형식의 새 시작 시간 (예: “2024-01-20T10:00:00”). 필수: 이 필드 사용 시 start_timezone도 제공해야 합니다.
  • start_timezone (string, 선택사항): 시작 시간의 시간대. start_time 업데이트 시 필수. 예: “Pacific Standard Time”, “Eastern Standard Time”, “UTC”.
  • end_time (string, 선택사항): ISO 8601 형식의 새 종료 시간. 필수: 이 필드 사용 시 end_timezone도 제공해야 합니다.
  • end_timezone (string, 선택사항): 종료 시간의 시간대. end_time 업데이트 시 필수. 예: “Pacific Standard Time”, “Eastern Standard Time”, “UTC”.
  • location (string, 선택사항): 이벤트의 새 위치.
  • body (string, 선택사항): 이벤트의 새 본문/설명. HTML 형식 지원.
설명: 캘린더 이벤트를 삭제합니다.매개변수:
  • event_id (string, 필수): 삭제할 이벤트의 고유 식별자. get_calendar_events 작업에서 얻을 수 있습니다.

사용 예제

기본 Microsoft Outlook 에이전트 설정

from crewai import Agent, Task, Crew

# Microsoft Outlook 기능을 가진 에이전트 생성
outlook_agent = Agent(
    role="이메일 어시스턴트",
    goal="이메일, 캘린더 이벤트 및 연락처를 효율적으로 관리",
    backstory="Microsoft Outlook 작업 및 커뮤니케이션 관리 전문 AI 어시스턴트.",
    apps=['microsoft_outlook']  # 모든 Outlook 작업을 사용할 수 있습니다
)

# 이메일 보내기 작업
send_email_task = Task(
    description="'[email protected]'에게 제목 '프로젝트 업데이트'와 본문 '안녕하세요, 프로젝트의 최신 업데이트입니다. 감사합니다.'로 이메일을 보내세요",
    agent=outlook_agent,
    expected_output="[email protected]에게 이메일이 성공적으로 전송됨"
)

# 작업 실행
crew = Crew(
    agents=[outlook_agent],
    tasks=[send_email_task]
)

crew.kickoff()

이메일 관리 및 검색

from crewai import Agent, Task, Crew

# 이메일 관리에 특화된 에이전트 생성
email_manager = Agent(
    role="이메일 관리자",
    goal="이메일 메시지를 검색하고 가져와 정리",
    backstory="이메일 정리 및 관리에 능숙한 AI 어시스턴트.",
    apps=['microsoft_outlook/get_messages']
)

# 이메일 검색 및 가져오기 작업
search_emails_task = Task(
    description="최신 읽지 않은 이메일 20건을 가져와 가장 중요한 것들의 요약을 제공하세요.",
    agent=email_manager,
    expected_output="주요 읽지 않은 이메일의 요약과 핵심 세부 정보."
)

crew = Crew(
    agents=[email_manager],
    tasks=[search_emails_task]
)

crew.kickoff()

캘린더 및 연락처 관리

from crewai import Agent, Task, Crew

# 캘린더 및 연락처 관리를 위한 에이전트 생성
scheduler = Agent(
    role="캘린더 및 연락처 관리자",
    goal="캘린더 이벤트를 관리하고 연락처 정보를 유지",
    backstory="일정 관리 및 연락처 정리를 담당하는 AI 어시스턴트.",
    apps=['microsoft_outlook/create_calendar_event', 'microsoft_outlook/get_calendar_events', 'microsoft_outlook/create_contact']
)

# 회의 생성 및 연락처 추가 작업
schedule_task = Task(
    description="내일 오후 2시 '팀 회의' 제목으로 '회의실 A' 장소의 캘린더 이벤트를 만들고, '[email protected]' 이메일과 '프로젝트 매니저' 직책으로 'John Smith'의 새 연락처를 추가하세요.",
    agent=scheduler,
    expected_output="캘린더 이벤트가 생성되고 새 연락처가 추가됨."
)

crew = Crew(
    agents=[scheduler],
    tasks=[schedule_task]
)

crew.kickoff()

문제 해결

일반적인 문제

인증 오류
  • Microsoft 계정이 이메일, 캘린더 및 연락처 액세스에 필요한 권한을 가지고 있는지 확인하세요.
  • 필요한 범위: Mail.Read, Mail.Send, Calendars.Read, Calendars.ReadWrite, Contacts.Read, Contacts.ReadWrite.
  • OAuth 연결에 필요한 모든 범위가 포함되어 있는지 확인하세요.
이메일 보내기 문제
  • send_emailto_recipients, subject, body가 제공되는지 확인하세요.
  • 이메일 주소가 올바르게 형식화되어 있는지 확인하세요.
  • 계정에 Mail.Send 권한이 있는지 확인하세요.
캘린더 이벤트 생성
  • subject, start_datetime, end_datetime이 제공되는지 확인하세요.
  • 날짜/시간 필드에 적절한 ISO 8601 형식을 사용하세요 (예: ‘2024-01-20T10:00:00’).
  • 이벤트가 잘못된 시간에 표시되는 경우 시간대 설정을 확인하세요.
연락처 관리
  • create_contact의 경우 필수인 displayName이 제공되는지 확인하세요.
  • emailAddresses를 제공할 때 addressname 속성이 있는 올바른 객체 형식을 사용하세요.
검색 및 필터 문제
  • filter 매개변수에 올바른 OData 문법을 사용하세요.
  • 날짜 필터의 경우 ISO 8601 형식을 사용하세요 (예: “receivedDateTime ge ‘2024-01-01T00:00:00Z’”).

도움 받기

도움이 필요하신가요?

Microsoft Outlook 통합 설정 또는 문제 해결에 대한 지원이 필요하시면 지원팀에 문의하세요.