Bagikan melalui


Menambahkan Obrolan ke Aplikasi Anda

Tambahkan obrolan real-time ke aplikasi Anda dengan menggunakan SDK Obrolan Communication Services. Artikel ini menjelaskan cara menggunakan SDK Obrolan untuk membuat utas obrolan yang memungkinkan pengguna melakukan percakapan satu sama lain. Untuk mempelajari selengkapnya tentang konsep Obrolan, lihat dokumentasi konseptual obrolan.

Prasyarat

  • Akun Azure dengan langganan aktif. Buat akun secara gratis.

  • Sumber daya Communication Services aktif dan string koneksi. Buat sumber daya Communication Services.

  • Instal Azure CLI.

  • Perhatikan titik akhir sumber daya Communication Services Anda. Anda bisa mendapatkan titik akhir dari portal Azure. Atau, Anda dapat menemukan url titik akhir di string koneksi. Ini adalah url yang muncul setelah endpoint= dan dimulai dengan https://.

  • Token Akses Pengguna. Pastikan untuk mengatur cakupan ke obrolan, dan catat string token serta string user_id tersebut. Anda juga dapat menggunakan Azure CLI dan menjalankan perintah berikut dengan string koneksi Anda untuk membuat pengguna dan token akses.

    az communication identity token issue --scope chat --connection-string "yourConnectionString"
    

    Untuk detailnya, lihat Menggunakan Azure CLI untuk Membuat dan Mengelola Token Akses.

Pengaturan

Menambahkan ekstensi

Tambahkan ekstensi Azure Communication Services untuk Azure CLI dengan menggunakan az extension perintah .

az extension add --name communication

Masuk ke Azure CLI

Anda perlu masuk ke Azure CLI. Anda dapat masuk dengan menjalankan az login perintah dari terminal dan memberikan kredensial Anda.

(Opsional) Menggunakan operasi identitas Azure CLI tanpa melewati titik akhir atau token akses

Menyimpan titik akhir Anda dalam variabel lingkungan

Anda dapat mengonfigurasi AZURE_COMMUNICATION_ENDPOINT variabel lingkungan untuk menggunakan operasi obrolan Azure CLI tanpa harus menggunakan --endpoint untuk memasukkan titik akhir. Untuk mengonfigurasi variabel lingkungan, buka jendela konsol dan pilih sistem operasi Anda dari tab berikut. Ganti <yourEndpoint> dengan titik akhir Anda yang sebenarnya.

Buka jendela konsol dan masukkan perintah berikut:

setx AZURE_COMMUNICATION_ENDPOINT "<yourEndpoint>"

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang perlu membaca variabel lingkungan, termasuk jendela konsol. Misalnya, jika Anda menggunakan Visual Studio sebagai editor, mulai ulang Visual Studio sebelum menjalankan contoh.

Menyimpan token akses Anda dalam variabel lingkungan

Anda dapat mengonfigurasi AZURE_COMMUNICATION_ACCESS_TOKEN variabel lingkungan untuk menggunakan operasi obrolan Azure CLI tanpa harus menggunakan --access-token untuk meneruskan token akses. Untuk mengonfigurasi variabel lingkungan, buka jendela konsol dan pilih sistem operasi Anda dari tab berikut. Ganti <yourAccessToken> dengan token akses Anda yang sebenarnya.

Buka jendela konsol dan masukkan perintah berikut:

setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"

Setelah menambahkan variabel lingkungan, Anda mungkin perlu memulai ulang program yang sedang berjalan yang perlu membaca variabel lingkungan, termasuk jendela konsol. Misalnya, jika Anda menggunakan Visual Studio sebagai editor, mulai ulang Visual Studio sebelum menjalankan contoh.

Operasional

Mulailah utas obrolan

Gunakan perintah thread create untuk membuat utas obrolan.

az communication chat thread create --topic "<chatTopic>" --endpoint "<endpoint>" --access-token "<token>"

Jika Anda menyimpan titik akhir dan token akses dalam variabel lingkungan seperti yang dinyatakan sebelumnya, Anda tidak perlu meneruskannya ke perintah .

az communication chat thread create --topic "<chatTopic>"
  • Gunakan <chatTopic> untuk memberi topik pada utas. Anda dapat memperbarui topik setelah utas obrolan dibuat dengan menggunakan thread update-topic perintah .
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Memperbarui topik utas obrolan

az communication chat thread update-topic --thread "<chatThreadId>" --topic "<chatTopic>" --endpoint "<endpoint>" --access-token "<token>"
  • Ganti <chatThreadId> dengan ID utas obrolan Anda.
  • Ganti <chatTopic> dengan topik obrolan baru yang ingin Anda atur.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Daftar semua utas obrolan

Perintah thread list mengembalikan daftar utas obrolan dari seorang pengguna.

az communication chat thread list --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
  • Opsional: Gunakan <startTime> untuk menentukan titik waktu paling awal untuk mendapatkan pesan obrolan.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Kirim pesan ke utas obrolan

message send Gunakan perintah untuk mengirim pesan ke utas obrolan yang Anda buat, yang diidentifikasi oleh threadId.

az communication chat message send --thread "<chatThreadId>" --display-name "<displayName>" --content "<content>" --message-type "<messageType>"  --endpoint "<endpoint>" --access-token "<token>"
  • Ganti <chatThreadId> dengan ID utas obrolan Anda.
  • Gunakan <content> untuk menyediakan konten pesan obrolan.
  • Gunakan <messageType> untuk menentukan jenis konten pesan. Nilai yang mungkin adalah text dan html. Jika Anda tidak menentukan nilai, defaultnya adalah text.
  • Gunakan <displayName> secara opsional untuk menentukan nama tampilan pengirim.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Menampilkan pesan dalam utas obrolan

Perintah message list mengembalikan daftar pesan obrolan dalam utas obrolan.

az communication chat message list --thread "<chatThreadId>" --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
  • Ganti <chatThreadId> dengan ID utas obrolan Anda.
  • Gunakan <startTime> secara opsional untuk menentukan titik waktu paling awal untuk mendapatkan pesan obrolan.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Menerima pesan obrolan dari utas obrolan

Anda dapat mengambil pesan obrolan dengan menggunakan message list perintah .

az communication chat message get --thread "<chatThreadId>" --message-id "<messageId>" --endpoint "<endpoint>" --access-token "<token>"
  • Ganti <chatThreadId> dengan ID utas obrolan Anda.
  • Ganti <messageId> dengan ID pesan yang ingin Anda ambil.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Kirimkan konfirmasi bahwa pesan telah dibaca

Anda menggunakan perintah message receipt send untuk memposting event tanda terima baca dalam utas, atas nama pengguna.

az communication chat message receipt send --thread "<chatThreadId>" --message-id "<messageId>" --endpoint "<endpoint>" --access-token "<token>"
  • Ganti <chatThreadId> dengan ID utas obrolan Anda.
  • Ganti <messageId> untuk menentukan ID pesan terbaru yang dibaca oleh pengguna saat ini.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Tambahkan pengguna sebagai peserta ke thread obrolan

Ketika membuat utas obrolan, Anda kemudian dapat menambahkan dan menghapus pengguna darinya. Dengan menambahkan pengguna, Anda memberi mereka akses untuk dapat mengirim pesan ke utas obrolan, dan menambahkan atau menghapus peserta lain. Sebelum memanggil perintah, pastikan Anda memperoleh token akses dan identitas baru untuk pengguna tersebut participant add .

az communication chat participant add --thread "<chatThreadId>" --user "<userId>" --display-name "<displayName>" --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
  • Ganti <chatThreadId> dengan ID utas obrolan Anda.
  • Ganti <userId> dengan userId Anda.
  • Gunakan <displayName> secara opsional untuk menentukan nama tampilan pengirim.
  • Gunakan <startTime> secara opsional untuk menentukan titik waktu paling awal untuk mendapatkan pesan obrolan.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Menampilkan peserta dalam utas obrolan

Serupa dengan menambahkan peserta, Anda juga dapat mencantumkan peserta dari utas.

Gunakan perintah participant list untuk mengambil peserta utas.

az communication chat participant list --thread "<chatThreadId>" --skip "<skip>" --endpoint "<endpoint>" --access-token "<token>"
  • Ganti <chatThreadId> dengan ID utas obrolan Anda.
  • Gunakan <skip> secara opsional untuk melewati peserta hingga posisi tertentu dalam respons.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Mengeluarkan peserta dari utas obrolan

Anda dapat menghapus peserta obrolan dari utas obrolan dengan menggunakan perintah 'peserta hapus'.

az communication chat participant remove --thread "<chatThreadId>" --user "<userId>" --endpoint "<endpoint>" --access-token "<token>"
  • Ganti <chatThreadId> dengan ID utas obrolan Anda.
  • Ganti <userId> dengan userId yang ingin Anda hapus dari percakapan.
  • Ganti <endpoint> dengan endpoint Azure Communication Services Anda.
  • Ganti <token> dengan token akses Anda yang diperoleh sebelumnya dengan menjalankan perintah identity token issue.

Prasyarat

  • Buat akun Azure dengan langganan aktif. Untuk detailnya, lihat Membuat akun gratis.

  • Instal Node.js versi LTS Aktif dan LTS Pemeliharaan.

  • Buat sumber daya Azure Communication Services. Untuk detailnya, lihat Membuat sumber daya Azure Communication Services. Anda perlu merekam titik akhir sumber daya dan string koneksi untuk artikel ini.

  • Buat tiga Pengguna Azure Communication Services dan terbitkan Token Akses Pengguna. Pastikan untuk mengatur cakupan ke obrolan, dan catat string token serta string user_id tersebut. Demo secara keseluruhan membuat utas dengan dua peserta awal dan kemudian menambahkan peserta ketiga ke utas tersebut. Anda juga dapat menggunakan Azure CLI dan menjalankan perintah berikut dengan string koneksi Anda untuk membuat pengguna dan token akses.

    az communication identity token issue --scope chat --connection-string "yourConnectionString"
    

    Untuk detailnya, lihat Menggunakan Azure CLI untuk Membuat dan Mengelola Token Akses.

Pengaturan

Membuat aplikasi web baru

Pertama, buka terminal atau jendela perintah, buat direktori baru untuk aplikasi Anda, dan navigasikan ke sana.

mkdir chat-quickstart && cd chat-quickstart

Jalankan npm init -y untuk membuat file package.json dengan pengaturan default.

npm init -y

Menginstal paket-paket tersebut

npm install Gunakan perintah untuk menginstal SDK Communication Services berikut untuk JavaScript.

npm install @azure/communication-common --save

npm install @azure/communication-identity --save

npm install @azure/communication-signaling --save

npm install @azure/communication-chat --save

Opsi --save mencantumkan pustaka sebagai dependensi di file package.json Anda.

Menyiapkan kerangka kerja aplikasi

Artikel ini menggunakan webpack untuk memaketkan aset aplikasi. Jalankan perintah berikut untuk menginstalnya dan mencantumkannya sebagai dependensi pengembangan di package.json Anda:

npm install webpack webpack-cli webpack-dev-server --save-dev

Buat webpack.config.js di direktori akar proyek Anda.

module.exports = {
    entry: "./client.js",
    output: {
        filename: "bundle.js"
    },
    devtool: "inline-source-map",
    mode: "development"
}

Buat file index.html di direktori akar proyek Anda. Gunakan file ini sebagai templat untuk menambahkan kemampuan obrolan menggunakan Azure Communication Chat SDK untuk JavaScript.

<!DOCTYPE html>
<html>
  <head>
    <title>Communication Client - Chat Sample</title>
  </head>
  <body>
    <h4>Azure Communication Services</h4>
    <h1>Chat Quickstart</h1>
    <script src="./bundle.js"></script>
  </body>
</html>

Buat file di direktori akar proyek Anda yang disebut client.js untuk berisi logika aplikasi untuk artikel ini.

Membuat aplikasi obrolan

Untuk membuat klien obrolan di aplikasi web Anda, gunakan titik akhir Communications Service dan token akses yang dihasilkan sebagai bagian dari langkah-langkah prasyarat.

Token akses pengguna memungkinkan Anda membangun aplikasi klien yang langsung mengautentikasi ke Azure Communication Services. Artikel ini tidak mencakup pembuatan tingkat layanan untuk mengelola token untuk aplikasi obrolan Anda. Untuk informasi selengkapnya tentang arsitektur obrolan, lihat konsep obrolan. Untuk informasi selengkapnya tentang token akses, lihat token akses pengguna.

Di dalam client.js gunakan titik akhir dan token akses dalam kode berikut untuk menambahkan kemampuan obrolan menggunakan Azure Communication Chat SDK untuk JavaScript.


import { ChatClient } from '@azure/communication-chat';
import { AzureCommunicationTokenCredential } from '@azure/communication-common';

// Your unique Azure Communication service endpoint
let endpointUrl = '<replace with your resource endpoint>';
// The user access token generated as part of the pre-requisites
let userAccessToken = '<USER_ACCESS_TOKEN>';

let chatClient = new ChatClient(endpointUrl, new AzureCommunicationTokenCredential(userAccessToken));
console.log('Azure Communication Chat client created!');

Menjalankan kode

Perbarui bagian scripts di package.json untuk menyertakan "mulai"

"start": "webpack serve --config ./webpack.config.js"

Jalankan perintah berikut untuk menjalankan aplikasi Anda:

npm install
npm run start

Buka browser Anda dan navigasi ke http://localhost:8080/. Di konsol alat pengembang dalam browser, Anda akan melihat:

Azure Communication Chat client created!

Model objek

Kelas dan tatap muka berikut menangani beberapa fitur utama SDK Obrolan Azure Communication Services untuk JavaScript.

Nama Deskripsi
ChatClient Kelas ini diperlukan untuk fungsionalitas obrolan. Anda menginstansiasi dengan informasi langganan Anda, dan menggunakannya untuk membuat, mendapatkan, menghapus utas, dan berlangganan acara obrolan.
ChatThreadClient Kelas ini diperlukan untuk fungsionalitas Thread Percakapan. Anda mendapatkan instans melalui ChatClient dan menggunakannya untuk mengirim/menerima/memperbarui/menghapus pesan, menambah/menghapus/mendapatkan pengguna, mengirim pemberitahuan pengetikan dan tanda terima baca.

Mulailah utas obrolan

Gunakan metode createThread untuk membuat percakapan obrolan.

createThreadRequest digunakan untuk mendeskripsikan permintaan utas:

  • Gunakan topic untuk memberikan topik pada obrolan ini. Topik dapat diperbarui setelah utas obrolan dibuat menggunakan fungsi UpdateThread.
  • Gunakan participants untuk mencantumkan peserta untuk ditambahkan ke utas obrolan.

Setelah diselesaikan, metode createChatThread menampilkan CreateChatThreadResult. Model ini berisi properti chatThread yang dapat Anda gunakan untuk mengakses id dari utas yang baru dibuat. Anda kemudian dapat menggunakan id untuk mendapatkan sebuah instans ChatThreadClient. Kemudian ChatThreadClient dapat digunakan untuk melakukan operasi dalam utas seperti mengirim pesan atau mencantumkan peserta.

async function createChatThread() {
  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;
  return threadId;
}

createChatThread().then(async threadId => {
  console.log(`Thread created:${threadId}`);
  // PLACEHOLDERS
  // <CREATE CHAT THREAD CLIENT>
  // <RECEIVE A CHAT MESSAGE FROM A CHAT THREAD>
  // <SEND MESSAGE TO A CHAT THREAD>
  // <LIST MESSAGES IN A CHAT THREAD>
  // <ADD NEW PARTICIPANT TO THREAD>
  // <LIST PARTICIPANTS IN A THREAD>
  // <REMOVE PARTICIPANT FROM THREAD>
  });

Saat me-refresh tab browser, Anda akan melihat pesan berikut di konsol:

Thread created: <thread_id>

Dapatkan klien percakapan obrolan

Metode getChatThreadClient mengembalikan chatThreadClient untuk utas yang sudah ada. Ini dapat digunakan untuk melakukan operasi pada utas yang dibuat: menambahkan peserta, mengirim pesan, dll. threadId adalah ID unik dari utas obrolan yang ada.

let chatThreadClient = chatClient.getChatThreadClient(threadId);
console.log(`Chat Thread client for threadId:${threadId}`);

Tambahkan kode ini sebagai ganti komentar <CREATE CHAT THREAD CLIENT> di client.js, refresh tab browser Anda dan periksa konsol, Anda akan melihat:

Chat Thread client for threadId: <threadId>

Daftar semua utas obrolan

Metode listChatThreads ini menampilkan PagedAsyncIterableIterator dari jenis ChatThreadItem. Fungsi ini dapat digunakan untuk menampilkan semua utas obrolan. Iterator [ChatThreadItem] adalah respons yang dikembalikan dari memperlihatkan daftar utas

const threads = chatClient.listChatThreads();
for await (const thread of threads) {
   // your code here
}

Kirim pesan ke utas obrolan

Gunakan metode sendMessage untuk mengirim pesan ke utas yang diidentifikasi oleh threadId.

sendMessageRequest digunakan untuk menjelaskan permintaan pesan:

  • Gunakan content untuk menyediakan konten pesan obrolan;

sendMessageOptions digunakan untuk menjelaskan param opsional operasi:

  • Gunakan senderDisplayName untuk menentukan nama tampilan pengirim;
  • Gunakan type untuk menentukan jenis pesan, seperti 'teks' atau 'html';
  • Gunakan metadata secara opsional untuk menyertakan data lain yang ingin Anda kirim bersama dengan pesan. Bidang ini menyediakan mekanisme bagi pengembang untuk memperluas fungsionalitas pesan obrolan dan menambahkan informasi kustom untuk kasus penggunaan Anda. Misalnya, saat berbagi tautan file dalam pesan, Anda mungkin ingin menambahkan 'hasAttachment: true' dalam metadata sehingga aplikasi penerima dapat mengurainya dan menampilkannya.

SendChatMessageResult adalah respons yang dikembalikan dari pengiriman pesan. Ini berisi ID unik pesan.

const sendMessageRequest =
{
  content: 'Please take a look at the attachment'
};
let sendMessageOptions =
{
  senderDisplayName : 'Jack',
  type: 'text',
  metadata: {
    'hasAttachment': 'true',
    'attachmentUrl': 'https://contoso.com/files/attachment.docx'
  }
};
const sendChatMessageResult = await chatThreadClient.sendMessage(sendMessageRequest, sendMessageOptions);
const messageId = sendChatMessageResult.id;
console.log(`Message sent!, message id:${messageId}`);

Tambahkan kode ini sebagai ganti komentar <SEND MESSAGE TO A CHAT THREAD> di client.js, refresh tab browser Anda dan periksa konsol.

Message sent!, message id:<number>

Menerima pesan obrolan dari utas obrolan

Dengan sinyal real time, Anda dapat berlangganan untuk mendengarkan pesan masuk baru dan memperbarui pesan saat ini di memori. Azure Communication Services mendukung daftar peristiwa yang dapat Anda ikuti.

// open notifications channel
await chatClient.startRealtimeNotifications();
// subscribe to new notification
chatClient.on("chatMessageReceived", (e) => {
  console.log("Notification chatMessageReceived!");
  // your code here
});

Tambahkan kode ini sebagai ganti komentar <RECEIVE A CHAT MESSAGE FROM A CHAT THREAD> di client.js. Segarkan tab peramban Anda, Anda akan melihat pesan di konsol Notification chatMessageReceived;

Atau, Anda dapat mengambil pesan obrolan dengan memanggil metode listMessages secara berkala pada interval tertentu.


const messages = chatThreadClient.listMessages();
for await (const message of messages) {
   // your code here
}

Tambahkan kode ini sebagai ganti komentar <LIST MESSAGES IN A CHAT THREAD> di client.js. Segarkan tab Anda, di konsol Anda akan menemukan daftar pesan yang dikirim dalam utas obrolan ini.

listMessages mengembalikan berbagai jenis pesan yang dapat Anda identifikasi oleh chatMessage.type.

Untuk informasi selengkapnya, lihat Jenis Pesan.

Tambahkan pengguna sebagai peserta ke thread obrolan

Setelah utas obrolan dibuat, Anda kemudian dapat menambahkan dan menghapus pengguna dari utas tersebut. Dengan menambahkan pengguna, Anda memberi mereka akses untuk mengirim pesan ke utas obrolan, dan menambahkan/menghapus peserta lain.

Sebelum memanggil metode , pastikan Anda memperoleh token akses dan identitas baru untuk pengguna tersebut addParticipants . Pengguna memerlukan token akses tersebut untuk menginisialisasi klien obrolan mereka.

addParticipantsRequest menjelaskan objek permintaan di mana participants mencantumkan peserta yang akan ditambahkan ke utas obrolan;

  • id, yang diperlukan, adalah pengidentifikasi komunikasi yang akan ditambahkan ke dalam utas obrolan.
  • displayName, opsional, adalah nama tampilan untuk peserta utas.
  • shareHistoryTime, opsional, adalah waktu saat riwayat obrolan dibagikan dengan peserta. Untuk membagikan riwayat sejak awal utas obrolan, atur properti ini ke tanggal yang sama dengan, atau kurang dari waktu pembuatan utas. Untuk tidak membagikan riwayat sebelum saat peserta ditambahkan, atur riwayat ke tanggal saat ini. Untuk berbagi riwayat sebagian, atur ke tanggal pilihan Anda.

const addParticipantsRequest =
{
  participants: [
    {
      id: { communicationUserId: '<NEW_PARTICIPANT_USER_ID>' },
      displayName: 'Jane'
    }
  ]
};

await chatThreadClient.addParticipants(addParticipantsRequest);

Ganti NEW_PARTICIPANT_USER_ID dengan ID pengguna baru Tambahkan kode ini sebagai ganti komentar <ADD NEW PARTICIPANT TO THREAD> di client.js

Menampilkan pengguna dalam percakapan obrolan

const participants = chatThreadClient.listParticipants();
for await (const participant of participants) {
   // your code here
}

Tambahkan kode ini sebagai ganti komentar <LIST PARTICIPANTS IN A THREAD> di client.js, refresh tab browser Anda dan periksa konsol. Anda akan melihat informasi tentang pengguna dalam utas.

Menghapus pengguna dari percakapan obrolan

Mirip dengan menambahkan peserta, Anda dapat menghapus peserta dari utas obrolan. Untuk menghapus, Anda perlu melacak ID peserta yang Anda tambahkan.

Gunakan metode removeParticipant di mana participant adalah pengguna komunikasi yang akan dihapus dari utas.


await chatThreadClient.removeParticipant({ communicationUserId: <PARTICIPANT_ID> });
await listParticipants();

Ganti PARTICIPANT_ID dengan ID Pengguna yang digunakan pada langkah sebelumnya (<NEW_PARTICIPANT_USER_ID>). Tambahkan kode ini sebagai ganti komentar <REMOVE PARTICIPANT FROM THREAD> di client.js.

Berlangganan notifikasi status koneksi secara real-time

Langganan ke peristiwa realTimeNotificationConnected dan realTimeNotificationDisconnected memungkinkan Anda mengetahui kapan koneksi ke server panggilan aktif.

// 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
});

Contoh kode

Temukan kode akhir untuk artikel ini di sampel GitHub Tambahkan Obrolan ke aplikasi Anda.

Prasyarat

Persiapan

Membuat aplikasi Python baru

Buka terminal atau jendela perintah, buat direktori baru untuk aplikasi Anda, dan masuk ke sana.

mkdir chat-quickstart && cd chat-quickstart

Gunakan editor teks untuk membuat file bernama start-chat.py di direktori akar proyek. Tambahkan struktur program, termasuk penanganan pengecualian dasar. Di bagian berikut, tambahkan semua kode sumber untuk artikel ini ke file ini.

import os
# Add required SDK components from quickstart here

try:
    print('Azure Communication Services - Chat Quickstart')
    # Quickstart code goes here
except Exception as ex:
    print('Exception:')
    print(ex)

Memasang SDK

Gunakan perintah berikut untuk memasang SDK:


pip install azure-communication-chat

Model objek

Kelas dan antarmuka berikut menangani beberapa fitur utama SDK Obrolan Azure Communication Services untuk Python.

Nama Deskripsi
ChatClient Kelas ini diperlukan untuk fungsi obrolan. Anda menginstansiasi dengan informasi berlangganan Anda, dan menggunakannya untuk membuat, memperoleh, dan menghapus utas.
ChatThreadClient Kelas ini dibuat untuk fungsi Utas Obrolan. Anda mendapatkan instans melalui ChatClient, dan menggunakannya untuk mengirim, menerima, memperbarui, dan menghapus pesan. Anda juga dapat menggunakannya untuk menambahkan, menghapus, dan mengambil pengguna, serta mengirim pemberitahuan pengetikan dan tanda terima baca.

Membuat aplikasi obrolan

Untuk membuat klien obrolan, gunakan titik akhir Communication Services dan token akses yang Anda buat sebagai bagian dari langkah prasyarat.

pip install azure-communication-identity
from azure.communication.chat import ChatClient, CommunicationTokenCredential

endpoint = "<replace with your resource endpoint>"
chat_client = ChatClient(endpoint, CommunicationTokenCredential("<Access Token>"))

Artikel ini tidak mencakup pembuatan tingkat layanan untuk mengelola token untuk aplikasi obrolan Anda, tetapi disarankan. Untuk informasi selengkapnya, lihat bagian "Arsitektur Obrolan" dari Konsep Obrolan > Obrolan.

Mulailah utas obrolan

Gunakan metode create_chat_thread untuk membuat percakapan obrolan.

  • Gunakan topic untuk memberi topik pada utas. Anda dapat memperbarui topik setelah utas obrolan dibuat dengan menggunakan fungsi update_thread.
  • Gunakan thread_participants untuk mencantumkan ChatParticipant agar ditambahkan ke utas obrolan. ChatParticipant menggunakan tipe CommunicationUserIdentifier sebagai user.

CreateChatThreadResult adalah hasil yang dikembalikan dari pembuatan utas. Anda dapat menggunakannya untuk mengambil id dari utas obrolan yang baru dibuat. id ini kemudian dapat digunakan untuk mengambil objek ChatThreadClient dengan menggunakan metode get_chat_thread_client. Anda dapat menggunakan ChatThreadClient untuk melakukan operasi obrolan lain pada utas obrolan ini.

topic="test topic"

create_chat_thread_result = chat_client.create_chat_thread(topic)
chat_thread_client = chat_client.get_chat_thread_client(create_chat_thread_result.chat_thread.id)

Dapatkan klien percakapan obrolan

Metode get_chat_thread_client mengembalikan klien utas untuk sebuah utas yang sudah ada. Anda dapat menggunakannya untuk melakukan operasi pada utas yang dibuat. Misalnya, Anda dapat menambahkan peserta dan mengirim pesan. thread_id adalah ID unik untuk utas obrolan yang ada.

Anda dapat menggunakan ChatThreadClient untuk melakukan operasi obrolan lain pada utas obrolan ini.

thread_id = create_chat_thread_result.chat_thread.id
chat_thread_client = chat_client.get_chat_thread_client(thread_id)

Daftar semua utas obrolan

Metode list_chat_threads mengembalikan iterator jenis ChatThreadItem.

  • Gunakan start_time untuk menentukan titik paling awal waktu untuk mendapatkan utas obrolan.
  • Gunakan results_per_page untuk menentukan jumlah maksimum utas obrolan yang dikembalikan per halaman.

Iterator dari [ChatThreadItem] adalah respons yang dikembalikan dari daftar utas.

from datetime import datetime, timedelta

start_time = datetime.utcnow() - timedelta(days=2)

chat_threads = chat_client.list_chat_threads(results_per_page=5, start_time=start_time)
for chat_thread_item_page in chat_threads.by_page():
    for chat_thread_item in chat_thread_item_page:
        print(chat_thread_item)
        print('Chat Thread Id: ', chat_thread_item.id)

Kirim pesan ke utas obrolan

Gunakan metode send_message untuk mengirim pesan ke utas obrolan yang Anda buat, yang diidentifikasi dengan thread_id.

  • Gunakan content untuk menyediakan konten pesan obrolan.
  • Gunakan chat_message_type untuk menentukan jenis konten pesan. Nilai yang mungkin adalah text dan html. Jika Anda tidak menentukan nilai, defaultnya adalah text.
  • Gunakan sender_display_name untuk menentukan nama tampilan pengirim.
  • Gunakan metadata secara opsional untuk menyertakan data lain yang ingin Anda kirim bersama dengan pesan. Bidang ini menyediakan mekanisme bagi pengembang untuk memperluas fungsionalitas pesan obrolan dan menambahkan informasi kustom untuk kasus penggunaan Anda. Misalnya, saat berbagi tautan file di pesan, Anda mungkin ingin menambahkan 'hasAttachment:true' dalam metadata sehingga aplikasi penerima dapat mengurainya dan menampilkannya.

SendChatMessageResult adalah respons yang dikembalikan dari pengiriman pesan. Ini berisi ID, yang merupakan ID unik dari pesan.

from azure.communication.chat import ChatMessageType

topic = "test topic"
create_chat_thread_result = chat_client.create_chat_thread(topic)
thread_id = create_chat_thread_result.chat_thread.id
chat_thread_client = chat_client.get_chat_thread_client(create_chat_thread_result.chat_thread.id)


content='Please take a look at the attachment'
sender_display_name='sender name'
metadata={
    'hasAttachment': 'true',
    'attachmentUrl': 'https://contoso.com/files/attachment.docx'
}

# specify chat message type with pre-built enumerations
send_message_result_w_enum = chat_thread_client.send_message(content=content, sender_display_name=sender_display_name, chat_message_type=ChatMessageType.TEXT, metadata=metadata)
print("Message sent: id: ", send_message_result_w_enum.id)

Menerima pesan obrolan dari utas obrolan

Anda dapat mengambil pesan obrolan dengan melakukan polling pada metode list_messages pada interval tertentu.

  • Gunakan results_per_page untuk menentukan jumlah maksimum pesan yang akan dikembalikan per halaman.
  • Gunakan start_time untuk menentukan titik paling awal waktu untuk mendapatkan pesan.

Iterator dari [ChatMessage] adalah respons yang dikembalikan dari daftar pesan.

from datetime import datetime, timedelta

start_time = datetime.utcnow() - timedelta(days=1)

chat_messages = chat_thread_client.list_messages(results_per_page=1, start_time=start_time)
for chat_message_page in chat_messages.by_page():
    for chat_message in chat_message_page:
        print("ChatMessage: Id=", chat_message.id, "; Content=", chat_message.content.message)

list_messages mengembalikan versi terbaru pesan, termasuk setiap pengeditan atau penghapusan yang terjadi pada pesan dengan menggunakan update_message dan delete_message. Untuk pesan yang dihapus, ChatMessage.deleted_on mengembalikan nilai datetime yang menunjukkan waktu kapan pesan ini dihapus. Untuk pesan yang diedit, ChatMessage.edited_on mengembalikan nilai datetime yang menunjukkan waktu kapan pesan diedit. Anda dapat mengakses waktu asli pembuatan pesan dengan menggunakan ChatMessage.created_on, yang dapat digunakan untuk memesan pesan.

list_messages mengembalikan berbagai jenis pesan, yang Anda identifikasi dari ChatMessage.type.

Untuk informasi selengkapnya, lihat Jenis pesan.

Kirimkan konfirmasi bahwa pesan telah dibaca

Anda menggunakan metode send_read_receipt untuk memposting peristiwa tanda terima baca ke utas, atas nama seorang pengguna.

  • Gunakan message_id untuk menentukan ID pesan terbaru yang dibaca oleh pengguna saat ini.
content='hello world'

send_message_result = chat_thread_client.send_message(content)
chat_thread_client.send_read_receipt(message_id=send_message_result.id)

Tambahkan pengguna sebagai peserta ke thread obrolan

Ketika membuat utas obrolan, Anda kemudian dapat menambahkan dan menghapus pengguna darinya. Dengan menambahkan pengguna, Anda memberi mereka akses untuk dapat mengirim pesan ke utas obrolan, dan menambahkan atau menghapus peserta lain. Sebelum memanggil metode , pastikan Anda memperoleh token akses dan identitas baru untuk pengguna tersebut add_participants . Pengguna memerlukan token akses tersebut untuk menginisialisasi klien obrolan.

Anda dapat menambahkan satu atau beberapa pengguna ke utas obrolan dengan menggunakan add_participants metode , jika token akses dan identitas baru tersedia untuk semua pengguna.

list(tuple(ChatParticipant, CommunicationError)) dikembalikan. Setelah peserta berhasil ditambahkan, diharapkan muncul daftar kosong. Jika Anda mengalami kesalahan saat menambahkan peserta, daftar diisi dengan peserta yang gagal dan kesalahan yang ditemui.

from azure.communication.identity import CommunicationIdentityClient
from azure.communication.chat import ChatParticipant
from datetime import datetime

# create 2 users
identity_client = CommunicationIdentityClient.from_connection_string('<connection_string>')
new_users = [identity_client.create_user() for i in range(2)]

# # conversely, you can also add an existing user to a chat thread; provided the user_id is known
# from azure.communication.identity import CommunicationUserIdentifier
#
# user_id = 'some user id'
# user_display_name = "Wilma Flinstone"
# new_user = CommunicationUserIdentifier(user_id)
# participant = ChatParticipant(
#     identifier=new_user,
#     display_name=user_display_name,
#     share_history_time=datetime.utcnow())

participants = []
for _user in new_users:
  chat_thread_participant = ChatParticipant(
    identifier=_user,
    display_name='Fred Flinstone',
    share_history_time=datetime.utcnow()
  ) 
  participants.append(chat_thread_participant) 

response = chat_thread_client.add_participants(participants)

def decide_to_retry(error, **kwargs):
    """
    Insert some custom logic to decide if retry is applicable based on error
    """
    return True

# verify if all users has been successfully added or not
# in case of partial failures, you can retry to add all the failed participants 
retry = [p for p, e in response if decide_to_retry(e)]
if retry:
    chat_thread_client.add_participants(retry)

Menampilkan peserta dalam utas obrolan

Serupa dengan menambahkan peserta, Anda juga dapat mencantumkan peserta dari utas.

Gunakan list_participants untuk mengambil peserta diskusi. Kedua perintah berikut bersifat opsional:

  • Gunakan results_per_page untuk menentukan jumlah maksimum peserta yang akan dikembalikan per halaman.
  • Gunakan skip untuk melompati peserta hingga posisi tertentu dalam respons.

Iterator dari [ChatParticipant] adalah respons yang dikembalikan dari daftar peserta.

chat_thread_participants = chat_thread_client.list_participants()
for chat_thread_participant_page in chat_thread_participants.by_page():
    for chat_thread_participant in chat_thread_participant_page:
        print("ChatParticipant: ", chat_thread_participant)

Menjalankan kode

Menjalankan aplikasi dari direktori aplikasi Anda dengan perintah python.

python start-chat.py

Contoh kode

Temukan kode akhir untuk artikel ini di sampel GitHub Tambahkan Obrolan ke aplikasi Anda.

Prasyarat

Pengaturan

Membuat aplikasi Java baru

Buka terminal atau jendela perintah Anda dan arahkan ke direktori tempat Anda ingin membuat aplikasi Java. Jalankan perintah berikut untuk menghasilkan proyek Java dari maven-archetype-quickstart templat.

mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false

Tujuan generate adalah membuat direktori dengan nama yang sama dengan artifactId. Di bawah direktori ini, src/main/java directory berisi kode sumber proyek, src/test/java direktori berisi sumber pengujian, dan pom.xml file adalah Project Object Model proyek, atau POM.

Perbarui file POM aplikasi Anda untuk menggunakan Java 8 atau versi yang lebih baru:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Tambahkan rujukan paket untuk SDK Obrolan

Dalam file POM Anda, referensikan paket azure-communication-chat dengan Chat API:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-chat</artifactId>
    <version><!-- Please refer to https://search.maven.org/artifact/com.azure/azure-communication-chat for the latest version --></version>
</dependency>

Untuk autentikasi, klien Anda perlu mereferensikan paket azure-communication-common:

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-communication-common</artifactId>
    <version><!-- Please refer to https://search.maven.org/artifact/com.azure/azure-communication-common for the latest version --></version>
</dependency>

Model objek

Kelas dan antarmuka berikut menangani beberapa fitur utama SDK Obrolan Azure Communication Services untuk Java.

Nama Deskripsi
ChatClient Kelas ini diperlukan untuk fungsionalitas obrolan. Anda menginstansiasi dengan informasi berlangganan Anda, dan menggunakannya untuk membuat, memperoleh, dan menghapus utas.
ChatAsyncClient Kelas ini diperlukan untuk fungsionalitas Obrolan asinkron. Anda menginstansiasi dengan informasi berlangganan Anda, dan menggunakannya untuk membuat, memperoleh, dan menghapus utas.
ChatThreadClient Kelas ini diperlukan untuk fungsionalitas Thread Percakapan. Anda mendapatkan instans melalui ChatClient dan menggunakannya untuk mengirim/menerima/memperbarui/menghapus pesan, menambah/menghapus/mendapatkan pengguna, mengirim pemberitahuan pengetikan dan tanda terima baca.
ChatThreadAsyncClient Kelas ini diperlukan untuk fungsionalitas Chat Thread asinkron. Anda mendapatkan instans melalui ChatAsyncClient dan menggunakannya untuk mengirim, menerima, memperbarui, atau menghapus pesan; menambah, menghapus, atau mendapatkan pengguna; serta mengirim pemberitahuan pengetikan dan tanda terima baca.

Membuat aplikasi obrolan

Untuk membuat klien obrolan, gunakan endpoint layanan komunikasi dan token akses yang dihasilkan sebagai bagian dari langkah prasyarat. Token akses pengguna memungkinkan Anda membangun aplikasi klien yang langsung mengautentikasi ke Azure Communication Services. Setelah membuat token ini di server Anda, teruskan kembali ke perangkat klien. Anda perlu menggunakan kelas CommunicationTokenCredential dari SDK Umum untuk meneruskan token ke klien obrolan Anda.

Pelajari selengkapnya tentang Arsitektur Obrolan

Saat menambahkan laporan impor, pastikan untuk hanya menambahkan impor dari namespace com.azure.communication.chat dan com.azure.communication.chat.models, dan bukan dari namespace com.azure.communication.chat.implementation. Dalam file App.java yang dibuat melalui Maven, Anda dapat menggunakan kode berikut untuk memulai dengan:

package com.communication.quickstart;

import com.azure.communication.chat.*;
import com.azure.communication.chat.models.*;
import com.azure.communication.common.*;
import com.azure.core.http.rest.PagedIterable;

import java.io.*;
import java.util.*;

public class App
{
    public static void main( String[] args ) throws IOException
    {
        System.out.println("Azure Communication Services - Chat Quickstart");

        // Your unique Azure Communication service endpoint
        String endpoint = "<replace with your resource endpoint>";

        // User access token fetched from your trusted service
        String userAccessToken = "<USER_ACCESS_TOKEN>";

        // Create a CommunicationTokenCredential with the given access token, which is only valid until the token is valid
        CommunicationTokenCredential userCredential = new CommunicationTokenCredential(userAccessToken);

        // Initialize the chat client
        final ChatClientBuilder builder = new ChatClientBuilder();
        builder.endpoint(endpoint)
            .credential(userCredential);
        ChatClient chatClient = builder.buildClient();
    }
}

Mulailah utas obrolan

Gunakan metode createChatThread untuk membuat percakapan obrolan. createChatThreadOptions digunakan untuk mendeskripsikan permintaan utas.

  • Gunakan parameter topic konstruktor untuk memberikan topik pada obrolan ini; Topik dapat diperbarui setelah utas obrolan dibuat menggunakan fungsi UpdateThread.
  • Gunakan participants untuk mencantumkan peserta utas yang akan ditambahkan ke dalamnya. ChatParticipant mengambil data pengguna yang Anda buat di Token Akses Pengguna.

CreateChatThreadResult adalah respons yang dihasilkan dari pembuatan utas obrolan. Ini berisi metode getChatThread(), yang mengembalikan objek ChatThread yang dapat digunakan untuk mendapatkan klien utas yang memungkinkan Anda mendapatkan ChatThreadClient untuk melakukan operasi pada utas yang dibuat: menambahkan peserta, mengirim pesan, dll. Objek ChatThread juga berisi metode getId(), yang mengambil ID unik utas.

CommunicationUserIdentifier identity1 = new CommunicationUserIdentifier("<USER_1_ID>");
CommunicationUserIdentifier identity2 = new CommunicationUserIdentifier("<USER_2_ID>");

ChatParticipant firstThreadParticipant = new ChatParticipant()
    .setCommunicationIdentifier(identity1)
    .setDisplayName("Participant Display Name 1");

ChatParticipant secondThreadParticipant = new ChatParticipant()
    .setCommunicationIdentifier(identity2)
    .setDisplayName("Participant Display Name 2");

CreateChatThreadOptions createChatThreadOptions = new CreateChatThreadOptions("Topic")
    .addParticipant(firstThreadParticipant)
    .addParticipant(secondThreadParticipant);

CreateChatThreadResult result = chatClient.createChatThread(createChatThreadOptions);
String chatThreadId = result.getChatThread().getId();

Daftar utas percakapan

Gunakan metode listChatThreads untuk mendapatkan daftar utas obrolan yang sudah ada.

PagedIterable<ChatThreadItem> chatThreads = chatClient.listChatThreads();

chatThreads.forEach(chatThread -> {
    System.out.printf("ChatThread id is %s.\n", chatThread.getId());
});

Dapatkan klien percakapan obrolan

Metode getChatThreadClient mengembalikan klien utas untuk sebuah utas yang sudah ada. Ini dapat digunakan untuk melakukan operasi pada utas yang dibuat: menambahkan peserta, mengirim pesan, dll. chatThreadId adalah ID unik dari utas obrolan yang ada.

ChatThreadClient chatThreadClient = chatClient.getChatThreadClient(chatThreadId);

Kirim pesan ke utas obrolan

Gunakan metode sendMessage untuk mengirim pesan ke utas yang Anda buat, yang diidentifikasi oleh chatThreadId. sendChatMessageOptions digunakan untuk mendeskripsikan permintaan pesan obrolan.

  • Gunakan content untuk menyediakan konten pesan obrolan.
  • Gunakan type untuk menentukan jenis konten pesan obrolan, TEXT atau HTML.
  • Gunakan senderDisplayName untuk menentukan nama tampilan pengirim.
  • Gunakan metadata secara opsional untuk menyertakan data lain yang ingin Anda kirim bersama dengan pesan. Bidang ini menyediakan mekanisme bagi pengembang untuk memperluas fungsionalitas pesan obrolan dan menambahkan informasi kustom untuk kasus penggunaan Anda. Misalnya, saat berbagi tautan file dalam pesan, Anda mungkin ingin menambahkan hasAttachment:true metadata sehingga aplikasi penerima dapat mengurainya dan menampilkannya.

Respons sendChatMessageResult berisi id, yang merupakan ID unik pesan.

Map<String, String> metadata = new HashMap<String, String>();
metadata.put("hasAttachment", "true");
metadata.put("attachmentUrl", "https://contoso.com/files/attachment.docx");

SendChatMessageOptions sendChatMessageOptions = new SendChatMessageOptions()
    .setContent("Please take a look at the attachment")
    .setType(ChatMessageType.TEXT)
    .setSenderDisplayName("Sender Display Name")
    .setMetadata(metadata);

SendChatMessageResult sendChatMessageResult = chatThreadClient.sendMessage(sendChatMessageOptions);
String chatMessageId = sendChatMessageResult.getId();

Menerima pesan obrolan dari utas obrolan

Anda dapat mengambil pesan obrolan dengan melakukan polling pada metode listMessages pada klien thread obrolan pada interval tertentu.

chatThreadClient.listMessages().forEach(message -> {
    System.out.printf("Message id is %s.\n", message.getId());
});

listMessages menampilkan versi terbaru pesan, termasuk pengeditan atau penghapusan yang terjadi pada pesan menggunakan .editMessage() dan .deleteMessage(). Untuk pesan yang dihapus, chatMessage.getDeletedOn() akan menampilkan nilai tanggalwaktu yang menunjukkan kapan pesan tersebut dihapus. Untuk pesan yang diedit, chatMessage.getEditedOn() akan menampilkan tanggalwaktu yang menunjukkan kapan pesan diedit. Waktu asli pembuatan pesan dapat diakses menggunakan chatMessage.getCreatedOn(), dan dapat digunakan untuk memesan pesan.

Baca selengkapnya tentang jenis pesan di sini: Jenis Pesan.

Kirimkan konfirmasi bahwa pesan telah dibaca

Gunakan metode sendReadReceipt untuk memposting peristiwa tanda terima baca ke utas obrolan, atas nama pengguna. chatMessageId adalah ID unik dari pesan obrolan yang dibaca.

String chatMessageId = message.getId();
chatThreadClient.sendReadReceipt(chatMessageId);

Daftar peserta obrolan

Gunakan listParticipants untuk mengambil kumpulan halaman yang berisi peserta utas obrolan yang diidentifikasi oleh chatThreadId.

PagedIterable<ChatParticipant> chatParticipantsResponse = chatThreadClient.listParticipants();
chatParticipantsResponse.forEach(chatParticipant -> {
    System.out.printf("Participant id is %s.\n", ((CommunicationUserIdentifier) chatParticipant.getCommunicationIdentifier()).getId());
});

Menambahkan pengguna sebagai peserta dalam utas obrolan

Setelah utas obrolan dibuat, Anda kemudian dapat menambahkan dan menghapus pengguna dari utas tersebut. Dengan menambahkan pengguna, Anda memberi mereka akses untuk mengirim pesan ke utas obrolan, dan menambahkan/menghapus peserta lain. Anda perlu memulai dengan mendapatkan token akses dan identitas baru untuk pengguna tersebut. Sebelum memanggil addParticipants metode, pastikan Anda memperoleh token akses dan identitas baru untuk pengguna tersebut. Pengguna memerlukan token akses tersebut untuk menginisialisasi klien obrolan mereka.

Gunakan metode addParticipants untuk menambahkan peserta ke utas.

  • communicationIdentifier, diperlukan, adalah CommunicationIdentifier yang Anda buat oleh CommunicationIdentityClient di Token Akses Pengguna.
  • displayName, opsional, adalah nama tampilan untuk peserta utas.
  • shareHistoryTime, opsional, adalah waktu saat riwayat obrolan dibagikan dengan peserta. Untuk membagikan riwayat sejak awal utas obrolan, atur properti ini ke tanggal yang sama dengan, atau kurang dari waktu pembuatan utas. Untuk tidak membagikan riwayat sebelum saat peserta ditambahkan, atur riwayat ke tanggal saat ini. Untuk membagikan sebagian riwayat, atur ke tanggal yang diperlukan.
List<ChatParticipant> participants = new ArrayList<ChatParticipant>();

CommunicationUserIdentifier identity3 = new CommunicationUserIdentifier("<USER_3_ID>");
CommunicationUserIdentifier identity4 = new CommunicationUserIdentifier("<USER_4_ID>");

ChatParticipant thirdThreadParticipant = new ChatParticipant()
    .setCommunicationIdentifier(identity3)
    .setDisplayName("Display Name 3");

ChatParticipant fourthThreadParticipant = new ChatParticipant()
    .setCommunicationIdentifier(identity4)
    .setDisplayName("Display Name 4");

participants.add(thirdThreadParticipant);
participants.add(fourthThreadParticipant);

chatThreadClient.addParticipants(participants);

Menjalankan kode

Navigasi ke direktori yang berisi pom.xml file dan kompilasi proyek dengan menggunakan perintah berikut mvn .

mvn compile

Kemudian, buat paketnya.

mvn package

Jalankan perintah mvn berikut untuk menjalankan aplikasi.

mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false

Contoh kode

Temukan kode akhir untuk artikel ini di sampel GitHub Tambahkan Obrolan ke aplikasi Anda.

Prasyarat

  • Buat akun Azure dengan langganan aktif. Untuk detailnya, lihat Membuat akun gratis.

  • Instal Android Studio, kami menggunakan Android Studio untuk membuat aplikasi Android dan menginstal dependensi.

  • Buat sumber daya Azure Communication Services. Untuk detailnya, lihat Membuat sumber daya Azure Communication Services. Anda perlu merekam titik akhir sumber daya dan string koneksi untuk artikel ini.

  • Buat dua Pengguna Communication Services dan terbitkan Token Akses Pengguna. Pastikan untuk mengatur cakupan ke obrolan, dan catat string token dan string user_id. Dalam artikel berikut, kami membuat utas dengan peserta awal dan lalu menambahkan peserta kedua ke utas. Anda juga dapat menggunakan Azure CLI dan menjalankan perintah berikut dengan string koneksi Anda untuk membuat pengguna dan token akses.

    az communication identity token issue --scope chat --connection-string "yourConnectionString"
    

    Untuk detailnya, lihat Menggunakan Azure CLI untuk Membuat dan Mengelola Token Akses.

Pengaturan

Buat aplikasi android baru

  1. Buka Android Studio dan pilih Create a new project.
  2. Pada windows selanjutnya, pilih Empty Views Activity sebagai templat proyek.
  3. Ketika memilih opsi, masukan ChatQuickstart sebagai nama proyek.
  4. Sampel ini menggunakan Java sebagai bahasa
  5. Klik selanjutnya dan pilih direktori di mana Anda ingin proyek dibuat.

Instal pustaka

Kami menggunakan Gradle untuk menginstal dependensi Communication Services yang diperlukan. Dari baris perintah, navigasikan kedalam direktori akar dari proyek ChatQuickstart. Buka file aplikasi build.gradle dan tambahkan dependensi dibawah ini pada ChatQuickstart target:

implementation libs.azure.communication.common
implementation libs.azure.communication.chat
implementation libs.slf4j.log4j12

Untuk nomor versi terbaru, lihat https://search.maven.org/artifact/com.azure.android/azure-communication-common dan https://search.maven.org/artifact/com.azure.android/azure-communication-chat.

Mengecualikan file meta dalam opsi pengemasan pada build.gradle di root

android {
   ...
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/license'
        exclude 'META-INF/NOTICE'
        exclude 'META-INF/notice'
        exclude 'META-INF/ASL2.0'
        exclude("META-INF/*.md")
        exclude("META-INF/*.txt")
        exclude("META-INF/*.kotlin_module")
    }
}

(Alternatif) Untuk menginstal pustaka melalui Maven

Untuk mengimpor pustaka ke dalam proyek Anda menggunakan sistem build Maven, tambahkan ke dalam bagian dependencies dari file aplikasi Anda pom.xml, dengan menentukan ID artefak dan versi yang ingin Anda gunakan.

<dependency>
  <groupId>com.azure.android</groupId>
  <artifactId>azure-communication-chat</artifactId>
  <version><!-- Please refer to https://search.maven.org/artifact/com.azure.android/azure-communication-chat for the latest version --></version>
</dependency>

Menyiapkan Azure Function

Untuk detailnya, lihat Integrasi Azure Function. Sebaiknya integrasikan dengan Azure Function untuk menghindari parameter aplikasi hard-coding.

Menyiapkan konstanta aplikasi

Buat kelas ApplicationConstants yang menyimpan semua konstanta aplikasi:

public class ApplicationConstants {
    public static final String SDK_VERSION = "<your_version>";
    public final static String SDK_NAME = "azure-communication-com.azure.android.communication.chat";
    public final static String APPLICATION_ID = "Chat_Test_App";
    public final static String TAG = "[Chat Test App]";
    public static CommunicationTokenCredential COMMUNICATION_TOKEN_CREDENTIAL;
}

Siapkan placeholder

Buka dan edit file MainActivity.java. Dalam artikel ini, kami menambahkan kode kami ke MainActivity, dan melihat output di konsol. Artikel ini tidak membahas pembuatan UI. Di bagian atas file, impor Azure Communication Common, Azure Communication Chat, dan pustaka sistem lainnya:

import com.azure.android.communication.chat.*;
import com.azure.android.communication.chat.models.*;
import com.azure.android.communication.common.*;

import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.jakewharton.threetenabp.AndroidThreeTen;

import java.util.ArrayList;
import java.util.List;

Salin kode berikut pada kelas MainActivity dalam file MainActivity.java:

    private ChatAsyncClient chatAsyncClient;

    private void log(String msg) {
        Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
    }
    
   @Override
    protected void onStart() {
        super.onStart();
        try {
            AndroidThreeTen.init(this);

            // Initialize application parameters if one of the conditions in '### Initialize Application Parameters' are met.

            // <CREATE A CHAT CLIENT>

            // <CREATE A CHAT THREAD>

            // <CREATE A CHAT THREAD CLIENT>

            // <SEND A MESSAGE>
            
            // <RECEIVE CHAT MESSAGES>

            // <ADD A USER>

            // <LIST USERS>

            // <REMOVE A USER>
            
            // <<SEND A TYPING NOTIFICATION>>
            
            // <<SEND A READ RECEIPT>>
               
            // <<LIST READ RECEIPTS>>
        } catch (Exception e){
            System.out.println("Quickstart failed: " + e.getMessage());
        }
    }

Menginisialisasi Parameter Aplikasi

Catatan

Inisialisasi ApplicationConstants perlu ditambahkan ke MainActivity.java jika salah satu dari kedua kondisi berikut terpenuhi: 1. Fitur pemberitahuan push TIDAK diaktifkan. 2. Versi pustaka Azure Communication Chat untuk Android adalah < 2.0.0. Jika tidak, lihat langkah 11 di pemberitahuan push Android. Lihat contoh APLIKASI versi SDK yang Anda gunakan untuk referensi.

ACS_ENDPOINT, FIRST_USER_ID, dan FIRST_USER_ACCESS_TOKEN dikembalikan dari memanggil Azure Function. Untuk informasi selengkapnya, lihat Integrasi Azure Function. Kami menggunakan respons dari memanggil Azure Function untuk menginisialisasi daftar parameter:

  • ACS_ENDPOINT: titik akhir sumber daya Layanan Komunikasi Anda.
  • FIRST_USER_ID dan SECOND_USER_ID: ID pengguna Communication Services yang valid yang dihasilkan oleh sumber daya Communication Services Anda.
  • FIRST_USER_ACCESS_TOKEN: token akses Communication Services untuk <FIRST_USER_ID>.

Blok kode untuk menginisialisasi parameter aplikasi dengan memanggil Azure Function:

try {
        UserTokenClient userTokenClient = new UserTokenClient(AZURE_FUNCTION_URL);
        //First user context
        userTokenClient.getNewUserContext();
        ACS_ENDPOINT = userTokenClient.getACSEndpoint();
        FIRST_USER_ID = userTokenClient.getUserId();
        FIRST_USER_ACCESS_TOKEN = userTokenClient.getUserToken();
        COMMUNICATION_TOKEN_CREDENTIAL = new CommunicationTokenCredential(FIRST_USER_ACCESS_TOKEN);
        //Second user context
        userTokenClient.getNewUserContext();
        SECOND_USER_ID = userTokenClient.getUserId();
    } catch (Throwable throwable) {
        //Your handling code
        logger.logThrowableAsError(throwable);
    }

Membuat aplikasi obrolan

Ganti komentar <CREATE A CHAT CLIENT> dengan kode berikut (letakkan pernyataan impor di atas file):

import com.azure.android.core.http.policy.UserAgentPolicy;

chatAsyncClient = new ChatClientBuilder()
    .endpoint(endpoint)
    .credential(new CommunicationTokenCredential(firstUserAccessToken))
    .addPolicy(new UserAgentPolicy(APPLICATION_ID, SDK_NAME, sdkVersion))
    .buildAsyncClient();

Model objek

Kelas dan tatap muka berikut menangani beberapa fitur utama SDK Obrolan Azure Communication Services untuk JavaScript.

Nama Deskripsi
ChatClient/ChatAsyncClient Kelas ini diperlukan untuk fungsionalitas obrolan. Anda menginstansiasi dengan informasi langganan Anda, dan menggunakannya untuk membuat, mendapatkan, menghapus utas, dan berlangganan acara obrolan.
ChatThreadClient/ChatThreadAsyncClient Kelas ini diperlukan untuk fungsionalitas Thread Percakapan. Anda mendapatkan instans melalui ChatClient dan menggunakannya untuk mengirim/menerima/memperbarui/menghapus pesan, menambah/menghapus/mendapatkan pengguna, mengirim pemberitahuan pengetikan dan tanda terima baca.

Mulailah utas obrolan

Gunakan ChatAsyncClient kami untuk membuat utas baru dengan pengguna awal.

Ganti komentar <CREATE A CHAT THREAD> dengan kode berikut:

// A list of ChatParticipant to start the thread with.
List<ChatParticipant> participants = new ArrayList<>();
// The display name for the thread participant.
String displayName = "initial participant";
participants.add(new ChatParticipant()
    .setCommunicationIdentifier(new CommunicationUserIdentifier(firstUserId))
    .setDisplayName(displayName));

// The topic for the thread.
final String topic = "General";
// Optional, set a repeat request ID.
final String repeatabilityRequestID = "";
// Options to pass to the create method.
CreateChatThreadOptions createChatThreadOptions = new CreateChatThreadOptions()
    .setTopic(topic)
    .setParticipants(participants)
    .setIdempotencyToken(repeatabilityRequestID);

CreateChatThreadResult createChatThreadResult =
    chatAsyncClient.createChatThread(createChatThreadOptions).get();
ChatThreadProperties chatThreadProperties = createChatThreadResult.getChatThreadProperties();
threadId = chatThreadProperties.getId();

Dapatkan klien percakapan obrolan

Sekarang setelah kita membuat utas Obrolan, kita perlu mendapatkan ChatThreadAsyncClient untuk melakukan operasi dalam utas. Ganti komentar <CREATE A CHAT THREAD CLIENT> dengan kode berikut:

ChatThreadAsyncClient chatThreadAsyncClient = new ChatThreadClientBuilder()
    .endpoint(endpoint)
    .credential(new CommunicationTokenCredential(firstUserAccessToken))
    .addPolicy(new UserAgentPolicy(APPLICATION_ID, SDK_NAME, sdkVersion))
    .chatThreadId(threadId)
    .buildAsyncClient();

Kirim pesan ke utas obrolan

Kirim pesan ke utas obrolan sekarang.

Ganti komentar <SEND A MESSAGE> dengan kode berikut:

// The chat message content, required.
final String content = "Please take a look at the attachment";

// The display name of the sender, if null (i.e. not specified), an empty name will be set.
final String senderDisplayName = "An important person";

// Use metadata optionally to include any additional data you want to send along with the message.
// This field provides a mechanism for developers to extend chat message functionality and add
// custom information for your use case. For example, when sharing a file link in the message, you
// might want to add 'hasAttachment:true' in metadata so that recipient's application can parse
// that and display accordingly.
final Map<String, String> metadata = new HashMap<String, String>();
metadata.put("hasAttachment", "true");
metadata.put("attachmentUrl", "https://contoso.com/files/attachment.docx");

SendChatMessageOptions chatMessageOptions = new SendChatMessageOptions()
    .setType(ChatMessageType.TEXT)
    .setContent(content)
    .setSenderDisplayName(senderDisplayName)
    .setMetadata(metadata);

// A string is the response returned from sending a message, it is an id, which is the unique ID
// of the message.
chatMessageId = chatThreadAsyncClient.sendMessage(chatMessageOptions).get().getId();

Menerima pesan obrolan dari utas obrolan

Pemberitahuan real-time

Dengan penanda waktu nyata, Anda dapat berlangganan pesan masuk baru dan memperbarui pesan yang ada di dalam memori. Azure Communication Services mendukung daftar peristiwa yang dapat Anda ikuti.

Ganti komentar <RECEIVE CHAT MESSAGES> dengan kode berikut (letakkan pernyataan impor di atas file):


// Start real time notification
chatAsyncClient.startRealtimeNotifications(firstUserAccessToken, getApplicationContext());

// Register a listener for chatMessageReceived event
chatAsyncClient.addEventHandler(ChatEventType.CHAT_MESSAGE_RECEIVED, (ChatEvent payload) -> {
    ChatMessageReceivedEvent chatMessageReceivedEvent = (ChatMessageReceivedEvent) payload;
    // You code to handle chatMessageReceived event
    
});

Penting

Masalah yang diketahui: Saat Anda menggunakan Android Chat dan Calling SDK bersama-sama dalam aplikasi yang sama, fitur pemberitahuan secara langsung SDK Obrolan tidak berfungsi. Anda mungkin menghadapi masalah penyelesaian dependensi. Anda dapat menonaktifkan fitur pemberitahuan real-time dengan menambahkan informasi dependensi berikut dalam file aplikasi build.gradle dan sebaliknya melakukan polling GETMessages API untuk menampilkan pesan masuk kepada pengguna.

implementation ("com.azure.android:azure-communication-chat:1.0.0") {
    exclude group: 'com.microsoft', module: 'trouter-client-android'
}
implementation 'com.azure.android:azure-communication-calling:1.0.0'

Perhatikan dengan pembaruan ini, jika aplikasi mencoba menghubungi API pemberitahuan menggunakan chatAsyncClient.startRealtimeNotifications() atau chatAsyncClient.addEventHandler(), itu menghasilkan kesalahan runtime.

Pemberitahuan push

Untuk informasi selengkapnya, lihat Pemberitahuan push Android.

Tambahkan pengguna sebagai peserta ke thread obrolan

Ganti komentar <ADD A USER> dengan kode berikut:

// The display name for the thread participant.
String secondUserDisplayName = "a new participant";
ChatParticipant participant = new ChatParticipant()
    .setCommunicationIdentifier(new CommunicationUserIdentifier(secondUserId))
    .setDisplayName(secondUserDisplayName);
        
chatThreadAsyncClient.addParticipant(participant);

Mencantumkan Daftar pengguna di utas

Ganti <LIST USERS> komentar dengan kode berikut (letakan pernyataan impor pada bagian atas file):

import com.azure.android.core.rest.util.paging.PagedAsyncStream;
import com.azure.android.core.util.RequestContext;

// The maximum number of participants to be returned per page, optional.
int maxPageSize = 10;

// Skips participants up to a specified position in response.
int skip = 0;

// Options to pass to the list method.
ListParticipantsOptions listParticipantsOptions = new ListParticipantsOptions()
    .setMaxPageSize(maxPageSize)
    .setSkip(skip);

PagedAsyncStream<ChatParticipant> participantsPagedAsyncStream =
      chatThreadAsyncClient.listParticipants(listParticipantsOptions, RequestContext.NONE);

participantsPagedAsyncStream.forEach(chatParticipant -> {
    // You code to handle participant
});

Menghapus pengguna dari percakapan obrolan

Hapus pengguna nomor dua dari utas.

Ganti komentar <REMOVE A USER> dengan kode berikut:

// Using the unique ID of the participant.
chatThreadAsyncClient.removeParticipant(new CommunicationUserIdentifier(secondUserId)).get();

Kirim pemberitahuan pengetikan

Ganti komentar <SEND A TYPING NOTIFICATION> dengan kode berikut:

chatThreadAsyncClient.sendTypingNotification().get();

Kirim tanda terima baca

Kami mengirim tanda terima baca untuk pesan yang dikirim sebelumnya.

Ganti komentar <SEND A READ RECEIPT> dengan kode berikut:

chatThreadAsyncClient.sendReadReceipt(chatMessageId).get();

Daftar tanda terima yang telah dibaca

Ganti komentar <READ RECEIPTS> dengan kode berikut:

// The maximum number of participants to be returned per page, optional.
maxPageSize = 10;
// Skips participants up to a specified position in response.
skip = 0;
// Options to pass to the list method.
ListReadReceiptOptions listReadReceiptOptions = new ListReadReceiptOptions()
    .setMaxPageSize(maxPageSize)
    .setSkip(skip);

PagedAsyncStream<ChatMessageReadReceipt> readReceiptsPagedAsyncStream =
      chatThreadAsyncClient.listReadReceipts(listReadReceiptOptions, RequestContext.NONE);

readReceiptsPagedAsyncStream.forEach(readReceipt -> {
    // You code to handle readReceipt
});

Menjalankan kode

Di Android Studio, tekan tombol Run untuk membuat dan menjalankan proyek. Pada konsol, Anda dapat melihat output dari kode dan output logger dari ChatClient.

Contoh kode

Temukan kode akhir untuk artikel ini di sampel GitHub Tambahkan Obrolan ke aplikasi Anda.

Prasyarat

Pengaturan

Membuat aplikasi C# baru

Di jendela konsol (seperti cmd, PowerShell, atau Bash), gunakan perintah dotnet new untuk membuat aplikasi konsol baru dengan nama ChatQuickstart. Perintah ini membuat proyek C# "Halo Dunia" sederhana dengan file sumber tunggal: Program.cs.

dotnet new console -o ChatQuickstart

Ubah direktori Anda ke folder aplikasi yang baru dibuat dan gunakan perintah dotnet build untuk mengompilasi aplikasi Anda.

cd ChatQuickstart
dotnet build

Menginstal paket

Menginstal Azure Communication Chat SDK untuk .NET

dotnet add package Azure.Communication.Chat

Model objek

Kelas berikut menangani beberapa fitur utama Azure Communication Services Chat SDK untuk C#.

Nama Deskripsi
ChatClient Kelas ini diperlukan untuk fungsionalitas obrolan. Anda menginstansiasi dengan informasi berlangganan Anda, dan menggunakannya untuk membuat, memperoleh, dan menghapus utas.
ChatThreadClient Kelas ini diperlukan untuk fungsionalitas Thread Percakapan. Anda mendapatkan instans melalui ChatClient dan menggunakannya untuk mengirim/menerima/memperbarui/menghapus pesan, menambahkan/menghapus/mendapatkan peserta, mengirim pemberitahuan pengetikan, dan membaca tanda terima.

Membuat aplikasi obrolan

Untuk membuat klien obrolan, gunakan titik akhir Communication Services Anda dan token akses yang dihasilkan sebagai bagian dari langkah-langkah prasyarat. Anda perlu menggunakan kelas CommunicationIdentityClient dari SDK Identitas untuk membuat pengguna dan menerbitkan token untuk diteruskan ke klien obrolan Anda.

Pelajari selengkapnya tentang Token Akses Pengguna.

Artikel ini tidak mencakup pembuatan tingkat layanan untuk mengelola token untuk aplikasi obrolan Anda, meskipun kami merekomendasikannya. Untuk informasi selengkapnya, lihat Arsitektur Obrolan.

Salin cuplikan kode berikut dan tempelkan ke Program.cs file sumber.

using Azure;
using Azure.Communication;
using Azure.Communication.Chat;
using System;

namespace ChatQuickstart
{
    class Program
    {
        static async System.Threading.Tasks.Task Main(string[] args)
        {
            // Your unique Azure Communication service endpoint
            Uri endpoint = new Uri("<replace with your resource endpoint>");

            CommunicationTokenCredential communicationTokenCredential = new CommunicationTokenCredential(<Access_Token>);
            ChatClient chatClient = new ChatClient(endpoint, communicationTokenCredential);
        }
    }
}

Mulailah utas obrolan

Gunakan metode createChatThread pada chatClient untuk membuat utas obrolan

  • Gunakan topic untuk memberikan topik pada obrolan ini. Anda dapat memperbarui topik setelah membuat utas obrolan menggunakan UpdateTopic fungsi .
  • Gunakan properti participants untuk meneruskan daftar objek ChatParticipant yang akan ditambahkan ke utas obrolan. Objek ChatParticipant diinisialisasi dengan objek CommunicationIdentifier. CommunicationIdentifier bisa berjenis CommunicationUserIdentifier, MicrosoftTeamsUserIdentifier, atau PhoneNumberIdentifier. Misalnya, untuk mendapatkan CommunicationIdentifier objek, Anda perlu meneruskan ID Akses yang Anda buat dengan mengikuti instruksi untuk Membuat pengguna

Objek respons dari metode createChatThread berisi detail chatThread. Untuk berinteraksi dengan operasi utas obrolan seperti menambahkan peserta, mengirim pesan, menghapus pesan, dan sebagainya, sebuah instans klien chatThreadClient perlu diinstansiasi menggunakan metode GetChatThreadClient pada klien ChatClient.

var chatParticipant = new ChatParticipant(identifier: new CommunicationUserIdentifier(id: "<Access_ID>"))
{
    DisplayName = "UserDisplayName"
};
CreateChatThreadResult createChatThreadResult = await chatClient.CreateChatThreadAsync(topic: "Hello world!", participants: new[] { chatParticipant });
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(threadId: createChatThreadResult.ChatThread.Id);
string threadId = chatThreadClient.Id;

Dapatkan klien percakapan obrolan

Metode GetChatThreadClient mengembalikan klien utas untuk sebuah utas yang sudah ada. Anda dapat menggunakannya untuk melakukan operasi pada utas yang dibuat: menambahkan anggota, mengirim pesan, dan sebagainya. threadId adalah ID unik untuk utas obrolan yang ada.

string threadId = "<THREAD_ID>";
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(threadId: threadId);

Daftar semua utas obrolan

Gunakan GetChatThreads untuk mengambil semua utas obrolan di mana pengguna terlibat.

AsyncPageable<ChatThreadItem> chatThreadItems = chatClient.GetChatThreadsAsync();
await foreach (ChatThreadItem chatThreadItem in chatThreadItems)
{
    Console.WriteLine($"{ chatThreadItem.Id}");
}

Kirim pesan ke utas obrolan

Gunakan SendMessage untuk mengirim pesan ke utas.

  • Gunakan content untuk menyediakan konten untuk pesan. Dibutuhkan.
  • Gunakan type untuk jenis konten pesan seperti 'Teks' atau 'Html'. Jika tidak ditentukan, 'Teks' akan disetel.
  • Gunakan senderDisplayName untuk menentukan nama tampilan pengirim. Jika tidak ditentukan, string kosong diberikan.
  • Opsional: Gunakan metadata untuk menyertakan data lain yang ingin Anda kirim bersama dengan pesan. Bidang ini menyediakan mekanisme bagi pengembang untuk memperluas fungsionalitas pesan obrolan dan menambahkan informasi kustom untuk kasus penggunaan Anda. Misalnya, saat berbagi tautan file di pesan, Anda mungkin ingin menambahkan 'hasAttachment:true' dalam metadata sehingga aplikasi penerima dapat mengurainya dan menampilkannya.
SendChatMessageOptions sendChatMessageOptions = new SendChatMessageOptions()
{
    Content = "Please take a look at the attachment",
    MessageType = ChatMessageType.Text
};
sendChatMessageOptions.Metadata["hasAttachment"] = "true";
sendChatMessageOptions.Metadata["attachmentUrl"] = "https://contoso.com/files/attachment.docx";

SendChatMessageResult sendChatMessageResult = await chatThreadClient.SendMessageAsync(sendChatMessageOptions);

string messageId = sendChatMessageResult.Id;

Menerima pesan obrolan dari utas obrolan

Anda dapat mengambil pesan obrolan dengan melakukan polling pada metode GetMessages pada klien thread obrolan pada interval tertentu.

AsyncPageable<ChatMessage> allMessages = chatThreadClient.GetMessagesAsync();
await foreach (ChatMessage message in allMessages)
{
    Console.WriteLine($"{message.Id}:{message.Content.Message}");
}

GetMessages mengambil parameter DateTimeOffset opsional. Jika offset tersebut ditentukan, Anda menerima pesan yang diterima, diperbarui, atau dihapus setelahnya. Pesan yang diterima sebelum waktu offset tetapi diedit atau dihapus setelahnya juga dikembalikan.

GetMessages menampilkan versi terbaru pesan, termasuk pengeditan atau penghapusan yang terjadi pada pesan menggunakan UpdateMessage dan DeleteMessage. Untuk pesan yang dihapus, chatMessage.DeletedOn akan menampilkan nilai tanggalwaktu yang menunjukkan kapan pesan tersebut dihapus. Untuk pesan yang diedit, chatMessage.EditedOn akan menampilkan tanggalwaktu yang menunjukkan kapan pesan diedit. Waktu asli pembuatan pesan dapat diakses menggunakan chatMessage.CreatedOn, dan dapat digunakan untuk memesan pesan.

GetMessages mengembalikan berbagai jenis pesan. Anda dapat mengidentifikasi jenis dari chatMessage.Type. Jenisnya adalah:

  • Text: Pesan obrolan biasa yang dikirim oleh anggota thread.

  • Html: Pesan teks berformat. Pengguna Communication Services saat ini tidak dapat mengirim pesan RichText. Jenis pesan ini didukung untuk pesan yang dikirim dari pengguna Teams ke pengguna Communication Services dalam skenario Teams Interop.

  • TopicUpdated: Pesan sistem yang menunjukkan topik diperbarui. (readonly)

  • ParticipantAdded: Pesan sistem yang menunjukkan satu atau beberapa peserta ditambahkan ke utas obrolan (readonly).

  • ParticipantRemoved: Pesan sistem yang menunjukkan bahwa seseorang telah dihapus dari utas obrolan.

Untuk informasi selengkapnya, lihat Jenis Pesan.

Tambahkan pengguna sebagai peserta ke thread obrolan

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 dan menambahkan/menghapus peserta lain. Sebelum memanggil AddParticipants, pastikan Anda memperoleh token akses dan identitas baru untuk pengguna tersebut. Pengguna memerlukan token akses tersebut untuk menginisialisasi klien obrolan mereka.

Gunakan AddParticipants untuk menambahkan satu atau beberapa peserta ke utas obrolan. Berikut ini adalah atribut yang didukung untuk setiap peserta utas:

  • Wajib, communicationUser adalah identitas peserta utas.
  • displayName, opsional, adalah nama tampilan untuk peserta utas.
  • shareHistoryTime, opsional, adalah waktu ketika riwayat obrolan dibagikan dengan peserta.
var josh = new CommunicationUserIdentifier(id: "<Access_ID_For_Josh>");
var gloria = new CommunicationUserIdentifier(id: "<Access_ID_For_Gloria>");
var amy = new CommunicationUserIdentifier(id: "<Access_ID_For_Amy>");

var participants = new[]
{
    new ChatParticipant(josh) { DisplayName = "Josh" },
    new ChatParticipant(gloria) { DisplayName = "Gloria" },
    new ChatParticipant(amy) { DisplayName = "Amy" }
};

await chatThreadClient.AddParticipantsAsync(participants: participants);

Dapatkan peserta utas

Gunakan GetParticipants untuk mengambil kembali peserta utas obrolan.

AsyncPageable<ChatParticipant> allParticipants = chatThreadClient.GetParticipantsAsync();
await foreach (ChatParticipant participant in allParticipants)
{
    Console.WriteLine($"{((CommunicationUserIdentifier)participant.User).Id}:{participant.DisplayName}:{participant.ShareHistoryTime}");
}

Kirimkan konfirmasi bahwa pesan telah dibaca

Gunakan SendReadReceipt untuk memberi tahu peserta lain bahwa pengguna membaca pesan.

await chatThreadClient.SendReadReceiptAsync(messageId: messageId);

Menjalankan kode

Menjalankan aplikasi dari direktori aplikasi Anda dengan perintah dotnet run.

dotnet run

Contoh Kode

Temukan kode akhir untuk artikel ini di sampel GitHub Tambahkan Obrolan ke aplikasi Anda.

Prasyarat

  • Buat akun Azure dengan langganan aktif. Untuk detailnya, lihat Membuat akun gratis.

  • Instal Xcode dan CocoaPods. Anda menggunakan Xcode untuk membuat aplikasi iOS untuk artikel ini, dan CocoaPods untuk menginstal dependensi.

  • Buat sumber daya Azure Communication Services. Untuk mengetahui detailnya, lihat Mulai cepat: Buat dan kelola sumber daya Azure Communication Services. Anda perlu merekam titik akhir sumber daya dan string koneksi untuk artikel ini.

  • Buat dua pengguna di Azure Communication Services, dan terbitkan sebuah User Access Token. Pastikan untuk mengatur cakupan ke obrolan, dan catat string token serta string user_id tersebut. Dalam artikel ini, Anda memulai utas dengan peserta pertama, lalu menambahkan peserta kedua ke utas. Anda juga dapat menggunakan Azure CLI dan menjalankan perintah berikut dengan string koneksi Anda untuk membuat pengguna dan token akses.

    az communication identity token issue --scope chat --connection-string "yourConnectionString"
    

    Untuk detailnya, lihat Menggunakan Azure CLI untuk Membuat dan Mengelola Token Akses.

Pengaturan

Buat aplikasi iOS baru

Buka Xcode dan pilih Buat proyek Xcode baru. Kemudian pilih iOS sebagai platform dan Aplikasi untuk templat.

Untuk nama proyek, masukkan ChatQuickstart. Lalu pilih Storyboard sebagai antarmuka, dan Swift sebagai bahasa.

Pilih Berikutnya,dan pilih direktori tempat Anda ingin proyek dibuat.

Instal pustaka

Gunakan CocoaPods untuk menginstal dependensi Communication Services yang diperlukan.

Dari baris perintah, masuk ke dalam akar direktori proyek ChatQuickstart iOS. Buat Podfile dengan perintah berikut: pod init.

Buka Podfile, dan tambahkan dependensi berikut ke ChatQuickstart target:

pod 'AzureCommunicationChat', '~> 1.3.6'

Instal dependensi dengan perintah berikut: pod install. Ini juga membuat ruang kerja Xcode.

Setelah menjalankan pod install, buka kembali proyek di Xcode dengan memilih yang baru dibuat .xcworkspace.

Siapkan placeholder

Buka ruang kerja ChatQuickstart.xcworkspace di Xcode, lalu buka ViewController.swift.

Dalam artikel ini, Anda menambahkan kode ke viewController, dan melihat output di konsol Xcode. Artikel ini tidak membahas pembuatan antarmuka pengguna di iOS.

Di bagian atas viewController.swift, impor AzureCommunication dan AzureCommunicationChat pustaka:

import AzureCommunicationCommon
import AzureCommunicationChat

Salin kode berikut ke dalam metode viewDidLoad() di ViewController:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.

        let semaphore = DispatchSemaphore(value: 0)
        DispatchQueue.global(qos: .background).async {
            do {
                // <CREATE A CHAT CLIENT>
                
                // <CREATE A CHAT THREAD>

                // <LIST ALL CHAT THREADS>

                // <GET A CHAT THREAD CLIENT>

                // <SEND A MESSAGE>

                // <SEND A READ RECEIPT >

                // <RECEIVE MESSAGES>

                // <ADD A USER>
                
                // <LIST USERS>
            } catch {
                print("Quickstart failed: \(error.localizedDescription)")
            }
        }
    }

Untuk tujuan demonstrasi, kami menggunakan semaphore untuk menyinkronkan kode Anda. Dalam langkah-langkah berikut, Anda mengganti placeholder dengan contoh kode menggunakan pustaka Chat Azure Communication Services.

Membuat aplikasi obrolan

Untuk membuat klien obrolan, gunakan titik akhir Communication Services Anda dan token akses yang dihasilkan sebagai bagian dari langkah-langkah prasyarat.

Pelajari selengkapnya tentang Token Akses Pengguna.

Artikel ini tidak mencakup pembuatan tingkat layanan untuk mengelola token untuk aplikasi obrolan Anda, tetapi kami merekomendasikannya. Pelajari selengkapnya tentang Arsitektur Obrolan

Ganti komentar <CREATE A CHAT CLIENT> dengan cuplikan kode berikut:

let endpoint = "<ACS_RESOURCE_ENDPOINT>"
let credential =
try CommunicationTokenCredential(
    token: "<ACCESS_TOKEN>"
)
let options = AzureCommunicationChatClientOptions()

let chatClient = try ChatClient(
    endpoint: endpoint,
    credential: credential,
    withOptions: options
)

Ganti <ACS_RESOURCE_ENDPOINT> dengan titik akhir dari sumber daya Azure Communication Services Anda. Ganti <ACCESS_TOKEN> dengan token akses Azure Communication Services Anda yang valid.

Model objek

Kelas dan antarmuka berikut menangani beberapa fitur utama SDK Obrolan Azure Communication Services untuk iOS.

Nama Deskripsi
ChatClient Kelas ini diperlukan untuk fungsi obrolan. Anda menginstansiasi dengan informasi langganan Anda, dan menggunakannya untuk membuat, mendapatkan, menghapus utas, dan berlangganan acara obrolan.
ChatThreadClient Kelas ini dibuat untuk fungsi Utas Obrolan. Anda mendapatkan instans melalui ChatClient, dan menggunakannya untuk mengirim, menerima, memperbarui, dan menghapus pesan. Anda juga dapat menggunakannya untuk menambahkan dan menghapus pengguna, mendapatkan informasi pengguna, serta mengirim pemberitahuan pengetikan dan tanda terima baca.

Mulailah utas obrolan

CreateChatThreadResult adalah respons yang dihasilkan dari pembuatan utas obrolan. Ini berisi properti chatThread yang merupakan objek ChatThreadProperties. Objek ini berisi threadId yang dapat digunakan untuk mendapatkan ChatThreadClient untuk melakukan operasi di alur yang dibuat: menambahkan peserta, mengirim pesan, dll.

Ganti komentar <CREATE A CHAT THREAD> dengan cuplikan kode berikut:

let request = CreateChatThreadRequest(
    topic: "Quickstart",
    participants: [
        ChatParticipant(
            id: CommunicationUserIdentifier("<USER_ID>"),
            displayName: "Jack"
        )
    ]
)

var threadId: String?
chatClient.create(thread: request) { result, _ in
    switch result {
    case let .success(result):
        threadId = result.chatThread?.id

    case .failure:
        fatalError("Failed to create thread.")
    }
    semaphore.signal()
}
semaphore.wait()

Ganti <USER_ID> dengan token akses Azure Communication Services Anda yang valid.

Anda menggunakan semaphore di sini untuk menunggu penanganan penyelesaian sebelum melanjutkan. Pada langkah selanjutnya, gunakan threadId dari respons yang dikembalikan ke pengendali penyelesaian.

Daftar semua utas obrolan

Setelah membuat utas obrolan, kita dapat mencantumkan semua utas obrolan dengan memanggil listChatThreads metode di ChatClient. Ganti komentar <LIST ALL CHAT THREADS> dengan kode berikut:

chatClient.listThreads { result, _ in
    switch result {
    case let .success(threads):
        guard let chatThreadItems = threads.pageItems else {
            print("No threads returned.")
            return
        }

        for chatThreadItem in chatThreadItems {
            print("Thread id: \(chatThreadItem.id)")
        }
    case .failure:
        print("Failed to list threads")
    }
    semaphore.signal()
}
semaphore.wait()

Dapatkan klien percakapan obrolan

Metode createClient mengembalikan ChatThreadClient untuk utas yang sudah ada. Ini dapat digunakan untuk melakukan operasi pada utas yang dibuat: menambahkan peserta, mengirim pesan, dll. threadId adalah ID unik dari utas obrolan yang ada.

Ganti komentar <GET A CHAT THREAD CLIENT> dengan kode berikut:

let chatThreadClient = try chatClient.createClient(forThread: threadId!)

Kirim pesan ke utas obrolan

Gunakan metode send untuk mengirim pesan ke alur yang diidentifikasi oleh threadId.

SendChatMessageRequest digunakan untuk menjelaskan permintaan pesan:

  • Gunakan content untuk memasukkan konten pesan obrolan
  • Gunakan senderDisplayName untuk menentukan nama tampilan pengirim
  • Gunakan type untuk menentukan jenis pesan, seperti 'text' atau 'html'
  • Gunakan metadata secara opsional untuk menyertakan data lain yang ingin Anda kirim bersama dengan pesan. Bidang ini menyediakan mekanisme bagi pengembang untuk memperluas fungsionalitas pesan obrolan dan menambahkan informasi kustom untuk kasus penggunaan Anda. Misalnya, saat berbagi tautan file di pesan, Anda mungkin ingin menambahkan 'hasAttachment:true' dalam metadata sehingga aplikasi penerima dapat mengurainya dan menampilkannya.

SendChatMessageResult adalah respons yang dikembalikan dari pengiriman pesan. Ini berisi ID, yang merupakan ID unik dari pesan.

Ganti komentar <SEND A MESSAGE> dengan cuplikan kode berikut:

let message = SendChatMessageRequest(
                        content: "Hello!",
                        senderDisplayName: "Jack",
                        type: .text,
                        metadata: [
                            "hasAttachment": "true",
                            "attachmentUrl": "https://contoso.com/files/attachment.docx"
                        ]
                    )

var messageId: String?

chatThreadClient.send(message: message) { result, _ in
    switch result {
    case let .success(result):
        print("Message sent, message id: \(result.id)")
        messageId = result.id
    case .failure:
        print("Failed to send message")
    }
    semaphore.signal()
}
semaphore.wait()

Kirim tanda terima baca

Gunakan metode sendReadReceipt untuk memposting peristiwa tanda terima baca ke utas obrolan, atas nama pengguna. messageId adalah ID unik dari pesan obrolan yang dibaca.

Ganti komentar <SEND A READ RECEIPT> dengan kode berikut:

if let id = messageId {
    chatThreadClient.sendReadReceipt(forMessage: id) { result, _ in
        switch result {
        case .success:
            print("Read receipt sent")
        case .failure:
            print("Failed to send read receipt")
        }
        semaphore.signal()
    }
    semaphore.wait()
} else {
    print("Cannot send read receipt without a message id")
}

Menerima pesan obrolan dari utas obrolan

Dengan sinyal real time, Anda dapat berlangganan untuk mendengarkan pesan masuk baru dan memperbarui pesan saat ini di memori. Azure Communication Services mendukung daftar peristiwa yang dapat Anda ikuti.

Ganti komentar <RECEIVE MESSAGES> dengan kode berikut. Setelah mengaktifkan pemberitahuan, coba kirim pesan baru untuk melihat ChatMessageReceivedEvents.

chatClient.startRealTimeNotifications { result in
    switch result {
    case .success:
        print("Real-time notifications started.")
    case .failure:
        print("Failed to start real-time notifications.")
    }
    semaphore.signal()
}
semaphore.wait()

chatClient.register(event: .chatMessageReceived, handler: { response in
    switch response {
    case let .chatMessageReceivedEvent(event):
        print("Received a message: \(event.message)")
    default:
        return
    }
})

Atau, Anda dapat mengambil pesan obrolan dengan memanggil metode listMessages secara berkala pada interval tertentu. Lihat cuplikan kode berikut untuk listMessages

chatThreadClient.listMessages { result, _ in
    switch result {
    case let .success(messagesResult):
        guard let messages = messagesResult.pageItems else {
            print("No messages returned.")
            return
        }

        for message in messages {
            print("Received message with id: \(message.id)")
        }

    case .failure:
        print("Failed to receive messages")
    }
    semaphore.signal()
}
semaphore.wait()

Tambahkan pengguna sebagai peserta ke thread obrolan

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 dan menambahkan/menghapus peserta lain. Sebelum memanggil add, pastikan Anda memperoleh token akses dan identitas baru untuk pengguna tersebut. Pengguna memerlukan token akses untuk menginisialisasi klien obrolan mereka.

Gunakan metode add dari ChatThreadClient untuk menambahkan satu atau beberapa peserta ke alur obrolan. Berikut ini adalah atribut yang didukung untuk setiap peserta utas:

  • Wajib, id adalah identitas peserta utas.
  • displayName, opsional, adalah nama tampilan untuk peserta utas.
  • shareHistoryTime, opsional, adalah waktu ketika riwayat obrolan dibagikan dengan peserta.

Ganti komentar <ADD A USER> dengan kode berikut:

let user = ChatParticipant(
    id: CommunicationUserIdentifier("<USER_ID>"),
    displayName: "Jane"
)

chatThreadClient.add(participants: [user]) { result, _ in
    switch result {
    case let .success(result):
        if let errors = result.invalidParticipants, !errors.isEmpty {
            print("Error adding participant")
        } else {
            print("Added participant")
        }
    case .failure:
        print("Failed to add the participant")
    }
    semaphore.signal()
}
semaphore.wait()

Ganti <USER_ID> dengan ID pengguna Communication Services dari pengguna yang akan ditambahkan.

Mencantumkan Daftar pengguna di utas

Gunakan metode listParticipants untuk mendapatkan semua peserta untuk alur obrolan tertentu.

Ganti komentar <LIST USERS> dengan kode berikut:

chatThreadClient.listParticipants { result, _ in
    switch result {
    case let .success(participantsResult):
        guard let participants = participantsResult.pageItems else {
            print("No participants returned.")
            return
        }

        for participant in participants {
            let user = participant.id as! CommunicationUserIdentifier
            print("User with id: \(user.identifier)")
        }
    case .failure:
        print("Failed to list participants")
    }
    semaphore.signal()
}
semaphore.wait()

Pemberitahuan push

Pemberitahuan push memberi tahu klien tentang pesan masuk di utas obrolan dalam situasi di mana aplikasi seluler tidak berjalan di latar depan.

Saat ini, mengirim pemberitahuan push obrolan dengan Notification Hub didukung untuk IOS SDK di versi 1.3.0.

Untuk informasi selengkapnya, lihat Mengaktifkan Pemberitahuan Push di aplikasi obrolan Anda.

Menjalankan kode

Menonaktifkan Sandboxing Skrip untuk Pengguna

Beberapa skrip di dalam pustaka yang ditautkan menghasilkan berkas selama proses build. Untuk mengaktifkan penulisan file, nonaktifkan Pembatasan Lingkungan Skrip Pengguna di Xcode.

Dalam proyek Xcode, di bawah Pengaturan Build, atur opsi Kotak Pasir Skrip Pengguna ke Tidak. Untuk menemukan pengaturan, ubah filter dari Dasar ke Semua atau gunakan bilah pencarian.

Tangkapan layar yang memperlihatkan opsi Setelan Build untuk menonaktifkan Sandbox Skrip Pengguna.

Jalankan proyek

Pada Xcode tekan tombol Run untuk membangun dan menjalankan projek. Pada konsol, Anda dapat melihat output dari kode dan output logger dari ChatClient.

Contoh kode

Temukan kode akhir untuk artikel ini di sampel GitHub Tambahkan Obrolan ke aplikasi Anda.

Prasyarat

Buat pengguna

Selesaikan langkah-langkah ini di Power Automate dengan alur Power Automate Anda terbuka dalam mode edit.

Untuk menambahkan langkah baru dalam alur kerja Anda dengan menggunakan konektor Identitas Communication Services:

  1. Di perancang, di bawah langkah tempat Anda ingin menambahkan tindakan baru, pilih Langkah baru. Atau, untuk menambahkan tindakan baru di antara langkah-langkah, pindahkan penunjuk Anda ke panah di antara langkah-langkah tersebut, pilih tanda plus (+), lalu pilih Tambahkan tindakan.

  2. Di kotak Pilih operasi pencarian, masukkan Communication Services Identity. Dalam daftar tindakan, pilih Buat pengguna.

    Cuplikan layar yang memperlihatkan konektor Identitas Azure Communication Services Membuat tindakan pengguna.

  3. Masukkan string koneksi. Untuk mendapatkan URL string koneksi di portal Azure, buka sumber daya Azure Communication Services. Di menu sumber daya, pilih Kunci, lalu pilih String koneksi. Pilih ikon salin untuk menyalin string koneksi.

    Cuplikan layar yang memperlihatkan panel Kunci untuk sumber daya Azure Communication Services.

  4. Masukkan nama untuk koneksi.

  5. Pilih Perlihatkan opsi tingkat lanjut, lalu pilih cakupan token. Tindakan ini menghasilkan token akses dan waktu kedaluwarsanya dengan cakupan yang ditentukan. Tindakan ini juga menghasilkan ID pengguna yang merupakan identitas pengguna Communication Services.

    Cuplikan layar yang memperlihatkan konektor Identitas Azure Communication Services Membuat opsi tindakan pengguna.

  6. Di Item Cakupan Token, pilih obrolan.

    Cuplikan layar yang menunjukkan opsi lanjutan konektor Chat Azure Communication Services.

  7. Pilih Buat. ID pengguna dan token akses ditampilkan.

Membuat utas obrolan

  1. Tambahkan tindakan baru.

  2. Di kotak Pilih operasi pencarian, masukkan Communication Services Chat. Dalam daftar tindakan, pilih Buat utas obrolan.

    Cuplikan layar yang memperlihatkan konektor Obrolan Azure Communication Services Membuat tindakan utas obrolan.

  3. Masukkan URL titik akhir layanan Communication Services. Untuk mendapatkan URL titik akhir di portal Azure, buka sumber daya Azure Communication Services. Di menu sumber daya, pilih Kunci, lalu pilih Titik Akhir.

  4. Masukkan nama untuk koneksi.

  5. Pilih token akses yang dihasilkan di bagian sebelumnya, lalu tambahkan deskripsi topik utas obrolan. Tambahkan pengguna yang dibuat dan masukkan nama untuk peserta.

    Cuplikan layar yang memperlihatkan konektor Obrolan Azure Communication Services dalam dialog tindakan membuat utas obrolan.

Mengirim pesan

  1. Tambahkan tindakan baru.

  2. Di kotak Pilih operasi pencarian, masukkan Communication Services Chat. Dalam daftar tindakan, pilih Kirim pesan ke utas obrolan.

    Cuplikan layar yang memperlihatkan tindakan Kirim pesan obrolan konektor Azure Communication Services Chat.

  3. Masukkan token akses, ID utas, konten, dan nama.

    Cuplikan layar yang memperlihatkan dialog tindakan Kirim pesan obrolan konektor Azure Communication Services.

Daftar pesan utas obrolan

Untuk memverifikasi bahwa Anda mengirim pesan dengan benar:

  1. Tambahkan tindakan baru.

  2. Di kotak Pilih operasi pencarian, masukkan Communication Services Chat. Dalam daftar tindakan, pilih Daftar pesan utas obrolan.

    Cuplikan layar yang memperlihatkan tindakan konektor Obrolan Azure Communication Services Daftar pesan obrolan.

  3. Masukkan token akses dan ID utas.

    Cuplikan layar yang memperlihatkan dialog tindakan daftar pesan obrolan dari penghubung Obrolan Azure Communication Services.

Menguji aplikasi logika Anda

Untuk memulai alur kerja Anda secara manual, pilih Jalankan di toolbar perancang. Alur kerja membuat pengguna, mengeluarkan token akses untuk pengguna tersebut, lalu menghapus token dan menghapus pengguna. Untuk informasi selengkapnya, lihat Cara menjalankan alur kerja Anda.

Sekarang, pilih Daftar pesan utas obrolan. Dalam output tindakan, periksa pesan yang dikirim.

Cuplikan layar yang menunjukkan hasil tindakan konektor Obrolan Azure Communication Services untuk mengirim pesan obrolan.

Membersihkan sumber daya alur kerja

Untuk membersihkan alur kerja aplikasi logika dan sumber daya terkait, lihat cara membersihkan sumber daya Logic Apps.

Membersihkan sumber daya

Untuk membersihkan dan menghapus langganan Communication Services, Anda dapat menghapus grup sumber daya atau sumber daya. Menghapus grup sumber daya juga menghapus sumber daya apa pun yang terkait dengannya. Untuk informasi selengkapnya, lihat membersihkan sumber daya.

Langkah berikutnya

Artikel ini menjelaskan cara:

  • Membuat aplikasi obrolan
  • Buat "thread" dengan dua pengguna
  • Kirim pesan ke utas
  • Menerima pesan dari thread
  • Menghapus pengguna dari utas