Bir kullanıcının alan okuma durumunu güncelleme

Bu rehberde, alanları okundu veya okunmadı olarak işaretlemek için Google Chat API'nin SpaceReadState kaynağında updateSpaceReadState yönteminin nasıl kullanılacağı açıklanmaktadır.

SpaceReadState kaynağı, belirli bir kullanıcının Google Chat alanında son okunan mesajıyla ilgili ayrıntıları temsil eden bir tekil kaynaktır.

Ön koşullar

Python

  • Python 3.6 veya sonraki sürümler
  • pip paket yönetimi aracı
  • Python için en yeni Google istemci kitaplıkları. Bunları yüklemek veya güncellemek için komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:

    pip3 install --upgrade google-api-python-client google-auth-oauthlib
    
  • Google Chat API'nin etkin ve yapılandırılmış olduğu bir Google Cloud projesi. Adımlar için Google Chat uygulaması oluşturma başlıklı makaleye göz atın.
  • Yetkilendirme, Chat uygulaması için yapılandırıldı. Bir kullanıcının bir alandaki okuma durumuyla ilgili ayrıntıları almak için chat.users.readstate yetkilendirme kapsamında kullanıcı kimlik doğrulaması gerekir.

Node.js

  • Node.js ve npm
  • Node.js için en yeni Google istemci kitaplıkları. Bunları yüklemek için komut satırı arayüzünüzde aşağıdaki komutu çalıştırın:

    npm install @google-cloud/local-auth @googleapis/chat
    
  • Google Chat API'nin etkin ve yapılandırılmış olduğu bir Google Cloud projesi. Adımlar için Google Chat uygulaması oluşturma başlıklı makaleye göz atın.
  • Yetkilendirme, Chat uygulaması için yapılandırıldı. Bir kullanıcının bir alandaki okuma durumuyla ilgili ayrıntıları almak için chat.users.readstate yetkilendirme kapsamında kullanıcı kimlik doğrulaması gerekir.

Apps Komut Dosyası

  • Google Chat'e erişimi olan bir Google Workspace hesabı.
  • Yayınlanmış bir Chat uygulamasıdır. Chat uygulaması oluşturmak için bu quickstart takip edin.
  • Yetkilendirme, Chat uygulaması için yapılandırıldı. Bir kullanıcının bir alandaki okuma durumuyla ilgili ayrıntıları almak için chat.users.readstate yetkilendirme kapsamında kullanıcı kimlik doğrulaması gerekir.

Arayan kullanıcının alan okuma durumunu güncelleme

Alan içindeki bir kullanıcının okuma durumunu güncellemek için isteğinize aşağıdakileri ekleyin:

  • chat.users.readstate yetkilendirme kapsamını belirtin.
  • SpaceReadState kaynağında updateSpaceReadState yöntemini çağırın.
  • Almak için alan okuma durumunun name değerini iletin. Bu, kullanıcı kimliği veya takma ad ve boşluk kimliği içerir. Boşluk okuma durumunun alınması yalnızca çağıran kullanıcının okuma durumunun alınmasını destekler. Bu durum, aşağıdakilerden biri ayarlanarak belirtilebilir:
    • me takma adı. Örneğin, users/me/spaces/SPACE/spaceReadState.
    • Arayan kullanıcının Workspace e-posta adresi. Örneğin, users/user@example.com/spaces/SPACE/spaceReadState.
    • Arayan kullanıcının kimliği. Örneğin, users/USER/spaces/SPACE/spaceReadState.
  • Güncellenecek alan okuma durumunun özelliklerini belirten ve aşağıdaki alan yollarını destekleyen updateMask parametresini iletin:
    • lastReadTime: Kullanıcının alan okuma durumunun güncellendiği zaman. Genellikle bu, son okunan mesajın zaman damgasına veya kullanıcı tarafından bir alandaki son okunma konumunu işaretlemek için belirtilen zaman damgasına karşılık gelir. lastReadTime, en son mesaj oluşturma zamanından önce olduğunda, alan kullanıcı arayüzünde okunmamış olarak görünür. Alanı okundu olarak işaretlemek için lastReadTime değerini en son mesaj oluşturma zamanından sonraki (daha büyük) bir değere ayarlayın. lastReadTime, en son mesaj oluşturma zamanına göre zorlandı. Alan okuma durumunun yalnızca alanın üst düzey görüşmesinde görünen mesajların okunma durumunu etkilediğini unutmayın. İleti dizilerindeki yanıtlar bu zaman damgasından etkilenmez ve bunun yerine ileti dizisinin okuma durumunu kullanır.

Aşağıdaki örnekte, arayan kullanıcının alan okuma durumu güncellenir:

Python

  1. Çalışma dizininizde chat_spaceReadState_update.py adında bir dosya oluşturun.
  2. chat_spaceReadState_update.py içine şu kodu ekleyin:

    from google_auth_oauthlib.flow import InstalledAppFlow
    from googleapiclient.discovery import build
    
    # Define your app's authorization scopes.
    # When modifying these scopes, delete the file token.json, if it exists.
    SCOPES = ["https://www.googleapis.com/auth/chat.users.readstate"]
    
    def main():
        '''
        Authenticates with Chat API via user credentials,
        then updates the space read state for the calling user.
        '''
    
        # Authenticate with Google Workspace
        # and get user authorization.
        flow = InstalledAppFlow.from_client_secrets_file(
                          'client_secrets.json', SCOPES)
        creds = flow.run_local_server()
    
        # Build a service endpoint for Chat API.
        chat = build('chat', 'v1', credentials=creds)
    
        # Use the service endpoint to call Chat API.
        result = chat.users().spaces().updateSpaceReadState(
    
            # The space read state to update.
            #
            # Replace USER with the calling user's ID, Workspace email,
            # or the alias me.
            #
            # Replace SPACE with a space name.
            # Obtain the space name from the spaces resource of Chat API,
            # or from a space's URL.
            name='users/me/spaces/SPACE/spaceReadState',
            updateMask='lastReadTime',
            body={'lastReadTime': f'{datetime.datetime(2000, 1, 3).isoformat()}Z'}
    
          ).execute()
    
        # Prints the API's response.
        print(result)
    
    if __name__ == '__main__':
        main()
    
  3. Kodda aşağıdakileri değiştirin:

  4. Çalışma dizininizde örneği derleyip çalıştırın:

    python3 chat_spaceReadState_update.py
    

Node.js

  1. Çalışma dizininizde chat_spaceReadState_update.js adında bir dosya oluşturun.
  2. chat_spaceReadState_update içine şu kodu ekleyin:

    const chat = require('@googleapis/chat');
    const {authenticate} = require('@google-cloud/local-auth');
    
    /**
    * Authenticates with Chat API via user credentials,
    * then updates the space read state for the calling user.
    * @return {!Promise<!Object>}
    */
    async function updateSpaceReadState() {
    
      /**
      * Authenticate with Google Workspace
      * and get user authorization.
      */
      const scopes = [
        'https://www.googleapis.com/auth/chat.users.readstate',
      ];
    
      const authClient =
          await authenticate({scopes, keyfilePath: 'client_secrets.json'});
    
      /**
      * Build a service endpoint for Chat API.
      */
      const chatClient = await chat.chat({version: 'v1', auth: authClient});
    
      /**
      * Use the service endpoint to call Chat API.
      */
      return await chatClient.users.spaces.updateSpaceReadState({
    
        /**
        * The space read state to update.
        *
        * Replace USER with the calling user's ID, Workspace email,
        * or the alias me.
        *
        * Replace SPACE with a space name.
        * Obtain the space name from the spaces resource of Chat API,
        * or from a space's URL.
        */
        name: 'users/me/spaces/SPACE/spaceReadState',
        updateMask: 'lastReadTime',
        requestBody: {
          lastReadTime: '{datetime.datetime(2000, 1, 3).isoformat()}Z'
        }
      });
    }
    
    /**
    * Use the service endpoint to call Chat API.
    */
    getSpaceReadState().then(console.log);
    
  3. Kodda aşağıdakileri değiştirin:

  4. Çalışma dizininizde örneği derleyip çalıştırın:

    node chat_spaceReadState_update.js
    

Apps Komut Dosyası

Bu örnek, Gelişmiş Sohbet Hizmeti'ni kullanan Chat API'yi çağırır.

  1. chat.users.readstate yetkilendirme kapsamını, Apps Komut Dosyası projesinin appsscript.json dosyasına ekleyin:

    "oauthScopes": [
      "https://www.googleapis.com/auth/chat.users.readstate"
    ]
    
  2. Apps Komut Dosyası projesinin koduna şunun gibi bir işlev ekleyin:

    /**
    * Authenticates with Chat API via user credentials,
    * then updates the space read state for the calling user.
    * @param {string} spaceReadStateName The resource name of the space read state.
    */
    function updateSpaceReadState(spaceReadStateName) {
      try {
        const time = new Date('January 1, 2000')).toJSON();
        const body = {'lastReadTime': time};
        Chat.Users.Spaces.updateSpaceReadState(spaceReadStateName, body);
      } catch (err) {
        // TODO (developer) - Handle exception
        console.log('Failed to update read state with error %s', err.message);
      }
    }
    

Google Chat API, belirtilen alanın okuma durumunu günceller ve SpaceReadState kaynağının bir örneğini döndürür.