این صفحه نحوه ایجاد یک برنامه چت که رویدادها را از چت با استفاده از Cloud Pub/Sub دریافت میکند را توضیح میدهد. این معماری در صورتی مفید است که برنامه چت شما پشت فایروال باشد یا اگر میخواهید رویدادهای مربوط به یک فضای چت یا کاربر را با Google Workspace Events API ارسال یا دریافت کنید.
نمودار زیر معماری یک برنامه چت ساخته شده با Pub/Sub را نشان میدهد:
در نمودار قبلی، کاربری که با یک برنامه Pub/Sub Chat در تعامل است، جریان اطلاعات زیر را دارد:
یک کاربر با برنامه چت، مثلاً با ارسال پیام، صدور دستور یا اضافه کردن یا حذف آن از فضای چت، تعامل میکند.
چت، پیام را به یک موضوع Pub/Sub ارسال میکند.
یک سرور برنامه، که میتواند یک سیستم ابری یا داخلی باشد و شامل منطق برنامه چت باشد، برای دریافت پیام از طریق فایروال، در موضوع Pub/Sub مشترک میشود.
به صورت اختیاری، برنامه چت میتواند API چت را برای ارسال پیامها یا انجام سایر عملیات به صورت غیرهمزمان فراخوانی کند.
پیشنیازها
نود جی اس
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- یک پروژه Google Cloud با قابلیت پرداخت فعال. برای بررسی اینکه آیا پرداخت در یک پروژه موجود فعال است یا خیر، به تأیید وضعیت پرداخت پروژههای خود مراجعه کنید. برای ایجاد یک پروژه و تنظیم پرداخت، به ایجاد یک پروژه Google Cloud مراجعه کنید.
- Node.js نسخه ۱۴ یا بالاتر
- ابزار مدیریت بسته npm
- یک پروژه Node.js مقداردهی اولیه شده. برای مقداردهی اولیه یک پروژه جدید، یک پوشه جدید ایجاد کرده و به آن بروید، سپس دستور زیر را در رابط خط فرمان خود اجرا کنید:
npm init
پایتون
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- یک پروژه Google Cloud با قابلیت پرداخت فعال. برای بررسی اینکه آیا پرداخت در یک پروژه موجود فعال است یا خیر، به تأیید وضعیت پرداخت پروژههای خود مراجعه کنید. برای ایجاد یک پروژه و تنظیم پرداخت، به ایجاد یک پروژه Google Cloud مراجعه کنید.
- پایتون ۳.۶ یا بالاتر
- ابزار مدیریت بسته pip
جاوا
- یک حساب کاربری تجاری یا سازمانی Google Workspace با دسترسی به Google Chat .
- یک پروژه Google Cloud با قابلیت پرداخت فعال. برای بررسی اینکه آیا پرداخت در یک پروژه موجود فعال است یا خیر، به تأیید وضعیت پرداخت پروژههای خود مراجعه کنید. برای ایجاد یک پروژه و تنظیم پرداخت، به ایجاد یک پروژه Google Cloud مراجعه کنید.
- جاوا ۱۱ یا بالاتر
- ابزار مدیریت بسته Maven
فعال کردن APIها
قبل از استفاده از APIهای گوگل، باید آنها را در یک پروژه گوگل کلود فعال کنید. میتوانید یک یا چند API را در یک پروژه گوگل کلود فعال کنید.در کنسول گوگل کلود، Google Chat API و Pub/Sub API را فعال کنید.
راهاندازی Pub/Sub
یک تاپیک Pub/Sub ایجاد کنید که Chat API بتواند به آن پیام ارسال کند. توصیه میکنیم برای هر برنامه چت از یک تاپیک واحد استفاده کنید.
یک حساب کاربری سرویس برای برنامه چت ایجاد کنید تا با Pub/Sub و Chat مجوزدهی شود و فایل کلید خصوصی را در دایرکتوری کاری خود ذخیره کنید.
نقش مشترک منتشرکننده/زیرمشترک را در اشتراک حساب سرویسی که قبلاً ایجاد کردهاید، تعیین کنید .
فیلمنامه را بنویسید
در این بخش، منطق برنامه را برای برنامه چت خود تعریف میکنید. اسکریپتی مینویسید که با Google Cloud احراز هویت میشود و در تاپیک Pub/Sub مشترک میشود تا رویدادهایی را از چت دریافت کند، مانند زمانی که کاربر پیامی را به برنامه چت شما ارسال میکند.
وقتی اسکریپت پیامی دریافت میکند، دادههای رویداد را پردازش میکند و از API چت گوگل برای ارسال پاسخ به کاربر یا فضا استفاده میکند. این تنظیمات به برنامه چت شما اجازه میدهد تا در حالی که همچنان با کاربران چت در تعامل است، پشت یک فایروال عمل کند.
نود جی اس
در یک رابط خط فرمان (CLI)، اعتبارنامههای حساب سرویس را ارائه دهید :
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHدر یک رابط خط فرمان (CLI)، شناسه پروژه Google Cloud را ارائه دهید:
export PROJECT_ID=PROJECT_IDدر یک رابط خط فرمان (CLI)، شناسه اشتراک (sub) را برای اشتراک Pub/Sub که قبلاً ایجاد کردهاید، ارائه دهید:
export SUBSCRIPTION_ID=SUBSCRIPTION_IDدر دایرکتوری کاری خود، فایلی با نام
package.jsonایجاد کنید.در فایل
package.json، کد زیر را قرار دهید:{ "name": "pub-sub-app", "version": "1.0.0", "description": "Google Chat App that listens for messages via Cloud Pub/Sub", "main": "index.js", "scripts": { "start": "node index.js", "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies": { "@google-apps/chat": "^0.4.0", "@google-cloud/pubsub": "^4.5.0" }, "license": "Apache-2.0" }در دایرکتوری کاری خود، فایلی با نام
index.jsایجاد کنید.در
index.js، کد زیر را قرار دهید:const {ChatServiceClient} = require('@google-apps/chat'); const {MessageReplyOption} = require('@google-apps/chat').protos.google.chat.v1.CreateMessageRequest; const {PubSub} = require('@google-cloud/pubsub'); const {SubscriberClient} = require('@google-cloud/pubsub/build/src/v1'); // Receives messages from a pull subscription. function receiveMessages() { const chat = new ChatServiceClient({ keyFile: process.env.GOOGLE_APPLICATION_CREDENTIALS, scopes: ['https://www.googleapis.com/auth/chat.bot'], }); const subscriptionPath = new SubscriberClient() .subscriptionPath(process.env.PROJECT_ID, process.env.SUBSCRIPTION_ID) const subscription = new PubSub() .subscription(subscriptionPath); // Handle incoming message, then acknowledge the received message const messageHandler = message => { console.log(`Id : ${message.id}`); const event = JSON.parse(message.data); console.log(`Data : ${JSON.stringify(event)}`); // Post the response to Google Chat. const request = formatRequest(event); if (request != null) { chat.createMessage(request); } // Acknowledge the message. message.ack(); } subscription.on('message', messageHandler); console.log(`Listening for messages on ${subscriptionPath}`); // Keep main thread from exiting while waiting for messages setTimeout(() => { subscription.removeListener('message', messageHandler); console.log(`Stopped listening for messages.`); }, 60 * 1000); } // Send message to Google Chat based on the type of event function formatRequest(event) { const chatEvent = event.chat || {}; // If the app was removed, we don't respond. if (chatEvent.removedFromSpacePayload) { console.log(`App removed from space.`); return null; } const payload = chatEvent.messagePayload || chatEvent.addedToSpacePayload; const spaceName = payload?.space?.name; if (!spaceName) { console.log('No space name in event.'); return null; } if (chatEvent.addedToSpacePayload) { // An app can also be added to a space by @mentioning it in a // message. In that case, we fall through to the message case // and let the app respond. If the app was added using the // invite flow, we just post a thank you message in the space. return { parent: spaceName, message: { text: 'Thank you for adding me!' }, }; } else if (chatEvent.messagePayload) { // In case of message, post the response in the same thread. const message = chatEvent.messagePayload.message; return { parent: spaceName, messageReplyOption: MessageReplyOption.REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD, message: { text: 'You said: `' + message.text + '`', thread: { name: message.thread.name }, }, }; } } if (!process.env.PROJECT_ID) { console.log('Missing PROJECT_ID env var.'); process.exit(1); } if (!process.env.SUBSCRIPTION_ID) { console.log('Missing SUBSCRIPTION_ID env var.'); process.exit(1); } if (!process.env.GOOGLE_APPLICATION_CREDENTIALS) { console.log('Missing GOOGLE_APPLICATION_CREDENTIALS env var.'); process.exit(1); } receiveMessages();
پایتون
در یک رابط خط فرمان (CLI)، اعتبارنامههای حساب سرویس را ارائه دهید :
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHدر یک رابط خط فرمان (CLI)، شناسه پروژه Google Cloud را ارائه دهید:
export PROJECT_ID=PROJECT_IDدر یک رابط خط فرمان (CLI)، شناسه اشتراک (sub) را برای اشتراک Pub/Sub که قبلاً ایجاد کردهاید، ارائه دهید:
export SUBSCRIPTION_ID=SUBSCRIPTION_IDدر دایرکتوری کاری خود، فایلی با نام
requirements.txtایجاد کنید.در فایل
requirements.txt، کد زیر را وارد کنید:google-cloud-pubsub>=2.23.0 google-apps-chat==0.1.9در دایرکتوری کاری خود، فایلی با نام
app.pyایجاد کنید.در
app.py، کد زیر را قرار دهید:import json import logging import os import sys import time from google.apps import chat_v1 as google_chat from google.cloud import pubsub_v1 from google.oauth2.service_account import Credentials def receive_messages(): """Receives messages from a pull subscription.""" scopes = ['https://www.googleapis.com/auth/chat.bot'] service_account_key_path = os.environ.get('GOOGLE_APPLICATION_CREDENTIALS') creds = Credentials.from_service_account_file(service_account_key_path) chat = google_chat.ChatServiceClient( credentials=creds, client_options={'scopes': scopes} ) project_id = os.environ.get('PROJECT_ID') subscription_id = os.environ.get('SUBSCRIPTION_ID') subscriber = pubsub_v1.SubscriberClient() subscription_path = subscriber.subscription_path(project_id, subscription_id) # Handle incoming message, then acknowledge the received message def callback(message): event = json.loads(message.data) logging.info('Data : %s', event) # Post the response to Google Chat. request = format_request(event) if request is not None: chat.create_message(request) # Acknowledge the message. message.ack() subscriber.subscribe(subscription_path, callback = callback) logging.info('Listening for messages on %s', subscription_path) # Keep main thread from exiting while waiting for messages while True: time.sleep(60) def format_request(event): """Send message to Google Chat based on the type of event. Args: event: A dictionary with the event data. """ chat_event = event.get('chat', {}) # If the app was removed, we don't respond. if 'removedFromSpacePayload' in chat_event: logging.info('App removed from space.') return payload = chat_event.get('messagePayload') or chat_event.get( 'addedToSpacePayload' ) space_name = payload.get('space', {}).get('name') if payload else None if not space_name: logging.warning('No space name in event.') return if 'addedToSpacePayload' in chat_event: # An app can also be added to a space by @mentioning it in a # message. In that case, we fall through to the message case # and let the app respond. If the app was added using the # invite flow, we just post a thank you message in the space. return google_chat.CreateMessageRequest( parent = space_name, message = { 'text': 'Thank you for adding me!' } ) elif 'messagePayload' in chat_event: # In case of message, post the response in the same thread. message = chat_event['messagePayload']['message'] return google_chat.CreateMessageRequest( parent = space_name, message_reply_option = google_chat.CreateMessageRequest.MessageReplyOption.REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD, message = { 'text': 'You said: `' + message['text'] + '`', 'thread': { 'name': message['thread']['name'] } } ) if __name__ == '__main__': if 'PROJECT_ID' not in os.environ: logging.error('Missing PROJECT_ID env var.') sys.exit(1) if 'SUBSCRIPTION_ID' not in os.environ: logging.error('Missing SUBSCRIPTION_ID env var.') sys.exit(1) if 'GOOGLE_APPLICATION_CREDENTIALS' not in os.environ: logging.error('Missing GOOGLE_APPLICATION_CREDENTIALS env var.') sys.exit(1) logging.basicConfig( level=logging.INFO, style='{', format='{levelname:.1}{asctime} {filename}:{lineno}] {message}') receive_messages()
جاوا
در یک رابط خط فرمان (CLI)، اعتبارنامههای حساب سرویس را ارائه دهید :
export GOOGLE_APPLICATION_CREDENTIALS=SERVICE_ACCOUNT_FILE_PATHدر یک رابط خط فرمان (CLI)، شناسه پروژه Google Cloud را ارائه دهید:
export PROJECT_ID=PROJECT_IDدر یک رابط خط فرمان (CLI)، شناسه اشتراک (sub) را برای اشتراک Pub/Sub که قبلاً ایجاد کردهاید، ارائه دهید:
export SUBSCRIPTION_ID=SUBSCRIPTION_IDدر دایرکتوری کاری خود، فایلی با نام
pom.xmlایجاد کنید.در فایل
pom.xml، کد زیر را قرار دهید:<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.google.chat.addon</groupId> <artifactId>pubsub-addon-chat-app</artifactId> <version>0.1.0</version> <name>pubsub-addon-chat-app-java</name> <properties> <maven.compiler.release>11</maven.compiler.release> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <dependencyManagement> <dependencies> <dependency> <groupId>com.google.cloud</groupId> <artifactId>libraries-bom</artifactId> <version>26.41.0</version> <!-- Use a recent BOM version --> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Google Chat GAPIC library --> <dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-chat</artifactId> </dependency> <!-- Google Cloud Pub/Sub library --> <dependency> <groupId>com.google.cloud</groupId> <artifactId>google-cloud-pubsub</artifactId> </dependency> <!-- Google Apps Add-ons Event Object --> <dependency> <groupId>com.google.apps.addons.v1</groupId> <artifactId>google-apps-addons-v1-java</artifactId> <version>0.2.0</version> <!-- Check for latest version --> </dependency> <!-- Protobuf JSON utility --> <dependency> <groupId>com.google.protobuf</groupId> <artifactId>protobuf-java-util</artifactId> </dependency> <!-- Google Auth Library --> <dependency> <groupId>com.google.auth</groupId> <artifactId>google-auth-library-oauth2-http</artifactId> </dependency> <dependency> <groupId>com.google.api</groupId> <artifactId>gax</artifactId> </dependency> <!-- JSON utilities for PubSub message (if needed, though protobuf-java-util is primary for EventObject) --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.14.2</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-jdk14</artifactId> <version>1.7.36</version> <scope>runtime</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.13.0</version> <configuration> <source>11</source> <target>11</target> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>3.3.0</version> <configuration> <mainClass>Main</mainClass> </configuration> </plugin> </plugins> </build> </project>در دایرکتوری کاری خود، ساختار دایرکتوری
src/main/javaرا ایجاد کنید.در پوشه
src/main/java، فایلی با نامMain.javaایجاد کنید.در
Main.java، کد زیر را قرار دهید:import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.api.gax.core.FixedCredentialsProvider; import com.google.auth.oauth2.GoogleCredentials; import com.google.chat.v1.ChatServiceClient; import com.google.chat.v1.ChatServiceSettings; import com.google.chat.v1.CreateMessageRequest; import com.google.chat.v1.CreateMessageRequest.MessageReplyOption; import com.google.chat.v1.Message; import com.google.chat.v1.Thread; import com.google.cloud.pubsub.v1.AckReplyConsumer; import com.google.cloud.pubsub.v1.MessageReceiver; import com.google.cloud.pubsub.v1.Subscriber; import com.google.pubsub.v1.ProjectSubscriptionName; import com.google.pubsub.v1.PubsubMessage; import java.io.FileInputStream; import java.util.Collections; public class Main { public static final String PROJECT_ID_ENV_PROPERTY = "PROJECT_ID"; public static final String SUBSCRIPTION_ID_ENV_PROPERTY = "SUBSCRIPTION_ID"; public static final String CREDENTIALS_PATH_ENV_PROPERTY = "GOOGLE_APPLICATION_CREDENTIALS"; public static void main(String[] args) throws Exception { ProjectSubscriptionName subscriptionName = ProjectSubscriptionName.of( System.getenv(Main.PROJECT_ID_ENV_PROPERTY), System.getenv(Main.SUBSCRIPTION_ID_ENV_PROPERTY)); // Instantiate app, which implements an asynchronous message receiver. EchoApp echoApp = new EchoApp(); // Create a subscriber for <var>SUBSCRIPTION_ID</var> bound to the message receiver final Subscriber subscriber = Subscriber.newBuilder(subscriptionName, echoApp).build(); System.out.println("Subscriber is listening to events..."); subscriber.startAsync(); // Wait for termination subscriber.awaitTerminated(); } } /** * A demo app which implements {@link MessageReceiver} to receive messages. * It echoes incoming messages. */ class EchoApp implements MessageReceiver { // Path to the private key JSON file of the service account to be used for posting response // messages to Google Chat. // In this demo, we are using the same service account for authorizing with Cloud Pub/Sub to // receive messages and authorizing with Google Chat to post messages. If you are using // different service accounts, set the path to the private key JSON file of the service // account used to post messages to Google Chat here. private static final String SERVICE_ACCOUNT_KEY_PATH = System.getenv(Main.CREDENTIALS_PATH_ENV_PROPERTY); // Developer code for Google Chat API scope. private static final String GOOGLE_CHAT_API_SCOPE = "https://www.googleapis.com/auth/chat.bot"; private static final String ADDED_RESPONSE = "Thank you for adding me!"; ChatServiceClient chatServiceClient; EchoApp() throws Exception { GoogleCredentials credential = GoogleCredentials.fromStream(new FileInputStream(SERVICE_ACCOUNT_KEY_PATH)) .createScoped(Collections.singleton(GOOGLE_CHAT_API_SCOPE)); // Create the ChatServiceSettings with the app credentials ChatServiceSettings chatServiceSettings = ChatServiceSettings.newBuilder() .setCredentialsProvider(FixedCredentialsProvider.create(credential)) .build(); // Set the Chat service client chatServiceClient = ChatServiceClient.create(chatServiceSettings); } // Called when a message is received by the subscriber. @Override public void receiveMessage(PubsubMessage pubsubMessage, AckReplyConsumer consumer) { System.out.println("Id : " + pubsubMessage.getMessageId()); // Handle incoming message, then acknowledge the received message try { ObjectMapper mapper = new ObjectMapper(); JsonNode dataJson = mapper.readTree(pubsubMessage.getData().toStringUtf8()); System.out.println("Data : " + dataJson.toString()); handle(dataJson); consumer.ack(); } catch (Exception e) { System.out.println(e); // Negative acknowledgement makes Pub/Sub redeliver the message. consumer.nack(); } } // Send message to Google Chat based on the type of event. public void handle(JsonNode eventJson) throws Exception { // Google Chat events for add-ons are wrapped in a 'chat' object. if (!eventJson.has("chat")) { System.out.println("Ignored: Not a Chat event (missing 'chat' field)."); return; } JsonNode chatNode = eventJson.get("chat"); CreateMessageRequest createMessageRequest = null; if (chatNode.has("messagePayload")) { // HANDLE MESSAGE JsonNode messagePayload = chatNode.get("messagePayload"); JsonNode message = messagePayload.get("message"); JsonNode space = messagePayload.get("space"); String spaceName = space.get("name").asText(); String userText = message.has("text") ? message.get("text").asText() : ""; String threadName = message.has("thread") ? message.get("thread").get("name").asText() : ""; System.out.println("Received message in " + spaceName + ": " + userText); createMessageRequest = CreateMessageRequest.newBuilder() .setParent(spaceName) .setMessageReplyOption(MessageReplyOption.REPLY_MESSAGE_FALLBACK_TO_NEW_THREAD) .setMessage( Message.newBuilder() .setText("You said: `" + userText + "`") .setThread(Thread.newBuilder().setName(threadName).build()) .build()) .build(); } else if (chatNode.has("addedToSpacePayload")) { // HANDLE ADDED TO SPACE JsonNode addedPayload = chatNode.get("addedToSpacePayload"); JsonNode space = addedPayload.get("space"); String spaceName = space.get("name").asText(); System.out.println("Added to space: " + spaceName); createMessageRequest = CreateMessageRequest.newBuilder() .setParent(spaceName) .setMessage(Message.newBuilder().setText(ADDED_RESPONSE).build()) .build(); } else if (chatNode.has("removedFromSpacePayload")) { System.out.println("Removed from space."); return; } else { System.out.println("Ignored: Unhandled Chat event type."); return; } if (createMessageRequest != null) { // Post the response to Google Chat. chatServiceClient.createMessage(createMessageRequest); System.out.println("Sent reply."); } } }
پیکربندی برنامه چت
برنامه چت را در کنسول Google Cloud پیکربندی کنید تا جزئیاتی مانند نام و آواتار آن ارائه شود و اتصال به موضوع Pub/Sub تنظیم شود.
با اتصال به تاپیک Pub/Sub، شما Chat را قادر میسازید تا رویدادها را به برنامه شما ارسال کند. اسکریپت شما که در این تاپیک مشترک شده است، میتواند این رویدادها را دریافت کرده و به کاربران پاسخ دهد.
در کنسول گوگل کلود، به منو > APIها و خدمات > APIها و خدمات فعالشده > Google Chat API > پیکربندی بروید.
برنامه چت را برای Pub/Sub پیکربندی کنید:
- در قسمت نام برنامه ،
Add-on Chat Appرا وارد کنید. - در قسمت آدرس اینترنتی آواتار ، آدرس
https://developers.google.com/workspace/add-ons/images/quickstart-app-avatar.pngرا وارد کنید. - در قسمت توضیحات ،
Quickstart appرا وارد کنید. - در بخش عملکرد ، گزینه «پیوستن به فضاها و مکالمات گروهی» را انتخاب کنید.
- در قسمت تنظیمات اتصال (Connection settings )، گزینه Cloud Pub/Sub را انتخاب کنید و نام موضوع Pub/Sub که قبلاً ایجاد کردهاید را جایگذاری کنید.
- در قسمت «قابلیت مشاهده» ، گزینه «این برنامه چت گوگل را برای افراد و گروههای خاص در دامنه خود در دسترس قرار دهید» را انتخاب کنید و آدرس ایمیل خود را وارد کنید.
- در قسمت گزارشها ، گزینه ثبت خطاها را برای ثبت گزارشها انتخاب کنید.
- در قسمت نام برنامه ،
روی ذخیره کلیک کنید.
اکنون که برنامه چت را پیکربندی کردهاید، باید پیکربندی Pub/Sub را بهروزرسانی کنید.
- در صفحه پیکربندی Chat API ، در قسمت تنظیمات اتصال ، ایمیل حساب سرویس را که یک ایمیل منحصر به فرد تولید شده برای پروژه Google Cloud شماست، کپی کنید.
- با اختصاص دادن نقش ناشر Pub/Sub به ایمیل حساب سرویس که قبلاً کپی کردهاید، به Chat اجازه انتشار در موضوع را بدهید .
این برنامه آماده دریافت و پاسخ به پیامها در چت است.
اسکریپت را اجرا کنید
در یک رابط خط فرمان (CLI)، به دایرکتوری کاری خود بروید و اسکریپت را اجرا کنید:
نود جی اس
npm install
npm start
پایتون
python -m venv env
source env/bin/activate
pip install -r requirements.txt -U
python app.py
جاوا
mvn compile exec:java -Dexec.mainClass=Main
وقتی کد را اجرا میکنید، برنامه شروع به گوش دادن به پیامهای منتشر شده در تاپیک Pub/Sub میکند.
برنامه چت خود را آزمایش کنید
برای آزمایش برنامه چت خود، یک فضای پیام مستقیم با برنامه چت باز کنید و پیامی ارسال کنید:
با استفاده از حساب Google Workspace که هنگام اضافه کردن خود به عنوان یک آزمایشگر مورد اعتماد ارائه دادید، Google Chat را باز کنید.
- روی گپ جدید کلیک کنید.
- در فیلد «افزودن ۱ یا چند نفر» ، نام برنامه چت خود را تایپ کنید.
برنامه چت خود را از بین نتایج انتخاب کنید. یک پیام مستقیم باز میشود.
- در پیام مستقیم جدید با برنامه، عبارت
Helloرا تایپ کنید وenterرا فشار دهید.
برای افزودن آزمایشکنندگان مورد اعتماد و کسب اطلاعات بیشتر در مورد آزمایش ویژگیهای تعاملی، به بخش «آزمایش ویژگیهای تعاملی برای برنامههای Google Chat» مراجعه کنید.
عیبیابی
وقتی یک برنامه یا کارت چت گوگل خطایی را برمیگرداند، رابط چت پیامی با عنوان «مشکلی پیش آمده است» یا «درخواست شما قابل پردازش نیست» نمایش میدهد. گاهی اوقات رابط کاربری چت هیچ پیام خطایی را نمایش نمیدهد، اما برنامه یا کارت چت نتیجه غیرمنتظرهای را ایجاد میکند؛ برای مثال، ممکن است پیام کارت ظاهر نشود.
اگرچه ممکن است پیام خطا در رابط کاربری چت نمایش داده نشود، پیامهای خطای توصیفی و دادههای گزارش برای کمک به شما در رفع خطاها هنگام فعال بودن ثبت خطا برای برنامههای چت در دسترس هستند. برای کمک به مشاهده، اشکالزدایی و رفع خطاها، به عیبیابی و رفع خطاهای گوگل چت مراجعه کنید.
تمیز کردن
برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این آموزش، توصیه میکنیم پروژه Cloud را حذف کنید.
- در کنسول گوگل کلود، به صفحه مدیریت منابع بروید. منو > مدیریت و دسترسی به منابع (IAM & Admin) > مدیریت منابع (Manage Resources) کلیک کنید.
- در لیست پروژهها، پروژهای را که میخواهید حذف کنید انتخاب کنید و سپس روی «حذف کلیک کنید.
- در کادر محاورهای، شناسه پروژه را تایپ کنید و سپس برای حذف پروژه، روی خاموش کردن (Shut down) کلیک کنید.
مباحث مرتبط
برای افزودن ویژگیهای بیشتر به برنامه چت خود، موارد زیر را مشاهده کنید: