> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Google 캘린더

## 개요

ElevenLabs AI 에이전트를 [Google Calendar](https://calendar.google.com)와 연결해 일정 및 캘린더 약속을 관리하세요. 이 통합을 통해 에이전트는 자연스러운 대화로 참석자 및 선택적 Google Meet 화상 회의가 포함된 이벤트의 예약 가능 여부를 확인하고, 생성·업데이트·삭제하며, 예정된 이벤트를 나열하고, 액세스 가능한 캘린더를 찾을 수 있습니다.

## 기능

| 기능                 | 지원 여부                    |
| ------------------ | ------------------------ |
| 데이터 보존 안 함 모드(ZRM) | 지원하지 않음                  |
| 도구 내 첨부 파일         | 지원하지 않음 — 도구는 텍스트만 처리합니다 |

## 보안 경고

> **보안 경고: `google_calendar_update_event` 및 `google_calendar_delete_event`는 권한이 있는 도구입니다.** 이 도구들은 에이전트가 생성한 이벤트에만 접근하는 것이 아니라 연결된 Google 계정의 전체 캘린더 접근 권한으로 실행됩니다. 에이전트와 대화할 수 있는 사람은 누구나 `google_calendar_list_events`를 사용해 이벤트 ID를 조회할 수 있으므로, 자신이 생성하지 않은 이벤트를 포함해 해당 캘린더의 **모든** 이벤트를 변경하거나 취소할 수 있습니다. 시스템 프롬프트의 확인 절차는 모델에 주는 힌트일 뿐, 보안 제어 수단이 아닙니다.
>
> **인증이 활성화된** 에이전트에서만 이 도구를 활성화하거나, 신뢰할 수 있는 소스에서 이벤트 ID를 가져오는 경우에만 사용하세요. 공개 에이전트에는 추가하지 마세요. 이벤트가 업데이트되거나 삭제되면 참석자에게 항상 알림이 전송됩니다.

## 설정

이 통합은 인증에 **Google OAuth 2.0**을 사용합니다. ElevenLabs가 사용자를 대신해 Google 캘린더에 액세스하도록 승인합니다.

#### ElevenLabs에서 연결 클릭

ElevenLabs 통합 설정에서 **연결**을 클릭하세요. Google로 리디렉션되어 액세스 권한을 승인하게 됩니다.

#### Google 계정 선택

에이전트가 액세스해야 할 캘린더 데이터가 있는 Google 계정을 선택하세요. 브라우저에 여러 Google 계정으로 로그인되어 있다면 올바른 계정을 선택하세요.

#### 캘린더 액세스 승인

요청된 권한을 검토하고 **허용**을 클릭하세요. 이 통합은 소유한 캘린더의 이벤트 관리, 캘린더 목록 보기 및 여유/바쁨 정보 확인 권한을 요청합니다.

## OAuth 범위

이 통합은 다음 Google OAuth 2.0 범위를 요청합니다.

| 범위                               | 용도                                          |
| -------------------------------- | ------------------------------------------- |
| `calendar.events.owned`          | 소유한 캘린더에서 이벤트를 생성, 읽기, 업데이트 및 삭제합니다.        |
| `calendar.calendarlist.readonly` | 계정에서 액세스 가능한 캘린더 목록(이름 및 ID)을 봅니다.          |
| `calendar.freebusy`              | 이벤트 세부 정보를 노출하지 않고 캘린더 전반의 여유/바쁨 상태를 확인합니다. |

## 작동 방식

에이전트는 도구 호출을 사용해 예약 프로세스를 단계별로 진행하여 회의를 예약합니다. 아래 탭에서 상위 수준 요약과 상세 시스템 프롬프트를 확인할 수 있습니다.

#### 상위 수준 개요

#### 캘린더 찾기

에이전트는 예약에 사용할 올바른 캘린더를 식별하기 위해 액세스 가능한 캘린더를 나열합니다. 대부분의 사용자에게는 기본 캘린더가 이에 해당합니다.

#### 예약 가능 여부 확인

에이전트는 다음 방식으로 여유/바쁨 상태를 확인합니다.

* `google_calendar_check_availability` 도구를 사용해 바쁜 시간대를 조회합니다.
* 요청한 시간이 비어 있는지 확인합니다.
* 요청한 시간이 기존 이벤트와 겹치는 경우 대체 시간을 제안합니다.
* 선택한 시간을 발신자에게 확인합니다.

#### 참석자 정보 수집

시간이 합의되면 에이전트는 다음을 수행합니다.

* 참석자의 성명과 이메일 주소를 수집합니다.
* 이메일 주소를 발신자에게 다시 읽어 확인합니다.
* 시간대 정보를 확인합니다.

#### 이벤트 생성

에이전트는 다음을 수행합니다.

* 확인된 세부 정보로 `google_calendar_create_event` 도구를 호출합니다.
* 화상 회의가 요청된 경우 선택적으로 Google Meet 링크를 추가합니다.
* 이벤트 생성 사실을 확인하고 참석자에게 캘린더 초대장이 전송된다고 알립니다.

#### 상세 시스템 프롬프트

```
You are a helpful scheduling assistant responsible for managing calendar bookings using Google Calendar. Be friendly, precise, and concise.

Begin by briefly asking for the purpose of the meeting and the caller's preferred date and time.
Then, ask about the desired meeting duration (15, 30, or 60 minutes), and wait for the user's response before proceeding.

Once you have the meeting details, check calendar availability:
- Call google_calendar_check_availability with the appropriate time range and calendar ID (use 'primary' for the main calendar)
- The tool returns busy time blocks — any time not listed as busy is available
- If the requested time overlaps with a busy block, suggest alternative times
- Continue until a suitable time is agreed upon

After confirming a time slot, gather the following contact details:
- The attendee's full name
- A valid email address. Note that the email address is transcribed from voice, so ensure it is formatted correctly.
- The attendee's time zone (in 'Continent/City' format like 'America/New_York')
- Read the email back to the caller to confirm accuracy

Once all details are confirmed, create the event:
- Call google_calendar_create_event with calendarId set to 'primary'
- Set summary to a descriptive meeting title
- Set start and end times in RFC 3339 format with the attendee's time zone
- Add the attendee's email to the attendees array
- If the caller requests a video call, include conferenceData with conferenceSolutionKey type 'hangoutsMeet' and set the conferenceDataVersion query parameter to 1
- Set sendUpdates to 'all' so attendees receive calendar invitations

Thank the attendee and inform them they will receive a calendar invitation shortly.

Clarifications:
- Do not inform the user that you are formatting the email; do it silently.
- If the caller asks you to proceed with booking, do so with the existing information.
- Use google_calendar_list_calendars if the caller asks to schedule on a specific calendar other than their primary one.
- Use google_calendar_list_events if the caller asks what meetings they have coming up, or to find the event ID before changing or cancelling a meeting.
- Use google_calendar_update_event to reschedule or edit an existing event. Check availability for the new time first, and confirm the change with the caller.
- Use google_calendar_delete_event to cancel an event only after the caller has explicitly confirmed which event to cancel. For recurring events, confirm whether to cancel one occurrence or the whole series: list events with singleEvents=true and use the occurrence's ID for one occurrence, or its recurringEventId for the whole series.

Guardrails:
- Do not share any internal IDs or API details with the caller.
- If event creation fails, check for formatting issues in the email or time conflicts.
```

## 에이전트 도구

에이전트에 Google 캘린더 도구를 추가하면 다음 기본 제공 도구를 사용할 수 있습니다.

| 도구                                   | 설명                                                                                                                                      |
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| `google_calendar_check_availability` | 시간 범위 내에서 하나 이상의 캘린더에 대한 여유/바쁨 상태를 확인합니다. 에이전트가 빈 시간을 찾을 수 있도록 바쁜 시간대를 반환합니다. 충돌을 방지하려면 이벤트를 생성하기 전에 사용하세요.                             |
| `google_calendar_create_event`       | 선택적 참석자, 위치 및 Google Meet 화상 회의가 포함된 새 이벤트를 Google 캘린더에 생성합니다. 모든 참여자에게 이메일 알림을 전송합니다.                                                  |
| `google_calendar_list_events`        | 시간 범위 내 캘린더의 예정된 이벤트를 시작 시간순으로 나열합니다. 이벤트 요약, 설명, 위치 및 참석자 세부 정보 전반에서 자유 텍스트 검색을 지원합니다.                                                 |
| `google_calendar_update_event`       | **권한 필요.** 예를 들어 일정 변경이나 제목, 위치 또는 참석자 변경을 위해 캘린더의 모든 이벤트를 업데이트합니다. 제공된 필드만 변경됩니다. 참석자에게 알림이 전송됩니다.                                     |
| `google_calendar_delete_event`       | **권한 필요.** 캘린더의 모든 이벤트를 삭제하여 모든 참석자에게 취소 처리합니다. 먼저 이벤트 나열을 사용해 이벤트 ID를 찾으세요. 반복 이벤트의 경우 발생 인스턴스의 ID 또는 recurringEventId(전체 시리즈)를 사용하세요. |
| `google_calendar_list_calendars`     | 연결된 Google 계정에서 액세스 가능한 모든 캘린더를 나열합니다. 캘린더 이름과 ID를 반환합니다. 예약 가능 여부를 확인하거나 이벤트를 생성하기 전에 대상 캘린더를 찾는 데 사용하세요.                              |

## 유용한 링크

* [Google Calendar API 문서](https://developers.google.com/calendar/api/v3/reference)
* [캘린더용 Google OAuth 2.0 범위](https://developers.google.com/identity/protocols/oauth2/scopes#calendar)
* [Google Calendar API 빠른 시작](https://developers.google.com/calendar/api/quickstart/python)
* [ElevenLabs 도구 개요](/docs/ko/eleven-agents/customization/tools/server-tools)