Gelişmiş Sohbet Hizmeti

Gelişmiş Chat hizmeti, Apps Komut Dosyası'nda Google Chat API'yi kullanmanıza olanak tanır. Bu API, komut dosyalarının Chat alanlarını bulup oluşturmasına, değiştirmesine, alanlara üye eklemesine veya alanlardan üye çıkarmasına, metin, kart, ek ve tepki içeren mesajları okumasına ya da yayınlamasına olanak tanır.

Ön koşullar

Referans

Bu hizmet hakkında daha fazla bilgi için Chat API referans belgelerine göz atın. Apps Komut Dosyası'ndaki tüm gelişmiş hizmetler gibi Chat hizmeti de herkese açık API ile aynı nesneleri, yöntemleri ve parametreleri kullanır.

Örnek kod

Bu örneklerde, gelişmiş hizmeti kullanarak yaygın Google Chat API işlemlerinin nasıl yapılacağı gösterilmektedir.

Kullanıcı kimlik bilgilerini içeren bir mesaj yayınlama

Aşağıdaki örnekte, kullanıcı adına bir sohbet alanına nasıl mesaj gönderileceği gösterilmektedir.

  1. chat.messages.create yetkilendirme kapsamını Apps Komut Dosyası projesinin appsscript.json dosyasına ekleyin:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.messages.create"
    ]
    
  2. Apps Komut Dosyası projesinin koduna aşağıdaki gibi bir işlev ekleyin:

    advanced/chat.gs
    /**
     * Posts a new message to the specified space on behalf of the user.
     * @param {string} spaceName The resource name of the space.
     */
    function postMessageWithUserCredentials(spaceName) {
      try {
        const message = {'text': 'Hello world!'};
        Chat.Spaces.Messages.create(message, spaceName);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create message with error %s', err.message);
      }
    }

Uygulama kimlik bilgileriyle mesaj yayınlama

Aşağıdaki örnekte, uygulama adına bir Chat alanına nasıl mesaj gönderileceği gösterilmektedir. Gelişmiş Chat hizmetini bir hizmet hesabıyla kullanmak için appsscript.json alanında yetkilendirme kapsamlarını belirtmeniz gerekmez. Hizmet hesaplarıyla kimlik doğrulama hakkında ayrıntılı bilgi için Google Chat uygulaması olarak kimlik doğrulama başlıklı makaleyi inceleyin.

advanced/chat.gs
/**
 * Posts a new message to the specified space on behalf of the app.
 * @param {string} spaceName The resource name of the space.
 */
function postMessageWithAppCredentials(spaceName) {
  try {
    // See https://developers.google.com/chat/api/guides/auth/service-accounts
    // for details on how to obtain a service account OAuth token.
    const appToken = getToken_();
    const message = {'text': 'Hello world!'};
    Chat.Spaces.Messages.create(
        message,
        spaceName,
        {},
        // Authenticate with the service account token.
        {'Authorization': 'Bearer ' + appToken});
  } catch (err) {
    // TODO (developer) - Handle exception
    console.log('Failed to create message with error %s', err.message);
  }
}

Alan edinme

Aşağıdaki örnekte, bir Chat alanı hakkında nasıl bilgi edinileceği gösterilmektedir.

  1. chat.spaces.readonly yetkilendirme kapsamını Apps Komut Dosyası projesinin appsscript.json dosyasına ekleyin:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.readonly"
    ]
    
  2. Apps Komut Dosyası projesinin koduna aşağıdaki gibi bir işlev ekleyin:

    advanced/chat.gs
    /**
     * Gets information about a Chat space.
     * @param {string} spaceName The resource name of the space.
     */
    function getSpace(spaceName) {
      try {
        const space = Chat.Spaces.get(spaceName);
        console.log('Space display name: %s', space.displayName);
        console.log('Space type: %s', space.spaceType);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to get space with error %s', err.message);
      }
    }

Alan oluşturma

Aşağıdaki örnekte, Chat alanının nasıl oluşturulacağı gösterilmektedir.

  1. chat.spaces.create yetkilendirme kapsamını Apps Komut Dosyası projesinin appsscript.json dosyasına ekleyin:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.spaces.create"
    ]
    
  2. Apps Komut Dosyası projesinin koduna aşağıdaki gibi bir işlev ekleyin:

    advanced/chat.gs
    /**
     * Creates a new Chat space.
     */
    function createSpace() {
      try {
        const space = {'displayName': 'New Space', 'spaceType': 'SPACE'};
        Chat.Spaces.create(space);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to create space with error %s', err.message);
      }
    }

Üyelikleri listeleme

Aşağıdaki örnekte, bir sohbet alanının tüm üyelerinin nasıl listeleneceği gösterilmektedir.

  1. chat.memberships.readonly yetkilendirme kapsamını Apps Komut Dosyası projesinin appsscript.json dosyasına ekleyin:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.memberships.readonly"
    ]
    
  2. Apps Komut Dosyası projesinin koduna aşağıdaki gibi bir işlev ekleyin:

    advanced/chat.gs
    /**
     * Lists all the members of a Chat space.
     * @param {string} spaceName The resource name of the space.
     */
    function listMemberships(spaceName) {
      let response;
      let pageToken = null;
      try {
        do {
          response = Chat.Spaces.Members.list(spaceName, {
            pageSize: 10,
            pageToken: pageToken
          });
          if (!response.memberships || response.memberships.length === 0) {
            pageToken = response.nextPageToken;
            continue;
          }
          response.memberships.forEach((membership) => console.log(
              'Member resource name: %s (type: %s)',
              membership.name,
              membership.member.type));
          pageToken = response.nextPageToken;
        } while (pageToken);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed with error %s', err.message);
      }
    }

Sorun giderme

Error 400: invalid_scope ile birlikte Some requested scopes cannot be shown hata mesajıyla karşılaşırsanız Apps Script projesinin appsscript.json dosyasında herhangi bir yetkilendirme kapsamı belirtmemişsiniz demektir. Çoğu durumda Apps Script, bir komut dosyasının ihtiyaç duyduğu kapsamları otomatik olarak belirler. Ancak Chat gelişmiş hizmetini kullandığınızda komut dosyanızın kullandığı yetkilendirme kapsamlarını Apps Script projenizin manifest dosyasına manuel olarak eklemeniz gerekir. Açık kapsamları ayarlama başlıklı makaleyi inceleyin.

Hatayı çözmek için uygun yetkilendirme kapsamlarını, oauthScopes dizisinin bir parçası olarak Apps Komut Dosyası projesinin appsscript.json dosyasına ekleyin. Örneğin, spaces.messages.create yöntemini çağırmak için aşağıdakileri ekleyin:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

Sınırlar ve dikkat edilmesi gereken hususlar

Gelişmiş Chat hizmeti aşağıdakileri desteklemez:

Bir mesaj eki indirmek veya geliştirici önizleme yöntemini çağırmak için bunun yerine UrlFetchApp simgesini kullanın.