Ошибка Google Calendar API при создании события с Hangouts Meet

    При интеграции Google Calendar API в Go-приложения разработчики часто сталкиваются с ошибкой googleapi: Error 400: Invalid conference type value., invalid. Она возникает, когда метод Events.Insert пытается добавить видеоконференцию Hangouts Meet, но API не может распознать тип конференции. В этой статье мы разберём причины проблемы и покажем, как её исправить.

    Почему возникает ошибка Invalid conference type value?

    Ошибка invalid появляется из-за неправильной настройки поля ConferenceSolutionKey.Type. В коде часто указывают значение "hangoutsMeet", но Google Calendar API ожидает строку "hangoutsMeet" в нижнем регистре, без пробелов. Однако даже правильное написание не гарантирует успех - необходимо убедиться, что ваш проект Google Cloud настроен для работы с дополнениями конференций.

    Как исправить ошибку при создании события в календаре Google

    Чтобы корректно создать событие с видеоконференцией, выполните следующие шаги:

    1. Проверьте настройки Google Cloud Console

    • Перейдите в Google Cloud Console и выберите ваш проект.
    • Откройте раздел API и сервисыБиблиотека.
    • Убедитесь, что включён Google Calendar API и Google Meet API (если он доступен).
    • В разделе Учётные данные проверьте, что используется правильный OAuth 2.0 Client ID с доступом к календарю.

    2. Используйте корректный тип конференции

    В поле ConferenceSolutionKey.Type всегда указывайте "hangoutsMeet" - это единственное допустимое значение для Hangouts Meet. Не используйте "googleMeet" или другие вариации. Пример правильной настройки:

    ConferenceSolutionKey: &calendar.ConferenceSolutionKey{
        Type: "hangoutsMeet",
    },
    

    3. Добавьте параметр ConferenceDataVersion

    При вызове Events.Insert обязательно передавайте ConferenceDataVersion(1). Без этого параметра Google API игнорирует конференцию. Убедитесь, что код выглядит так:

    event, err := calendarService.Events.Insert("calendar@gmail.com", event).ConferenceDataVersion(1).Do()
    

    4. Проверьте права доступа аккаунта

    Убедитесь, что аккаунт, от имени которого выполняется запрос, имеет права на создание событий с конференциями. Для тестирования используйте аккаунт с ролью Редактор или Владелец календаря.

    Пример правильного кода на Go

    Ниже приведён исправленный вариант функции CreateEvent, который создаёт событие с видеоконференцией Hangouts Meet без ошибок:

    import (
        "time"
        "google.golang.org/api/calendar/v3"
        "github.com/google/uuid"
    )
    
    func CreateEvent(startDate time.Time, duration int, headerText string) (string, error) {
        endDate := startDate.Add(time.Hour * time.Duration(duration))
        event := &calendar.Event{
            Summary:     headerText,
            Description: "AutomateCreate",
            Start: &calendar.EventDateTime{
                DateTime: startDate.Format(time.RFC3339),
                TimeZone: "Europe/Moscow",
            },
            End: &calendar.EventDateTime{
                DateTime: endDate.Format(time.RFC3339),
                TimeZone: "Europe/Moscow",
            },
            ConferenceData: &calendar.ConferenceData{
                CreateRequest: &calendar.CreateConferenceRequest{
                    ConferenceSolutionKey: &calendar.ConferenceSolutionKey{
                        Type: "hangoutsMeet",
                    },
                    RequestId: uuid.New().String(),
                },
            },
        }
        event, err := calendarService.Events.Insert("calendar@gmail.com", event).ConferenceDataVersion(1).Do()
        if err != nil {
            return "", err
        }
        text := event.Summary + "/n" + event.HangoutLink
        return text, nil
    }
    

    Дополнительные советы по работе с Google Calendar API

    • Всегда обрабатывайте ошибки от API - это поможет быстро выявить проблемы с авторизацией или форматом данных.
    • Используйте time.RFC3339 для форматирования даты, чтобы избежать несоответствий часовых поясов.
    • Для отладки включите логирование запросов к API, указав googleapi.WithAPIKey() или настроив HTTP-клиент.

    Следуя этим рекомендациям, вы успешно создадите события в Google Calendar с видеоконференциями и избежите ошибки Invalid conference type value. Если проблема сохраняется, проверьте, не устарела ли версия библиотеки google.golang.org/api, и обновите её до последней.

    Часто задаваемые вопросы