Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Azure Communication Services for Chat memungkinkan pengembang menambahkan kemampuan obrolan ke aplikasi mereka. Gunakan pustaka klien ini untuk mengelola utas obrolan dan pengguna mereka, serta mengirim dan menerima pesan obrolan.
Baca selengkapnya tentang Azure Communication Services di sini
Persiapan
Prasyarat
- Langganan Azure.
- Sumber daya Communication Services yang ada. Jika Anda perlu membuat sumber daya, Anda dapat menggunakan Azure Portal, Azure PowerShell, atau Azure CLI.
- Node.js
Menginstal
npm install @azure/communication-chat
Dukungan browser
Bundel JavaScript
Untuk menggunakan pustaka klien ini di browser, pertama-tama Anda perlu menggunakan bunder. Untuk detail tentang cara melakukan ini, silakan lihat dokumentasi bundling kami.
Di rollup.config.js, tambahkan ekspor nama yang disesuaikan berikut di plugin cjs.
cjs({
namedExports: {
events: ["EventEmitter"],
"@azure/communication-signaling": ["CommunicationSignalingClient", "SignalingClient"],
"@opentelemetry/api": ["CanonicalCode", "SpanKind", "TraceFlags"]
}
})
Konsep utama
Percakapan obrolan diwakili oleh utas. Setiap pengguna dalam utas disebut peserta obrolan. Peserta obrolan dapat mengobrol satu sama lain secara pribadi dalam obrolan 1:1 atau berkumpul di obrolan grup 1:N. Pengguna juga mendapatkan pembaruan hampir real time ketika orang lain mengetik dan ketika mereka telah membaca pesan.
Klien Obrolan
ChatClient adalah antarmuka utama untuk pengembang yang menggunakan pustaka klien ini. Ini menyediakan metode asinkron untuk membuat dan menghapus utas.
ChatThreadClient
ChatThreadClient menyediakan metode asinkron untuk melakukan operasi peserta pesan dan obrolan dalam utas obrolan.
Contoh
Menginisialisasi ChatClient
Gunakan url sumber daya dan token akses pengguna untuk menginisialisasi klien obrolan.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
Membuat utas dengan dua pengguna
Gunakan metode createThread untuk membuat utas obrolan.
createChatThreadRequest digunakan untuk menjelaskan permintaan utas:
- Gunakan
topicuntuk memberikan topik utas;
createChatThreadOptions digunakan untuk mengatur param opsional untuk membuat utas:
- Gunakan
participantsuntuk mencantumkan peserta obrolan yang akan ditambahkan ke utas; - Gunakan
idempotencyTokenuntuk menentukan permintaan yang dapat diulang
createChatThreadResult adalah hasil yang dikembalikan dari pembuatan utas. Ini berisi chatThread yang merupakan utas yang dibuat, serta properti errors yang akan berisi informasi tentang peserta yang tidak valid jika mereka gagal ditambahkan ke utas.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
const createChatThreadRequest = {
topic: "Hello, World!",
};
const createChatThreadOptions = {
participants: [
{
id: { communicationUserId: "<USER_ID>" },
displayName: "<USER_DISPLAY_NAME>",
},
],
};
const createChatThreadResult = await chatClient.createChatThread(
createChatThreadRequest,
createChatThreadOptions,
);
const threadId = createChatThreadResult?.chatThread?.id;
Membuat ChatThreadClient
ChatThreadClient akan memungkinkan Anda melakukan operasi khusus untuk utas obrolan, seperti memperbarui topik utas obrolan, mengirim pesan, menambahkan peserta ke utas obrolan, dll.
Anda dapat menginisialisasi ChatThreadClient baru menggunakan metode getChatThreadClient ChatClient dengan id utas yang ada:
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
const chatThreadClient = chatClient.getChatThreadClient("<threadId>");
Mengirim pesan ke utas
Gunakan metode sendMessage untuk mengirim pesan ke utas yang diidentifikasi oleh threadId.
sendMessageRequest digunakan untuk menjelaskan permintaan pesan:
- Gunakan
contentuntuk menyediakan konten pesan obrolan;
sendMessageOptions digunakan untuk menjelaskan param opsional operasi:
- Gunakan
senderDisplayNameuntuk menentukan nama tampilan pengirim; - Gunakan
typeuntuk menentukan jenis pesan, seperti 'teks' atau 'html' ;
sendChatMessageResult adalah hasil yang dikembalikan dari pengiriman pesan, berisi ID, yang merupakan ID unik pesan.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient, SendMessageOptions } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
const chatThreadClient = chatClient.getChatThreadClient("<threadId>");
const sendMessageRequest = {
content: "Hello Geeta! Can you share the deck for the conference?",
};
const sendMessageOptions: SendMessageOptions = {
senderDisplayName: "Jack",
type: "text",
};
const sendChatMessageResult = await chatThreadClient.sendMessage(
sendMessageRequest,
sendMessageOptions,
);
const messageId = sendChatMessageResult.id;
Menerima pesan dari utas
Dengan sinyal real-time, Anda dapat berlangganan untuk mendengarkan pesan masuk baru dan memperbarui pesan saat ini dalam memori yang sesuai.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
// open notifications channel
await chatClient.startRealtimeNotifications();
// subscribe to new notification
chatClient.on("chatMessageReceived", (e) => {
console.log("Notification chatMessageReceived!");
// your code here
});
Atau Anda dapat mengambil pesan obrolan dengan melakukan polling metode listMessages pada interval yang ditentukan.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
const chatThreadClient = chatClient.getChatThreadClient("<threadId>");
for await (const chatMessage of chatThreadClient.listMessages()) {
// your code here
}
Menambahkan Pengguna ke utas
Setelah utas dibuat, Anda kemudian dapat menambahkan dan menghapus pengguna dari utas tersebut. Dengan menambahkan pengguna, Anda memberi mereka akses untuk dapat mengirim pesan ke utas. Anda harus memulai dengan mendapatkan token akses dan identitas baru untuk pengguna tersebut. Pengguna akan memerlukan token akses tersebut untuk menginisialisasi klien obrolan mereka. Informasi selengkapnya tentang token di sini: Mengautentikasi ke Azure Communication Services
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
const chatThreadClient = chatClient.getChatThreadClient("<threadId>");
const addParticipantsRequest = {
participants: [
{
id: { communicationUserId: "<NEW_PARTICIPANT_USER_ID>" },
displayName: "Jane",
},
],
};
await chatThreadClient.addParticipants(addParticipantsRequest);
Menghapus Pengguna dari utas
Mirip dengan di atas, Anda juga dapat menghapus pengguna dari utas. Untuk menghapus, Anda harus melacak ID peserta yang telah Anda tambahkan.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
const chatThreadClient = chatClient.getChatThreadClient("<threadId>");
await chatThreadClient.removeParticipant({ communicationUserId: "<MEMBER_ID>" });
Berlangganan status koneksi pemberitahuan real time
Berlangganan peristiwa realTimeNotificationConnected dan realTimeNotificationDisconnected memungkinkan Anda mengetahui kapan koneksi ke server panggilan aktif.
import { AzureCommunicationTokenCredential } from "@azure/communication-common";
import { ChatClient } from "@azure/communication-chat";
// Your unique Azure Communication service endpoint
const endpointUrl = "<ENDPOINT>";
const userAccessToken = "<USER_ACCESS_TOKEN>";
const tokenCredential = new AzureCommunicationTokenCredential(userAccessToken);
const chatClient = new ChatClient(endpointUrl, tokenCredential);
// subscribe to realTimeNotificationConnected event
chatClient.on("realTimeNotificationConnected", () => {
console.log("Real time notification is now connected!");
// your code here
});
// subscribe to realTimeNotificationDisconnected event
chatClient.on("realTimeNotificationDisconnected", () => {
console.log("Real time notification is now disconnected!");
// your code here
});
Pemecahan masalah
Penebangan kayu
Mengaktifkan pengelogan dapat membantu menemukan informasi yang berguna tentang kegagalan. Untuk melihat log permintaan dan respons HTTP, atur variabel lingkungan AZURE_LOG_LEVEL ke info. Atau, pengelogan dapat diaktifkan saat runtime dengan memanggil setLogLevel di @azure/logger:
import { setLogLevel } from "@azure/logger";
setLogLevel("info");
Langkah berikutnya
Dalam mulai cepat ini, Anda mempelajari cara:
- Membuat klien obrolan
- Membuat utas dengan 2 pengguna
- Mengirim pesan ke utas
- Menerima pesan dari utas
- Menghapus Pengguna dari utas
Berkontribusi
Jika Anda ingin berkontribusi pada pustaka ini, baca panduan berkontribusi untuk mempelajari selengkapnya tentang cara membuat dan menguji kode.
Azure SDK for JavaScript