คู่มือนี้จะอธิบายวิธีการตั้งค่าและใช้บัญชีบริการเพื่อเข้าถึง Google Chat API ในนามของแอป Chat อันดับแรก ซึ่งช่วยแนะนำวิธีสร้างบัญชีบริการ จากนั้นจะสาธิตวิธีการ เพื่อเขียนสคริปต์ที่ใช้บัญชีบริการเพื่อตรวจสอบสิทธิ์กับ Chat API และโพสต์ข้อความในพื้นที่ใน Chat
แอปแชทสามารถใช้บัญชีบริการเพื่อตรวจสอบสิทธิ์เมื่อโทรแบบไม่พร้อมกัน Google Chat API เพื่อให้ทำสิ่งต่อไปนี้ได้
- ส่งข้อความไปยัง Google Chat ด้วย
spaces.messages.create
เป็น:- แจ้งเตือนผู้ใช้เมื่องานในเบื้องหลังที่ใช้เวลานานสิ้นสุดลง
- แจ้งเตือนผู้ใช้ว่าเซิร์ฟเวอร์ออฟไลน์ไป
- ขอให้ฝ่ายสนับสนุนลูกค้าดูแลเคสลูกค้าที่เปิดใหม่
- อัปเดตข้อความที่ส่งก่อนหน้านี้ด้วย
spaces.messages.update
เป็น:- เปลี่ยนสถานะของ กำลังดำเนินการ
- อัปเดตผู้ได้รับมอบหมายหรือวันที่ครบกำหนดของงาน
- แสดงรายการผู้ใช้ในพื้นที่ทำงานที่มี
spaces.members.list
ถึง:- ดูผู้ที่อยู่ในพื้นที่ทำงาน
- ยืนยันว่าการเป็นสมาชิกพื้นที่ทำงานรวมทุกคนในทีม
เมื่อตรวจสอบสิทธิ์ด้วยบัญชีบริการแล้ว เพื่อรับข้อมูลหรือดำเนินการต่างๆ ในพื้นที่ใน Chat แอป Chat จะต้องเป็นสมาชิกในพื้นที่ดังกล่าว ตัวอย่างเช่น หากต้องการ แสดงสมาชิกของพื้นที่ทำงานหรือสร้างข้อความในพื้นที่ทำงาน แอป Chat จะต้อง เป็นสมาชิกพื้นที่ทำงาน
หากแอป Chat ของคุณจำเป็นต้องเข้าถึงข้อมูลผู้ใช้หรือดำเนินการกับ แทน ให้ตรวจสอบสิทธิ์เป็นผู้ใช้แทน
หากเป็นผู้ดูแลระบบโดเมน คุณสามารถให้สิทธิ์ การมอบสิทธิ์ทั่วทั้งโดเมน เพื่อให้สิทธิ์บัญชีบริการของแอปพลิเคชันในการเข้าถึงผู้ใช้ ข้อมูลที่ไม่มี การขอให้ผู้ใช้แต่ละคนให้ความยินยอม หลังจากกำหนดค่าการมอบสิทธิ์ทั่วทั้งโดเมนแล้ว คุณสามารถ เรียก API โดยใช้บัญชีบริการของคุณเพื่อแอบอ้างเป็นบัญชีผู้ใช้ แม้ว่าจะใช้บัญชีบริการเพื่อ การตรวจสอบสิทธิ์ การมอบสิทธิ์ทั่วทั้งโดเมนจะแอบอ้างเป็นผู้ใช้ และดังนั้นจึง ถือเป็นการตรวจสอบสิทธิ์ผู้ใช้ ฟังก์ชันการทํางานใดๆ ที่ผู้ใช้ต้อง คุณสามารถใช้การมอบสิทธิ์ทั่วทั้งโดเมนได้
หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับเวลาที่แอปใน Chat กำหนดให้มีการตรวจสอบสิทธิ์ และ ประเภทการตรวจสอบสิทธิ์ที่จะใช้ โปรดดูที่ ประเภทการตรวจสอบสิทธิ์ที่จำเป็น ในภาพรวมการตรวจสอบสิทธิ์และการให้สิทธิ์ของ Chat API
ข้อกำหนดเบื้องต้น
Java
- JDK 1.7 ขึ้นไป
- เครื่องมือจัดการแพ็กเกจ Maven
-
โปรเจ็กต์ Maven เริ่มต้น หากต้องการเริ่มต้นโปรเจ็กต์ใหม่ ให้เรียกใช้คำสั่งต่อไปนี้ใน
อินเทอร์เฟซบรรทัดคำสั่ง:
mvn archetype:generate -DgroupId=com.google.chat.app.authsample -DartifactId=auth-sample-app -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
- แอป Google Chat ที่เปิดใช้ฟีเจอร์แบบอินเทอร์แอกทีฟ วิธีสร้าง แอป Chat แบบอินเทอร์แอกทีฟที่ใช้บริการ HTTP ให้ทำการเริ่มต้นอย่างรวดเร็วนี้ให้เสร็จสมบูรณ์
- เพิ่มแอป Chat ไปยังพื้นที่ทำงาน วิธีเพิ่มปุ่ม แอปใน Chat โปรดดูที่ ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat
Python
- Python 3.6 ขึ้นไป
- เครื่องมือจัดการแพ็กเกจ pip
- แอป Google Chat ที่เปิดใช้ฟีเจอร์แบบอินเทอร์แอกทีฟ วิธีสร้าง แอป Chat แบบอินเทอร์แอกทีฟที่ใช้บริการ HTTP ให้ทำการเริ่มต้นอย่างรวดเร็วนี้ให้เสร็จสมบูรณ์
- เพิ่มแอป Chat ไปยังพื้นที่ทำงาน วิธีเพิ่มปุ่ม แอปใน Chat โปรดดูที่ ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat
Node.js
- Node.js 14 ขึ้นไป
- npm เครื่องมือจัดการแพ็กเกจ
-
โปรเจ็กต์ Node.js ที่เริ่มต้นแล้ว หากต้องการเริ่มต้นโปรเจ็กต์ใหม่ ให้สร้างและ
เปลี่ยนเป็นโฟลเดอร์ใหม่ แล้วเรียกใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง
npm init
- แอป Google Chat ที่เปิดใช้ฟีเจอร์แบบอินเทอร์แอกทีฟ วิธีสร้าง แอป Chat แบบอินเทอร์แอกทีฟที่ใช้บริการ HTTP ให้ทำการเริ่มต้นอย่างรวดเร็วนี้ให้เสร็จสมบูรณ์
- เพิ่มแอป Chat ไปยังพื้นที่ทำงาน วิธีเพิ่มปุ่ม แอปใน Chat โปรดดูที่ ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat
Apps Script
- แอป Google Chat ที่เปิดใช้ฟีเจอร์แบบอินเทอร์แอกทีฟ วิธีสร้าง แอป Chat แบบอินเทอร์แอกทีฟใน Apps Script โปรดกรอกข้อมูลในการเริ่มต้นอย่างรวดเร็วนี้
- เพิ่มแอป Chat ไปยังพื้นที่ทำงาน วิธีเพิ่มปุ่ม แอปใน Chat โปรดดูที่ ทดสอบฟีเจอร์แบบอินเทอร์แอกทีฟสำหรับแอป Google Chat
ขั้นตอนที่ 1: สร้างบัญชีบริการในคอนโซล Google Cloud
สร้างบัญชีบริการที่แอป Chat ของคุณใช้ได้ เข้าถึง Google APIs
สร้างบัญชีบริการ
หากต้องการสร้างบัญชีบริการ ให้ทำตามขั้นตอนต่อไปนี้
คอนโซล Google Cloud
- ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และ ผู้ดูแลระบบ > บัญชีบริการ
- คลิกสร้างบัญชีบริการ
- กรอกรายละเอียดบัญชีบริการ แล้วคลิกสร้างและต่อไป
- ไม่บังคับ: มอบหมายบทบาทให้กับบัญชีบริการเพื่อให้สิทธิ์เข้าถึงทรัพยากรของโปรเจ็กต์ Google Cloud โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อการให้ การเปลี่ยนแปลง และการเพิกถอนสิทธิ์เข้าถึงทรัพยากร
- คลิกต่อไป
- ไม่บังคับ: ป้อนผู้ใช้หรือกลุ่มที่จัดการและดำเนินการด้วยบัญชีบริการนี้ได้ โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อการจัดการการแอบอ้างเป็นบัญชีบริการ
- คลิกเสร็จสิ้น จดอีเมลสำหรับบัญชีบริการ
gcloud CLI
- สร้างบัญชีบริการ
gcloud iam service-accounts create
SERVICE_ACCOUNT_NAME
\ --display-name="SERVICE_ACCOUNT_NAME
" - ไม่บังคับ: มอบหมายบทบาทให้กับบัญชีบริการเพื่อให้สิทธิ์เข้าถึงทรัพยากรของโปรเจ็กต์ Google Cloud โปรดดูรายละเอียดเพิ่มเติมที่หัวข้อการให้ การเปลี่ยนแปลง และการเพิกถอนสิทธิ์เข้าถึงทรัพยากร
บัญชีบริการจะปรากฏในหน้าบัญชีบริการ ต่อไป ให้สร้างวิดีโอส่วนตัว สำหรับบัญชีบริการ
สร้างคีย์ส่วนตัว
ทำตามขั้นตอนต่อไปนี้เพื่อสร้างและดาวน์โหลดคีย์ส่วนตัวสำหรับบัญชีบริการ
- ในคอนโซล Google Cloud ให้ไปที่เมนู > IAM และ ผู้ดูแลระบบ > บัญชีบริการ
- เลือกบัญชีบริการ
- คลิกคีย์ > เพิ่มคีย์ > สร้างคีย์ใหม่
- เลือก JSON แล้วคลิกสร้าง
ระบบจะสร้างคู่คีย์สาธารณะ/ส่วนตัวใหม่และดาวน์โหลดลงใน เป็นไฟล์ใหม่ บันทึกไฟล์ JSON ที่ดาวน์โหลดเป็น
credentials.json
ใน ไดเรกทอรีที่ใช้งานอยู่ ไฟล์นี้เป็นสำเนาเดียวของคีย์นี้ สำหรับข้อมูลเกี่ยวกับวิธีจัดเก็บ กุญแจของคุณอย่างปลอดภัย โปรดดู การจัดการคีย์ของบัญชีบริการ - คลิกปิด
โปรดดูข้อมูลเพิ่มเติมเกี่ยวกับบัญชีบริการที่ บัญชีบริการ ในเอกสารประกอบ Google Cloud IAM
ขั้นตอนที่ 2: ติดตั้งไลบรารีของไคลเอ็นต์ Google และทรัพยากร Dependency อื่นๆ
ติดตั้งไลบรารีไคลเอ็นต์ของ Google และการอ้างอิงอื่นๆ ที่จำเป็นสำหรับโปรเจ็กต์
Java
วิธีเพิ่มไลบรารีของไคลเอ็นต์ของ Google และทรัพยากร Dependency อื่นๆ ที่จำเป็น
สำหรับโครงการ Maven ให้แก้ไขไฟล์ pom.xml
ในไดเรกทอรีของโครงการและเพิ่ม
ทรัพยากร Dependency ต่อไปนี้
<dependencies>
<!-- ... existing dependencies ... -->
<dependency>
<groupId>com.google.apis</groupId>
<artifactId>google-api-services-chat</artifactId>
<version>v1-rev20230905-2.0.0</version>
</dependency>
<dependency>
<groupId>com.google.auth</groupId>
<artifactId>google-auth-library-oauth2-http</artifactId>
<version>1.19.0</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.10.1</version>
</dependency>
</dependencies>
Python
หากคุณยังไม่ได้ติดตั้งไลบรารีของไคลเอ็นต์ Google สำหรับ Python ให้เรียกใช้ คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง
pip3 install --upgrade google-api-python-client google-auth
Node.js
ในการเพิ่มไลบรารีไคลเอ็นต์ของ Google ลงในโปรเจ็กต์ Node.js ของคุณ ให้เปลี่ยนไปเป็น ไดเรกทอรีของโปรเจ็กต์และเรียกใช้คำสั่งต่อไปนี้ในอินเทอร์เฟซบรรทัดคำสั่ง
npm install "@googleapis/chat"
Apps Script
ตัวอย่างนี้ใช้ OAuth2 สำหรับไลบรารี Apps Script เพื่อสร้างโทเค็น JWT สำหรับการตรวจสอบสิทธิ์บัญชีบริการ วิธีเพิ่มคลัง กับโปรเจ็กต์ Apps Script ดังนี้
- คลิกตัดต่อวิดีโอ ทางด้านซ้าย
- คลิกเพิ่มคลังทางด้านซ้ายข้างห้องสมุด
- ป้อนรหัสสคริปต์
1B7FSrk5Zi6L1rSxxTDgDEUsPzlukDsi4KGuTMorsTQHhGBzBkMun4iDF
- คลิกค้นหา แล้วคลิกเพิ่ม
ตัวอย่างนี้ใช้ บริการ Chat ขั้นสูง เพื่อเรียกใช้ Google Chat API หากต้องการเปิดบริการสำหรับ โครงการ Apps Script:
- คลิกตัดต่อวิดีโอ ทางด้านซ้าย
- คลิกเพิ่มบริการทางด้านซ้ายข้างบริการ
- เลือก Google Chat API
- ในเวอร์ชัน ให้เลือก v1
- คลิกเพิ่ม
คุณจะใช้ภาษาใดก็ได้ที่ ไลบรารีของไคลเอ็นต์
ขั้นตอนที่ 3: เขียนสคริปต์ที่ใช้บัญชีบริการเพื่อตรวจสอบสิทธิ์กับ Chat API
โค้ดต่อไปนี้ตรวจสอบสิทธิ์กับ Chat API โดยใช้บัญชีบริการ จากนั้น โพสต์ข้อความไปยังพื้นที่ใน Chat:
Java
- เปิดไฟล์ในไดเรกทอรีของโปรเจ็กต์
src/main/java/com/google/chat/app/authsample/App.java
แทนที่เนื้อหาใน
App.java
ด้วยรหัสต่อไปนี้package com.google.chat.app.authsample; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpRequestInitializer; import com.google.api.client.json.gson.GsonFactory; import com.google.api.services.chat.v1.HangoutsChat; import com.google.api.services.chat.v1.model.Message; import com.google.auth.http.HttpCredentialsAdapter; import com.google.auth.oauth2.GoogleCredentials; /** * Authenticates with Chat API via service account credentials, * then creates a Chat message. */ public class App { // Specify required scopes. private static final String CHAT_SCOPE = "https://www.googleapis.com/auth/chat.bot"; // Specify service account details. private static final String PRIVATE_KEY_RESOURCE_URI = "/credentials.json"; public static void main( String[] args ) { try { // Run app. Message response = App.createChatMessage(); // Print details about the created message. System.out.println(response); } catch (Exception e) { e.printStackTrace(); } } private static Message createChatMessage() throws Exception { // Build the Chat API client and authenticate with the service account. GoogleCredentials credentials = GoogleCredentials.fromStream( App.class.getResourceAsStream(PRIVATE_KEY_RESOURCE_URI)) .createScoped(CHAT_SCOPE); HttpRequestInitializer requestInitializer = new HttpCredentialsAdapter(credentials); HangoutsChat chatService = new HangoutsChat.Builder( GoogleNetHttpTransport.newTrustedTransport(), GsonFactory.getDefaultInstance(), requestInitializer) .setApplicationName("auth-sample-app") .build(); // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. String spaceName = "spaces/SPACE_NAME"; // Create a Chat message. Message message = new Message().setText("Hello, world!"); return chatService.spaces().messages().create(spaceName, message).execute(); } }
ในโค้ด ให้แทนที่
SPACE_NAME
ด้วยการเว้นวรรค ซึ่งดาวน์โหลดได้จากspaces.list
ใน Chat API หรือจาก URL ของพื้นที่ทำงานสร้างไดเรกทอรีย่อยใหม่ชื่อ
resources
ภายในไดเรกทอรีของโปรเจ็กต์ตรวจสอบว่าตั้งชื่อไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการแล้ว
credentials.json
และคัดลอกไปยังไดเรกทอรีย่อยresources
หากต้องการกำหนดค่า Maven ให้รวมไฟล์คีย์ส่วนตัวในแพ็กเกจโปรเจ็กต์ แก้ไขไฟล์
pom.xml
ในไดเรกทอรีของโครงการและเพิ่มข้อมูลต่อไปนี้ การกำหนดค่าในส่วน<build>
:<build> <!-- ... existing configurations ... --> <resources> <resource> <directory>resources</directory> </resource> </resources> </build>
หากต้องการกำหนดค่า Maven เพื่อรวมทรัพยากร Dependency ในแพ็กเกจโปรเจ็กต์และ เพื่อเรียกใช้คลาสหลักของแอปพลิเคชันของคุณ ให้แก้ไขไฟล์
pom.xml
ใน ไดเรกทอรีของโครงการ และเพิ่มการกำหนดค่าต่อไปนี้ลงใน ส่วน<plugins>
:<plugins> <!-- ... existing configurations ... --> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <archive> <manifest> <mainClass>com.google.chat.app.authsample.App</mainClass> </manifest> </archive> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins>
Python
- สร้างไฟล์ชื่อ
chat_app_auth.py
ในไดเรกทอรีการทำงาน รวมรหัสต่อไปนี้ใน
chat_app_auth.py
:from apiclient.discovery import build from google.oauth2 import service_account # 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', scopes=SCOPES) # Build the URI and authenticate with the service account. chat = build('chat', 'v1', credentials=CREDENTIALS) # Create a Chat message. result = chat.spaces().messages().create( # The space to create the message in. # # Replace SPACE_NAME with a space name. # Obtain the space name from the spaces resource of Chat API, # or from a space's URL. parent='spaces/SPACE_NAME', # The message to create. body={'text': 'Hello, world!'} ).execute() # Prints details about the created message. print(result)
ในโค้ด ให้แทนที่
SPACE_NAME
ด้วยการเว้นวรรค ซึ่งดาวน์โหลดได้จากspaces.list
ใน Chat API หรือจาก URL ของพื้นที่ทำงาน โปรดตรวจสอบว่า ไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการชื่อcredentials.json
Node.js
- สร้างไฟล์ชื่อ
chat_app_auth.js
ในไดเรกทอรีของโปรเจ็กต์ รวมรหัสต่อไปนี้ใน
chat_app_auth.js
:const chat = require('@googleapis/chat'); async function createMessage() { const auth = new chat.auth.GoogleAuth({ // Specify service account details. keyFilename: 'credentials.json', // Specify required scopes. scopes: ['https://www.googleapis.com/auth/chat.bot'] }); const authClient = await auth.getClient(); // Create the Chat API client and authenticate with the service account. const chatClient = await chat.chat({ version: 'v1', auth: authClient }); // Create a Chat message. const result = await chatClient.spaces.messages.create({ // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. parent: 'spaces/SPACE_NAME', // The message to create. requestBody: { 'text': 'Hello, world!' } }); return result; } // Execute function then print details about the created message. createMessage().then(console.log);
ในโค้ด ให้แทนที่
SPACE_NAME
ด้วยการเว้นวรรค ซึ่งดาวน์โหลดได้จากspaces.list
ใน Chat API หรือจาก URL ของพื้นที่ทำงาน โปรดตรวจสอบว่า ไฟล์คีย์ส่วนตัวสำหรับบัญชีบริการชื่อcredentials.json
Apps Script
แก้ไขไฟล์
appsscript.json
ในเครื่องมือแก้ไข Apps Script และเพิ่มขอบเขต OAuth ที่จำเป็นในการส่งคำขอภายนอกเพื่อรับ โทเค็น OAuth ของบัญชีบริการ:"oauthScopes": [ "https://www.googleapis.com/auth/script.external_request" ]
บันทึกรหัสต่อไปนี้ในไฟล์ชื่อ
ChatAppAuth.gs
ใน โปรเจ็กต์ Apps Script ของคุณ:// Specify the contents of the file credentials.json. const CREDENTIALS = CREDENTIALS; const SCOPE = 'https://www.googleapis.com/auth/chat.bot'; // The space to create the message in. // // Replace SPACE_NAME with a space name. // Obtain the space name from the spaces resource of Chat API, // or from a space's URL. const PARENT = 'spaces/SPACE_NAME' /** * Authenticates with Chat API via app credentials, then posts a message. */ function createMessageWithAppCredentials() { try { const service = getService_(); if (!service.hasAccess()) { console.error(service.getLastError()); return; } // Specify the message to create. const message = {'text': 'Hello world!'}; // Call Chat API with a service account to create a message. const result = Chat.Spaces.Messages.create( message, PARENT, {}, // Authenticate with the service account token. {'Authorization': 'Bearer ' + service.getAccessToken()}); // Log details about the created message. console.log(result); } catch (err) { // TODO (developer) - Handle exception. console.log('Failed to create message with error %s', err.message); } } /** * Configures the OAuth library to authenticate with the service account. */ function getService_() { return OAuth2.createService(CREDENTIALS.client_email) .setTokenUrl('https://oauth2.googleapis.com/token') .setPrivateKey(CREDENTIALS.private_key) .setIssuer(CREDENTIALS.client_email) .setSubject(CREDENTIALS.client_email) .setScope(SCOPE) .setPropertyStore(PropertiesService.getScriptProperties()); }
ในโค้ด ให้แทนที่
CREDENTIALS
ด้วยค่า เนื้อหาในไฟล์credentials.json
ในโค้ด ให้แทนที่
SPACE_NAME
ด้วยการเว้นวรรค ซึ่งดาวน์โหลดได้จากspaces.list
ใน Chat API หรือจาก URL ของพื้นที่ทำงาน
ขั้นตอนที่ 4: เรียกใช้ตัวอย่างแบบเต็ม
ในไดเรกทอรีการทำงาน ให้สร้างและเรียกใช้ตัวอย่างด้วยคำสั่งต่อไปนี้
Java
mvn compile assembly:single
java -jar target/auth-sample-app-1.0-SNAPSHOT-jar-with-dependencies.jar
Python
python3 chat_app_auth.py
Node.js
node chat_app_auth.js
Apps Script
เปิดไฟล์ ChatAppAuth.gs
ในเครื่องมือแก้ไข Apps Script และ
คลิก Run
สคริปต์ของคุณได้ส่งคำขอที่ได้รับการตรวจสอบสิทธิ์ไปยัง Chat API ที่ตอบกลับด้วยการโพสต์ข้อความ ในพื้นที่ใน Chat เป็นแอป Chat
แก้ปัญหาตัวอย่าง
ส่วนนี้จะอธิบายปัญหาที่พบได้ทั่วไปซึ่งคุณอาจพบขณะพยายาม เพื่อเรียกใช้ตัวอย่างนี้
คุณไม่ได้รับอนุญาตให้ใช้แอปนี้
เมื่อเรียกใช้สคริปต์ คุณอาจได้รับข้อผิดพลาดที่ระบุว่า
<HttpError 403 when requesting https://chat.googleapis.com/v1/spaces/{space}/messages?alt=json returned "You are not permitted to use this app". Details: "You are not permitted to use this app">
ข้อความแสดงข้อผิดพลาดนี้หมายความว่าแอป Chat ไม่มี สิทธิ์ในการสร้างข้อความ Chat ใน พื้นที่ใน Chat
หากต้องการแก้ไขข้อผิดพลาด ให้เพิ่มแอป Chat ไปยังพื้นที่ใน Chat ที่ระบุไว้ในสคริปต์
หัวข้อที่เกี่ยวข้อง
ตรวจสอบ Chat API เพื่อดูว่า Chat API ทำอะไรได้บ้าง เอกสารอ้างอิง