این راهنما نحوه استفاده از روش patch
در منبع Message
Google Chat API را برای بهروزرسانی پیام نوشتاری یا کارتی در یک فضا توضیح میدهد. برای تغییر ویژگیهای پیام، مانند آنچه میگوید، یا محتوای کارت، یک پیام را بهروزرسانی کنید. همچنین می توانید یک پیام متنی را به پیام کارت اضافه کنید، یا یک کارت را به پیام متنی اضافه کنید.
Chat API از روش update
نیز پشتیبانی میکند، اما اکیداً توصیه میکنیم که متد patch
را فراخوانی کنید زیرا از یک درخواست HTTP PATCH
استفاده میکند در حالی که update
از درخواست PUT
HTTP استفاده میکند. برای کسب اطلاعات بیشتر، به بخش PATCH
and PUT
AIP-134 مراجعه کنید.
در Chat API، یک پیام Chat توسط منبع Message
نمایش داده می شود. در حالی که کاربران چت فقط میتوانند پیامهایی ارسال کنند که حاوی متن هستند، برنامههای چت میتوانند از بسیاری از ویژگیهای پیامرسانی دیگر، از جمله نمایش رابطهای کاربری استاتیک یا تعاملی، جمعآوری اطلاعات از کاربران، و ارسال پیامها به صورت خصوصی استفاده کنند. برای اطلاعات بیشتر درباره ویژگیهای پیامرسانی موجود برای Chat API، به نمای کلی پیامهای گپ Google مراجعه کنید.
پیش نیازها
پایتون
- یک حساب Google Workspace تجاری یا سازمانی با دسترسی به Google Chat .
- محیط خود را تنظیم کنید:
- یک پروژه Google Cloud ایجاد کنید .
- صفحه رضایت OAuth را پیکربندی کنید .
- Google Chat API را با نام، نماد و توضیحات برای برنامه Chat خود فعال و پیکربندی کنید .
- کتابخانه Google API Client Python را نصب کنید.
- اعتبارنامه دسترسی را بر اساس نحوه احراز هویت در درخواست Google Chat API خود ایجاد کنید:
- برای احراز هویت به عنوان کاربر چت، اعتبارنامه های شناسه مشتری OAuth را ایجاد کنید و اعتبارنامه ها را به عنوان یک فایل JSON با نام
client_secrets.json
در فهرست محلی خود ذخیره کنید. - برای احراز هویت بهعنوان برنامه چت، اعتبار حساب سرویس ایجاد کنید و اعتبارنامهها را بهعنوان فایل JSON با نام
credentials.json
ذخیره کنید.
- برای احراز هویت به عنوان کاربر چت، اعتبارنامه های شناسه مشتری OAuth را ایجاد کنید و اعتبارنامه ها را به عنوان یک فایل JSON با نام
- بر اساس اینکه میخواهید بهعنوان کاربر یا برنامه چت احراز هویت کنید ، محدوده مجوز را انتخاب کنید .
یک پیام متنی را به روز کنید، یا یک پیام متنی را به پیام کارتی، با احراز هویت کاربر اضافه کنید
برای به روز رسانی یک پیام متنی با احراز هویت کاربر ، موارد زیر را در درخواست خود ارسال کنید:
- محدوده مجوز
chat.messages
. -
name
پیام برای به روز رسانی. -
updateMask='text'
-
body
ای که پیام به روز شده را مشخص می کند.
اگر پیام بهروزرسانیشده یک پیام کارتی باشد، پیام متنی به پیام کارت اضافه میشود (که همچنان نمایش داده میشود).
در اینجا نحوه به روز رسانی یک پیام متنی ، یا اضافه کردن یک پیام متنی به پیام کارت با احراز هویت کاربر آورده شده است:
پایتون
- در پوشه کاری خود، فایلی با نام
chat_update_text_message_user.py
ایجاد کنید. کد زیر را در
chat_update_text_message_user.py
قرار دهید: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.messages"] def main(): ''' Authenticates with Chat API via user credentials, then updates a message. ''' # 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) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text', body={'text': 'Updated message!'} ).execute() # Prints details about the updated message. print(result) if __name__ == '__main__': main()
در کد زیر را جایگزین کنید:
-
SPACE
: نام فضایی است که می توانید از روشspaces.list
در Chat API یا از URL یک فضا دریافت کنید. -
MESSAGE
: نام پیامی است که می توانید آن را از بدنه پاسخی که پس از ایجاد پیام به طور ناهمزمان با Chat API یا با نام سفارشی اختصاص داده شده به پیام در هنگام ایجاد، بازگردانده شده است، دریافت کنید.
-
در پوشه کاری خود، نمونه را بسازید و اجرا کنید:
python3 chat_update_text_message_user.py
با احراز هویت برنامه، یک پیام متنی را به روز کنید یا یک پیام متنی را به پیام کارت اضافه کنید
برای بهروزرسانی یک پیام متنی با تأیید اعتبار برنامه ، موارد زیر را در درخواست خود ارسال کنید:
- محدوده مجوز
chat.bot
. -
name
پیام برای به روز رسانی. -
updateMask='text'
-
body
ای که پیام به روز شده را مشخص می کند.
اگر پیام بهروزرسانیشده یک پیام کارتی باشد، پیام متنی به پیام کارت اضافه میشود (که همچنان نمایش داده میشود).
در اینجا نحوه به روز رسانی یک پیام متنی به یک پیام متنی یا اضافه کردن یک پیام متنی به پیام کارت با تأیید اعتبار برنامه آمده است :
پایتون
- در فهرست کاری خود، فایلی با نام
chat_update_text_message_app.py
ایجاد کنید. کد زیر را در
chat_update_text_message_app.py
قرار دهید:from google.oauth2 import service_account from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ( service_account.Credentials.from_service_account_file('credentials.json') .with_scopes(SCOPES) ) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text', body={'text': 'Updated message!'} ).execute() # Print Chat API's response in your command line interface. print(result)
در کد زیر را جایگزین کنید:
-
SPACE
: نام فضایی است که می توانید از روشspaces.list
در Chat API یا از URL یک فضا دریافت کنید. -
MESSAGE
: نام پیامی است که می توانید آن را از بدنه پاسخی که پس از ایجاد پیام به طور ناهمزمان با Chat API یا با نام سفارشی اختصاص داده شده به پیام در هنگام ایجاد، بازگردانده شده است، دریافت کنید.
-
در پوشه کاری خود، نمونه را بسازید و اجرا کنید:
python3 chat_update_text_message_app.py
یک پیام کارت را به روز کنید، یا یک پیام کارت را به یک پیام متنی اضافه کنید
برای بهروزرسانی پیام کارت ، موارد زیر را در درخواست خود ارسال کنید:
- محدوده مجوز
chat.bot
. بهروزرسانی پیام کارت به تأیید اعتبار برنامه نیاز دارد. -
name
پیام برای به روز رسانی. -
updateMask='cardsV2'
-
body
ای که پیام به روز شده را مشخص می کند.
اگر پیام به روز شده یک پیام متنی است، یک کارت به پیام متنی اضافه می شود (که همچنان نمایش داده می شود). اگر پیام به روز شده خود یک کارت باشد، کارت نمایش داده شده به روز می شود.
در اینجا نحوه به روز رسانی پیام به پیام کارت آمده است:
پایتون
- در فهرست کاری خود، یک فایل با نام
chat_update_card_message.py
ایجاد کنید. کد زیر را در
chat_update_card_message.py
قرار دهید:from google.oauth2 import service_account from apiclient.discovery import build # Specify required scopes. SCOPES = ['https://www.googleapis.com/auth/chat.bot'] # Specify service account details. CREDENTIALS = ( service_account.Credentials.from_service_account_file('credentials.json') .with_scopes(SCOPES) ) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='cardsV2', body= { 'cardsV2': [{ 'cardId': 'updateCardMessage', 'card': { 'header': { 'title': 'An Updated Card Message!', 'subtitle': 'Updated with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() # Print Chat API's response in your command line interface. print(result)
در کد زیر را جایگزین کنید:
SPACE
: نام فضایی است که می توانید از روشspaces.list
در Chat API یا از URL یک فضا دریافت کنید.MESSAGE
: نام پیامی است که می توانید آن را از بدنه پاسخی که پس از ایجاد پیام به طور ناهمزمان با Chat API یا با نام سفارشی اختصاص داده شده به پیام در هنگام ایجاد، بازگردانده شده است، دریافت کنید.
در پوشه کاری خود، نمونه را بسازید و اجرا کنید:
python3 chat_update_card_message.py
Chat API نمونهای از Message
را برمیگرداند که پیامی را که بهروزرسانی میشود، جزئیات میدهد.
یک پیام را با چندین مسیر فیلد به طور همزمان به روز کنید
هنگامی که یک پیام به روز می شود، می توانید چندین مسیر فیلد پیام را در آن زمان به روز کنید. برای مثال، در یک درخواست پیام بهروزرسانی، میتوانید تغییر مسیرهای فیلد text
و cardsv2
را به طور همزمان مشخص کنید که هم متن و هم کارت پیام را بهروزرسانی میکند. اگر پیام فقط شامل متن و بدون کارت باشد، یک کارت به پیام اضافه می شود. برای اطلاعات بیشتر در مورد مسیرهای فیلد پشتیبانی شده، به پارامترهای updateMask
مراجعه کنید.
برای به روز رسانی text
و card
یک پیام با احراز هویت کاربر ، موارد زیر را در درخواست خود ارسال کنید:
- محدوده مجوز
chat.messages
. -
name
پیام برای به روز رسانی. یک
updateMask
که مسیرهای فیلد پیام برای بهروزرسانی را مشخص میکند که با کاما از هم جدا شدهاند:updateMask='text', 'cardsV2'
.body
ای که پیام به روز شده را شامل تمام مسیرهای فیلد به روز شده مشخص می کند.
در اینجا نحوه به روز رسانی مسیرهای فیلد text
و cardsV2
در یک پیام با احراز هویت کاربر آورده شده است:
پایتون
- در پوشه کاری خود، فایلی با نام
chat_update_text_message_user.py
ایجاد کنید. کد زیر را در
chat_update_text_message_user.py
قرار دهید: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.messages"] def main(): ''' Authenticates with Chat API via user credentials, then updates a message. ''' # 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) # Update a Chat message. result = chat.spaces().messages().patch( # The message to update, and the updated message. # # Replace SPACE with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. # # Replace MESSAGE with a message name. # Obtain the message name from the response body returned # after creating a message asynchronously with Chat REST API. name='spaces/SPACE/messages/MESSAGE', updateMask='text,cardsV2', body= {'text': 'Updated message!', 'cardsV2': [{ 'cardId': 'updateCardMessage', 'card': { 'header': { 'title': 'An Updated Card Message!', 'subtitle': 'Updated with Chat REST API', 'imageUrl': 'https://developers.google.com/chat/images/chat-product-icon.png', 'imageType': 'CIRCLE' }, 'sections': [ { 'widgets': [ { 'buttonList': { 'buttons': [ { 'text': 'Read the docs!', 'onClick': { 'openLink': { 'url': 'https://developers.google.com/chat' } } } ] } } ] } ] } }] } ).execute() # Prints details about the updated message. print(result) if __name__ == '__main__': main()
در کد زیر را جایگزین کنید:
-
SPACE
: نام فضایی است که می توانید از روشspaces.list
در Chat API یا از URL یک فضا دریافت کنید. -
MESSAGE
: نام پیامی است که می توانید آن را از بدنه پاسخی که پس از ایجاد پیام به طور ناهمزمان با Chat API یا با نام سفارشی اختصاص داده شده به پیام در هنگام ایجاد، بازگردانده شده است، دریافت کنید.
-
در پوشه کاری خود، نمونه را بسازید و اجرا کنید:
python3 chat_update_text_message_user.py
موضوعات مرتبط
- یک پیام را قالب بندی کنید .
- یک پیام را حذف کنید .
- دریافت جزئیات در مورد یک پیام
- لیست پیام ها در یک فاصله
- پیام بدید .