Üçüncü taraf konferansları oluşturma

.

Tüm konferans çözümleri komut dosyası projenizde tanımladığınız manifest ilişkilendirilmiş bir onCreateFunction var. Eklenti, her kullanıcı konferans çözümünü seçmeye çalıştığında unutmayın.

Eklenti manifestinizde açıklanan her onCreateFunction öğesini uygulamanız gerekir. Genel olarak bu işlevlerin şunları yapması gerekir:

  1. Etkinlik kimliği veya takvim etkinliği gibi Google Takvim etkinlik bilgilerini alın. üçüncü taraf konferans sisteminin ihtiyaç duyabileceği katılımcı listesi konferansı oluşturmak için tıklayın.
  2. Üçüncü taraf konferans hizmetine bağlanma ve yeni bir konferans oluşturma Google Takvim etkinlik bilgilerini kullanarak düzenleyebilirsiniz.
  3. Konferans oluşturma isteği herhangi bir nedenden dolayı başarısız olduysa şu hatayı kullanın: oluşturmak ve döndürmek için, ConferenceData şunu içeren nesne: ConferenceError. Aksi takdirde, sonraki adımları tamamlayın.
    1. Konferans senkronizasyonunu başlatın.
    2. Üçüncü taraf konferans hizmeti tarafından döndürülen bilgileri kullanarak yeni bir web sitesi ConferenceData nesnesini tanımlayın.

Etkinlik bilgileri alınıyor

Üçüncü taraf konferansı oluşturmak için bu konferansla ilgili belirli bilgileri Google Takvim etkinliği gerekiyor. Tam olarak gerekli olan etkinlik bilgileri değişiklik gösterir konferans sistemleri arasında çalışıyor, ancak çoğu zaman etkinlik başlangıç zamanı, bitiş zamanı, özet, katılımcı listesi ve kimliği.

Çağrı yapıldığında, tanımladığınız her onCreateFunction bağımsız değişken takvim ve etkinlik kimliklerini içerir. Bu kimlikleri, tüm etkinlik bilgilerini Gelişmiş Google Takvim hizmeti.

Google Takvim, konferans ayrıntılarını bir etkinliğe önceden ekleyebilir. daha iyi olur. Bu tür durumlarda, Google Takvim onCreateFunction için geçerli bir eventId ancak Calendar.Events.get() için yapılan sonraki çağrılar "Etkinliğin mevcut olmadığını" belirten bir hata yanıtı alırsınız. Bu durumlarda en iyisi yer tutucu verileri kullanarak üçüncü taraf konferansını oluşturma; bu veri değiştirildi bu daha sonra senkronizasyonlar.

Üçüncü taraf konferansı oluşturma

onCreateFunction gerekli etkinlik verilerini aldıktan sonra, konferansı oluşturmak için üçüncü taraf konferans sistemine bağlanmalıdır. Bu genellikle üçüncü taraf konferans sistemidir. Üçüncü tarafın dokümanlarına bakın bir konferans çözümü oluşturmak için düzenleyeceğiz.

Apps Komut Dosyası'nda, harici API isteklerinde bulunmanın en kolay yolu Apps Komut Dosyası için OAuth2 kullanarak veya Apps Komut Dosyası için OAuth1 açık kaynak kitaplıklar var. Ayrıca transkriptinizi UrlFetch hizmetini kullanarak harici API'lere bağlanın. Ancak bunun için yetkilendirme ayrıntılarını açık bir şekilde işlemeniz gerekir.

Konferansın oluşturulmasını istedikten sonra ek toplantılar yeni konferans ayrıntılarını alma isteğinde bulunur.

Konferans senkronizasyonunu başlat

Eklenti, üçüncü taraf sisteminde başarıyla konferans oluşturduktan sonra etkinleştirmek için birkaç adım senkronize edebilirsiniz. Google Takvim etkinliği konferansa yansıtılır.

Takvim değişikliklerini senkronize etme bölümüne bakın. sayfasına bakın.

Konferans veri yanıtı oluşturma

Üçüncü taraf hizmeti tarafından döndürülen konferans bilgilerini kullanarak onCreateFunction, daha sonra bir ConferenceData nesne; "the" Konferans verileri bölümünde, bu nesnenin içeriği açıklanmaktadır. Google Takvim bunu kullanır bu bilgileri, başladığında kullanıcıları konferansa yönlendirmek için kullanır.

ConferenceData oluştururken alan uzunluklarında, dosya biçimleri ve reklam biçimleriyle ilgili giriş noktası URI'larını ve izin verilen giriş noktası kombinasyonlarını içerir. Örneğin, tek bir uygulamada en fazla bir VIDEO giriş noktası olabilir ConferenceData. Bu sınırlamalar, açıklanan sınırlamalarla aynıdır. Calendar API Etkinliği'nde conferenceData alanına ait olmakla birlikte, burada açıklanan API etkinlik alanlarının tümü değil Apps Komut Dosyası'nda mevcuttur.

Hataları işleme

Bazı durumlarda konferans oluşturma işlemi, döndüren bir hata almaya devam edersiniz. Bu durumlarda eklentiniz, RACI matrisindeki eklentinizi geliştirerek ve şunu döndürüyor: ConferenceData şunu içeren nesne ConferenceError güncel bilgileri paylaşın.

Hata bildirmek için ConferenceData nesnesi oluştururken ConferenceData ConferenceError nesne algılandı. ConferenceErrors, ConferenceErrorType, ve kimlik doğrulama sorunları olması durumunda, mümkünse izin verilen üçüncü taraf konferans sistemine giriş yapmasına olanak tanır.

Örnek

Aşağıda bir onCreateFunction örneği gösterilmektedir ( fonksiyonu herhangi bir şey olabilir; bunu eklenti projenizde tanımlamanız yeterlidir manifest'i) ekleyebilirsiniz.

create3rdPartyConference() işlevi üçüncü taraf sistemle iletişim kurar konferansı ve getAuthenticationUrl() işlevini oluşturmak için üçüncü taraf sistem kimlik doğrulama URL'si oluşturur. Bunlar uygulanmıyor ve bunlar üçüncü taraf sistem ayrıntılarına oldukça bağımlı olduğundan tümüyle buradadır.

initializeSyncing() fonksiyonu burada gösterilmez; tüm ön inceleme ve senkronizasyon için daha fazla iş gerekir. Takvim değişikliklerini senkronize etme başlıklı makaleye göz atın. inceleyebilirsiniz.

/**
 *  Creates a conference, then builds and returns a ConferenceData object
 *  with the corresponding conference information. This method is called
 *  when a user selects a conference solution defined by the add-on that
 *  uses this function as its 'onCreateFunction' in the add-on manifest.
 *
 *  @param {Object} arg The default argument passed to a 'onCreateFunction';
 *      it carries information about the Google Calendar event.
 *  @return {ConferenceData}
 */
function createConference(arg) {
  const eventData = arg.eventData;
  const calendarId = eventData.calendarId;
  const eventId = eventData.eventId;

  // Retrieve the Calendar event information using the Calendar
  // Advanced service.
  var calendarEvent;
  try {
    calendarEvent = Calendar.Events.get(calendarId, eventId);
  } catch (err) {
    // The calendar event does not exist just yet; just proceed with the
    // given event ID and allow the event details to sync later.
    console.log(err);
    calendarEvent = {
      id: eventId,
    };
  }

  // Create a conference on the third-party service and return the
  // conference data or errors in a custom JSON object.
  var conferenceInfo = create3rdPartyConference(calendarEvent);

  // Build and return a ConferenceData object, either with conference or
  // error information.
  var dataBuilder = ConferenceDataService.newConferenceDataBuilder();

  if (!conferenceInfo.error) {
    // No error, so build the ConferenceData object from the
    // returned conference info.

    var phoneEntryPoint = ConferenceDataService.newEntryPoint()
        .setEntryPointType(ConferenceDataService.EntryPointType.PHONE)
        .setUri('tel:+' + conferenceInfo.phoneNumber)
        .setPin(conferenceInfo.phonePin);

    var adminEmailParameter = ConferenceDataService.newConferenceParameter()
        .setKey('adminEmail')
        .setValue(conferenceInfo.adminEmail);

    dataBuilder.setConferenceId(conferenceInfo.id)
        .addEntryPoint(phoneEntryPoint)
        .addConferenceParameter(adminEmailParameter)
        .setNotes(conferenceInfo.conferenceLegalNotice);

    if (conferenceInfo.videoUri) {
      var videoEntryPoint = ConferenceDataService.newEntryPoint()
          .setEntryPointType(ConferenceDataService.EntryPointType.VIDEO)
          .setUri(conferenceInfo.videoUri)
          .setPasscode(conferenceInfo.videoPasscode);
      dataBuilder.addEntryPoint(videoEntryPoint);
    }

    // Since the conference creation request succeeded, make sure that
    // syncing has been enabled.
    initializeSyncing(calendarId, eventId, conferenceInfo.id);

  } else if (conferenceInfo.error === 'AUTH') {
    // Authenentication error. Implement a function to build the correct
    // authenication URL for the third-party conferencing system.
    var authenticationUrl = getAuthenticationUrl();
    var error = ConferenceDataService.newConferenceError()
        .setConferenceErrorType(
            ConferenceDataService.ConferenceErrorType.AUTHENTICATION)
        .setAuthenticationUrl(authenticationUrl);
    dataBuilder.setError(error);

  } else {
    // Other error type;
    var error = ConferenceDataService.newConferenceError()
        .setConferenceErrorType(
            ConferenceDataService.ConferenceErrorType.TEMPORARY);
    dataBuilder.setError(error);
  }

  // Don't forget to build the ConferenceData object.
  return dataBuilder.build();
}


/**
 *  Contact the third-party conferencing system to create a conference there,
 *  using the provided calendar event information. Collects and retuns the
 *  conference data returned by the third-party system in a custom JSON object
 *  with the following fields:
 *
 *    data.adminEmail - the conference administrator's email
 *    data.conferenceLegalNotice - the conference legal notice text
 *    data.error - Only present if there was an error during
 *         conference creation. Equal to 'AUTH' if the add-on user needs to
 *         authorize on the third-party system.
 *    data.id - the conference ID
 *    data.phoneNumber - the conference phone entry point phone number
 *    data.phonePin - the conference phone entry point PIN
 *    data.videoPasscode - the conference video entry point passcode
 *    data.videoUri - the conference video entry point URI
 *
 *  The above fields are specific to this example; which conference information
 *  your add-on needs is dependent on the third-party conferencing system
 *  requirements.
 *
 * @param {Object} calendarEvent A Calendar Event resource object returned by
 *     the Google Calendar API.
 * @return {Object}
 */
function create3rdPartyConference(calendarEvent) {
  var data = {};

  // Implementation details dependent on the third-party system API.
  // Typically one or more API calls are made to create the conference and
  // acquire its relevant data, which is then put in to the returned JSON
  // object.

  return data;
}

/**
 *  Return the URL used to authenticate the user with the third-party
 *  conferencing system.
 *
 *  @return {String}
 */
function getAuthenticationUrl() {
  var url;
  // Implementation details dependent on the third-party system.

  return url;
}