Snabbstart: Lägga till chatt i din app
Kom igång med Azure Communication Services med hjälp av Communication Services Chat SDK för att lägga till realtidschatt i ditt program. I den här snabbstarten använder vi Chat SDK för att skapa chatttrådar som gör att användare kan ha konversationer med varandra. Mer information om chattbegrepp finns i den konceptuella chattdokumentationen.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
En aktiv Communication Services-resurs och anslutningssträng. Skapa en Communication Services-resurs.
Installera Azure CLI.
Observera resursslutpunkten för Communication Services. Du kan hämta slutpunkten från Azure-portalen. Du kan också hitta slutpunkts-URL:en i anslutningssträng. Det är url:en som kommer efter
endpoint=
och börjar medhttps://
.En användaråtkomsttoken. Se till att ange omfånget till chatt och notera tokensträngen samt user_id strängen. Du kan också använda Azure CLI och köra kommandot nedan med din anslutningssträng för att skapa en användare och en åtkomsttoken.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Mer information finns i Använda Azure CLI för att skapa och hantera åtkomsttoken.
Konfigurera
Lägga till tillägget
Lägg till Azure Communication Services-tillägget för Azure CLI med hjälp az extension
av kommandot .
az extension add --name communication
Logga in på Azure CLI
Du måste logga in på Azure CLI. Du kan logga in med az login
kommandot från terminalen och ange dina autentiseringsuppgifter.
(Valfritt) Använda Azure CLI-identitetsåtgärder utan att skicka in en slutpunkt eller åtkomsttoken
Lagra slutpunkten i en miljövariabel
Du kan konfigurera AZURE_COMMUNICATION_ENDPOINT
miljövariabeln så att den använder Azure CLI-chattåtgärder utan att behöva använda --endpoint
för att skicka in slutpunkten. Om du vill konfigurera en miljövariabel öppnar du ett konsolfönster och väljer ditt operativsystem på flikarna nedan. Ersätt <yourEndpoint>
med din faktiska slutpunkt.
Öppna ett konsolfönster och ange följande kommando:
setx AZURE_COMMUNICATION_ENDPOINT "<yourEndpoint>"
När du har lagt till miljövariabeln kan du behöva starta om alla program som körs och som behöver läsa in miljövariabeln, däribland konsolfönstret. Om du till exempel använder Visual Studio som redigerare startar du om Visual Studio innan du kör exemplet.
Lagra din åtkomsttoken i en miljövariabel
Du kan konfigurera AZURE_COMMUNICATION_ACCESS_TOKEN
miljövariabeln så att den använder Azure CLI-chattåtgärder utan att behöva använda --access-token
för att skicka in åtkomsttoken. Om du vill konfigurera en miljövariabel öppnar du ett konsolfönster och väljer ditt operativsystem på flikarna nedan. Ersätt <yourAccessToken>
med din faktiska åtkomsttoken.
Öppna ett konsolfönster och ange följande kommando:
setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"
När du har lagt till miljövariabeln kan du behöva starta om alla program som körs och som behöver läsa in miljövariabeln, däribland konsolfönstret. Om du till exempel använder Visual Studio som redigerare startar du om Visual Studio innan du kör exemplet.
Operations
Starta en chatttråd
thread create
Använd kommandot för att skapa en chatttråd.
az communication chat thread create --topic "<chatTopic>" --endpoint "<endpoint>" --access-token "<token>"
Om du har lagrat slutpunkten och åtkomsttoken i miljövariabler enligt ovan behöver du inte skicka dem till kommandot.
az communication chat thread create --topic "<chatTopic>"
- Använd
<chatTopic>
för att ge tråden ett ämne. Du kan uppdatera ämnet när chatttråden har skapats med hjälpthread update-topic
av kommandot . - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Uppdatera ämnet för en chatttråd
az communication chat thread update-topic --thread "<chatThreadId>" --topic "<chatTopic>" --endpoint "<endpoint>" --access-token "<token>"
- Ersätt
<chatThreadId>
med ditt chatttråds-ID. - Ersätt
<chatTopic>
med det nya chattavsnittet som du vill ange. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Visa en lista över alla chatttrådar
Kommandot thread list
returnerar listan över chatttrådar för en användare.
az communication chat thread list --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
- Du
<startTime>
kan också ange den tidigaste tidpunkten för att hämta chattmeddelanden. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Skicka ett meddelande till en chatttråd
message send
Använd kommandot för att skicka ett meddelande till en chatttråd som du har skapat, identifierad av threadId
.
az communication chat message send --thread "<chatThreadId>" --display-name "<displayName>" --content "<content>" --message-type "<messageType>" --endpoint "<endpoint>" --access-token "<token>"
- Ersätt
<chatThreadId>
med ditt chatttråds-ID. - Använd
<content>
för att ange innehållet i chattmeddelandet. - Använd
<messageType>
för att ange meddelandeinnehållstypen. Möjliga värden ärtext
ochhtml
. Om du inte anger något värde ärtext
standardvärdet . - Om
<displayName>
du vill kan du ange avsändarens visningsnamn. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Visa en lista över chattmeddelanden i en chatttråd
Kommandot message list
returnerar listan över chattmeddelanden i en chatttråd.
az communication chat message list --thread "<chatThreadId>" --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
- Ersätt
<chatThreadId>
med ditt chatttråds-ID. - Du
<startTime>
kan också ange den tidigaste tidpunkten för att hämta chattmeddelanden. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Ta emot ett chattmeddelande från en chatttråd
Du kan hämta chattmeddelanden med hjälp message list
av kommandot .
az communication chat message get --thread "<chatThreadId>" --message-id "<messageId>" --endpoint "<endpoint>" --access-token "<token>"
- Ersätt
<chatThreadId>
med ditt chatttråds-ID. - Ersätt
<messageId>
med ID:t för det meddelande som du vill hämta. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Skicka läskvitto
Du använder message receipt send
kommandot för att publicera en läskvittohändelse i en tråd för en användares räkning.
az communication chat message receipt send --thread "<chatThreadId>" --message-id "<messageId>" --endpoint "<endpoint>" --access-token "<token>"
- Ersätt
<chatThreadId>
med ditt chatttråds-ID. - Ersätt
<messageId>
för att ange ID för det senaste meddelandet som lästs av den aktuella användaren. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Lägga till en användare som deltagare i chatttråden
När du skapar en chatttråd kan du sedan lägga till och ta bort användare från den. Genom att lägga till användare ger du dem åtkomst för att kunna skicka meddelanden till chatttråden och lägga till eller ta bort andra deltagare. Innan du anropar participant add
kommandot kontrollerar du att du har skaffat en ny åtkomsttoken och identitet för den användaren.
az communication chat participant add --thread "<chatThreadId>" --user "<userId>" --display-name "<displayName>" --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
- Ersätt
<chatThreadId>
med ditt chatttråds-ID. - Ersätt
<userId>
med ditt userId. - Om
<displayName>
du vill kan du ange avsändarens visningsnamn. - Du
<startTime>
kan också ange den tidigaste tidpunkten för att hämta chattmeddelanden. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Lista tråddeltagare i en chatttråd
På samma sätt som när du lägger till en deltagare kan du även lista deltagare från en tråd.
Använd participant list
kommandot för att hämta deltagarna i tråden.
az communication chat participant list --thread "<chatThreadId>" --skip "<skip>" --endpoint "<endpoint>" --access-token "<token>"
- Ersätt
<chatThreadId>
med ditt chatttråds-ID. - Om
<skip>
du vill kan du hoppa över deltagare upp till en angiven position i svaret. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Ta bort en deltagare från en chatttråd
Du kan ta bort en chattdeltagare från en chatttråd med hjälp av kommandot "ta bort deltagare".
az communication chat participant remove --thread "<chatThreadId>" --user "<userId>" --endpoint "<endpoint>" --access-token "<token>"
- Ersätt
<chatThreadId>
med ditt chatttråds-ID. - Ersätt
<userId>
med det userId som du vill ta bort från chatttråden. - Ersätt
<endpoint>
med slutpunkten för Azure Communication Services. - Ersätt
<token>
med din åtkomsttoken som hämtades tidigare med kommandot runningidentity token issue
.
Förutsättningar
Innan du kommer igång måste du:
Skapa ett Azure-konto med en aktiv prenumeration. Mer information finns i Skapa ett konto kostnadsfritt.
Installera Node.js Active LTS- och Maintenance LTS-versioner.
Skapa en Azure Communication Services-resurs. Mer information finns i Skapa en Azure Communication Services-resurs. Du måste registrera resursslutpunkten och anslutningssträng för den här snabbstarten.
Skapa tre Azure Communication Services-användare och ge dem en användaråtkomsttoken. Se till att ange omfånget till chatt och notera tokensträngen samt user_id strängen. Den fullständiga demonstrationen skapar en tråd med två inledande deltagare och lägger sedan till en tredje deltagare i tråden. Du kan också använda Azure CLI och köra kommandot nedan med din anslutningssträng för att skapa en användare och en åtkomsttoken.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Mer information finns i Använda Azure CLI för att skapa och hantera åtkomsttoken.
Konfigurera
Skapa ett nytt webbprogram
Öppna först terminalen eller kommandofönstret och skapa en ny katalog för din app och navigera till den.
mkdir chat-quickstart && cd chat-quickstart
Kör npm init -y
för att skapa en package.json-fil med standardinställningar.
npm init -y
Installera paketen
npm install
Använd kommandot för att installera nedanstående Communication Services-SDK:er för 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
Alternativet --save
visar biblioteket som ett beroende i filen package.json .
Konfigurera appramverket
Den här snabbstarten använder paket för att paketa programtillgångarna. Kör följande kommando för att installera det och lista det som ett utvecklingsberoende i package.json:
npm install parcel --save-dev
Skapa en index.html-fil i projektets rotkatalog. Vi använder den här filen som en mall för att lägga till chattfunktioner med hjälp av Azure Communication Chat SDK för JavaScript.
<!DOCTYPE html>
<html>
<head>
<title>Communication Client - Chat Sample</title>
</head>
<body>
<h4>Azure Communication Services</h4>
<h1>Chat Quickstart</h1>
<script src="./client.js" type="module"></script>
</body>
</html>
Skapa en fil i rotkatalogen för projektet med namnet client.js för att innehålla programlogik för den här snabbstarten.
Skapa en chattklient
Om du vill skapa en chattklient i webbappen använder du slutpunkten för kommunikationstjänsten och åtkomsttoken som genererades som en del av nödvändiga steg.
Med användaråtkomsttoken kan du skapa klientprogram som autentiserar direkt till Azure Communication Services. Den här snabbstarten beskriver inte hur du skapar en tjänstnivå för att hantera token för chattprogrammet. Mer information om åtkomsttoken finns i chattkoncept för mer information om chattarkitektur och användaråtkomsttoken .
I client.js använder du slutpunkten och åtkomsttoken i koden nedan för att lägga till chattfunktioner med hjälp av Azure Communication Chat SDK för 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!');
- Ersätt endpointUrl med resursslutpunkten för Communication Services. Se Skapa en Azure Communication Services-resurs om du inte redan har gjort det.
- Ersätt userAccessToken med den token som du utfärdade.
Kör koden
Kör följande kommando för att köra programmet:
npx parcel index.html
Öppna webbläsaren och navigera till http://localhost:1234/. I utvecklarverktygskonsolen i webbläsaren bör du se följande:
Azure Communication Chat client created!
Objektmodell
Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i Azure Communication Services Chat SDK för JavaScript.
Namn | Beskrivning |
---|---|
ChatClient | Den här klassen behövs för chattfunktionen. Du instansierar den med din prenumerationsinformation och använder den för att skapa, hämta, ta bort trådar och prenumerera på chatthändelser. |
ChatThreadClient | Den här klassen behövs för chatttrådsfunktionen. Du hämtar en instans via ChatClient och använder den för att skicka/ta emot/uppdatera/ta bort meddelanden, lägga till/ta bort/hämta användare, skicka skrivmeddelanden och läsa kvitton. |
Starta en chatttråd
createThread
Använd metoden för att skapa en chatttråd.
createThreadRequest
används för att beskriva trådbegäran:
- Använd
topic
för att ge ett ämne till den här chatten. Ämnen kan uppdateras när chatttråden har skapats med hjälp avUpdateThread
funktionen . - Använd
participants
för att lista de deltagare som ska läggas till i chatttråden.
När den har lösts createChatThread
returnerar metoden en CreateChatThreadResult
. Den här modellen innehåller en chatThread
egenskap där du kan komma åt den id
nyligen skapade tråden. Du kan sedan använda id
för att hämta en instans av en ChatThreadClient
. ChatThreadClient
Kan sedan användas för att utföra åtgärden i tråden, till exempel att skicka meddelanden eller visa deltagare.
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>
});
När du uppdaterar webbläsarfliken bör du se följande i konsolen:
Thread created: <thread_id>
Hämta en chatttrådsklient
Metoden getChatThreadClient
returnerar en chatThreadClient
för en tråd som redan finns. Den kan användas för att utföra åtgärder i den skapade tråden: lägga till deltagare, skicka meddelande osv. threadId är det unika ID:t för den befintliga chatttråden.
let chatThreadClient = chatClient.getChatThreadClient(threadId);
console.log(`Chat Thread client for threadId:${threadId}`);
Lägg till den här koden i stället för kommentaren <CREATE CHAT THREAD CLIENT>
i client.js, uppdatera webbläsarfliken och kontrollera konsolen. Du bör se:
Chat Thread client for threadId: <threadId>
Visa en lista över alla chatttrådar
Metoden listChatThreads
returnerar en PagedAsyncIterableIterator
av typen ChatThreadItem
. Den kan användas för att visa alla chatttrådar.
En iterator för [ChatThreadItem]
är svaret som returneras från listtrådar
const threads = chatClient.listChatThreads();
for await (const thread of threads) {
// your code here
}
Skicka ett meddelande till en chatttråd
Använd sendMessage
metoden för att skicka ett meddelande till en tråd som identifieras av threadId.
sendMessageRequest
används för att beskriva meddelandebegäran:
- Använd
content
för att ange innehållet i chattmeddelandet.
sendMessageOptions
används för att beskriva åtgärden valfria params:
- Använd
senderDisplayName
för att ange avsändarens visningsnamn. - Använd
type
för att ange meddelandetypen, till exempel "text" eller "html"; - Om
metadata
du vill kan du inkludera andra data som du vill skicka tillsammans med meddelandet. Det här fältet innehåller en mekanism för utvecklare att utöka chattmeddelandefunktionerna och lägga till anpassad information för ditt användningsfall. När du till exempel delar en fillänk i meddelandet kanske du vill lägga till "hasAttachment: true" i metadata så att mottagarens program kan parsa det och visa därefter.
SendChatMessageResult
är svaret som returneras från att skicka ett meddelande, det innehåller ett ID, vilket är det unika ID:t för meddelandet.
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}`);
Lägg till den här koden i stället för kommentaren <SEND MESSAGE TO A CHAT THREAD>
i client.js, uppdatera webbläsarfliken och kontrollera konsolen.
Message sent!, message id:<number>
Ta emot chattmeddelanden från en chatttråd
Med realtidssignalering kan du prenumerera på att lyssna efter nya inkommande meddelanden och uppdatera de aktuella meddelandena i minnet i enlighet med detta. Azure Communication Services stöder en lista över händelser som du kan prenumerera på.
// open notifications channel
await chatClient.startRealtimeNotifications();
// subscribe to new notification
chatClient.on("chatMessageReceived", (e) => {
console.log("Notification chatMessageReceived!");
// your code here
});
Lägg till den här koden i stället för <RECEIVE A CHAT MESSAGE FROM A CHAT THREAD>
kommentar i client.js.
Uppdatera webbläsarfliken. Du bör se ett meddelande Notification chatMessageReceived
i konsolen .
Du kan också hämta chattmeddelanden genom att avsöka listMessages
metoden med angivna intervall.
const messages = chatThreadClient.listMessages();
for await (const message of messages) {
// your code here
}
Lägg till den här koden i stället för kommentaren <LIST MESSAGES IN A CHAT THREAD>
i client.js.
Uppdatera fliken. I konsolen bör du hitta listan över meddelanden som skickas i den här chatttråden.
listMessages
returnerar olika typer av meddelanden som kan identifieras av chatMessage.type
.
Mer information finns i Meddelandetyper.
Lägga till en användare som deltagare i chatttråden
När en chatttråd har skapats kan du sedan lägga till och ta bort användare från den. Genom att lägga till användare ger du dem åtkomst till att skicka meddelanden till chatttråden och lägga till/ta bort andra deltagare.
Innan du anropar addParticipants
metoden kontrollerar du att du har skaffat en ny åtkomsttoken och identitet för den användaren. Användaren behöver den åtkomsttoken för att initiera chattklienten.
addParticipantsRequest
beskriver begärandeobjektet där participants
de deltagare som ska läggas till i chatttråden visas.
id
, krävs, är kommunikationsidentifieraren som ska läggas till i chatttråden.displayName
, valfritt, är visningsnamnet för tråddeltagaren.shareHistoryTime
, valfritt, är den tid från vilken chatthistoriken delas med deltagaren. Om du vill dela historiken sedan chatttråden startades ställer du in den här egenskapen på ett datum som är lika med eller mindre än tiden då tråden skapades. Om du vill dela någon historik tidigare än när deltagaren lades till anger du det till aktuellt datum. Om du vill dela partiell historik anger du det datum som du väljer.
const addParticipantsRequest =
{
participants: [
{
id: { communicationUserId: '<NEW_PARTICIPANT_USER_ID>' },
displayName: 'Jane'
}
]
};
await chatThreadClient.addParticipants(addParticipantsRequest);
Ersätt NEW_PARTICIPANT_USER_ID med ett nytt användar-ID Lägg till den här koden i stället för kommentaren <ADD NEW PARTICIPANT TO THREAD>
i client.js
Lista användare i en chatttråd
const participants = chatThreadClient.listParticipants();
for await (const participant of participants) {
// your code here
}
Lägg till den här koden i stället för kommentaren <LIST PARTICIPANTS IN A THREAD>
i client.js, uppdatera webbläsarfliken och kontrollera konsolen. Du bör se information om användare i en tråd.
Ta bort användare från en chatttråd
På samma sätt som när du lägger till en deltagare kan du ta bort deltagare från en chatttråd. För att kunna ta bort måste du spåra ID:t för de deltagare som du har lagt till.
Använd removeParticipant
metoden där participant
är kommunikationsanvändaren som ska tas bort från tråden.
await chatThreadClient.removeParticipant({ communicationUserId: <PARTICIPANT_ID> });
await listParticipants();
Ersätt PARTICIPANT_ID med ett användar-ID som användes i föregående steg (<NEW_PARTICIPANT_USER_ID>).
Lägg till den här koden i stället för kommentaren <REMOVE PARTICIPANT FROM THREAD>
i client.js.
Prenumerera på anslutningsstatus för realtidsmeddelanden
Prenumeration på händelser realTimeNotificationConnected
och realTimeNotificationDisconnected
gör att du kan veta när anslutningen till anropsservern är aktiv.
// 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
});
Exempelkod
Hitta den färdiga koden för den här snabbstarten på GitHub.
Förutsättningar
Innan du kommer igång måste du:
Skapa ett Azure-konto med en aktiv prenumeration. Mer information finns i Skapa ett konto kostnadsfritt.
Installera Python 3.7+.
Skapa en Azure Communication Services-resurs. Mer information finns i Snabbstart: Skapa och hantera Communication Services-resurser. Du måste registrera resursslutpunkten och anslutningssträng för den här snabbstarten.
En användaråtkomsttoken. Se till att ange omfånget till chatt och notera tokensträngen samt user_id strängen. Du kan också använda Azure CLI och köra kommandot nedan med din anslutningssträng för att skapa en användare och en åtkomsttoken.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Mer information finns i Använda Azure CLI för att skapa och hantera åtkomsttoken.
Konfigurera
Skapa ett nytt Python-program
Öppna terminalen eller kommandofönstret, skapa en ny katalog för din app och gå till den.
mkdir chat-quickstart && cd chat-quickstart
Använd en textredigerare för att skapa en fil med namnet start-chat.py i projektets rotkatalog. Lägg till strukturen för programmet, inklusive grundläggande undantagshantering. I följande avsnitt lägger du till all källkod för den här snabbstarten i den här filen.
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)
Installera SDK
Använd följande kommando för att installera SDK:et:
pip install azure-communication-chat
Objektmodell
Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i Azure Communication Services Chat SDK för Python.
Namn | Beskrivning |
---|---|
ChatClient |
Den här klassen behövs för chattfunktionen. Du instansierar den med din prenumerationsinformation och använder den för att skapa, hämta och ta bort trådar. |
ChatThreadClient |
Den här klassen behövs för chatttrådsfunktionen. Du hämtar en instans via ChatClient och använder den för att skicka, ta emot, uppdatera och ta bort meddelanden. Du kan också använda den för att lägga till, ta bort och hämta användare och skicka skrivmeddelanden och läskvitton. |
Skapa en chattklient
Om du vill skapa en chattklient använder du slutpunkten för Communication Services och åtkomsttoken som du genererade som en del av nödvändiga steg.
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>"))
Den här snabbstarten omfattar inte att skapa en tjänstnivå för att hantera token för chattprogrammet, men det rekommenderas. Mer information finns i avsnittet "Chattarkitektur" i Chattbegrepp.
Starta en chatttråd
create_chat_thread
Använd metoden för att skapa en chatttråd.
- Använd
topic
för att ge tråden ett ämne. Du kan uppdatera ämnet när chatttråden har skapats med hjälpupdate_thread
av funktionen . - Använd
thread_participants
för att visa en lista över deChatParticipant
som ska läggas till i chatttråden. TarChatParticipant
CommunicationUserIdentifier
typen somuser
.
CreateChatThreadResult
är resultatet som returneras från att skapa en tråd. Du kan använda den för att hämta chatttråden id
som skapades. Detta id
kan sedan användas för att hämta ett ChatThreadClient
objekt med hjälp get_chat_thread_client
av metoden . Du kan använda ChatThreadClient
för att utföra andra chattåtgärder i den här chatttråden.
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)
Hämta en chatttrådsklient
Metoden get_chat_thread_client
returnerar en trådklient för en tråd som redan finns. Du kan använda den för att utföra åtgärder på den skapade tråden. Du kan till exempel lägga till deltagare och skicka meddelanden. thread_id
är det unika ID:t för den befintliga chatttråden.
Du kan använda ChatThreadClient
för att utföra andra chattåtgärder i den här chatttråden.
thread_id = create_chat_thread_result.chat_thread.id
chat_thread_client = chat_client.get_chat_thread_client(thread_id)
Visa en lista över alla chatttrådar
Metoden list_chat_threads
returnerar en iterator av typen ChatThreadItem
.
- Använd
start_time
för att ange den tidigaste tidpunkten för att hämta chatttrådar. - Använd
results_per_page
för att ange det maximala antalet chatttrådar som returneras per sida.
En iterator för [ChatThreadItem]
är svaret som returneras från listtrådar.
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)
Skicka ett meddelande till en chatttråd
send_message
Använd metoden för att skicka ett meddelande till en chatttråd som du nyss skapade, identifierad av thread_id
.
- Använd
content
för att ange innehållet i chattmeddelandet. - Använd
chat_message_type
för att ange meddelandeinnehållstypen. Möjliga värden ärtext
ochhtml
. Om du inte anger något värde ärtext
standardvärdet . - Använd
sender_display_name
för att ange avsändarens visningsnamn. - Om
metadata
du vill kan du inkludera ytterligare data som du vill skicka tillsammans med meddelandet. Det här fältet innehåller en mekanism för utvecklare att utöka chattmeddelandefunktionerna och lägga till anpassad information för ditt användningsfall. När du till exempel delar en fillänk i meddelandet kanske du vill lägga till "hasAttachment:true" i metadata så att mottagarens program kan parsa det och visa därefter.
SendChatMessageResult
är svaret som returneras från att skicka ett meddelande. Den innehåller ett ID, vilket är det unika ID:t för meddelandet.
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)
Ta emot chattmeddelanden från en chatttråd
Du kan hämta chattmeddelanden genom att avsöka list_messages
metoden med angivna intervall.
- Använd
results_per_page
för att ange det maximala antalet meddelanden som ska returneras per sida. - Använd
start_time
för att ange den tidigaste tidpunkten för att hämta meddelanden.
En iterator för är svaret som returneras från listningsmeddelanden [ChatMessage]
.
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
returnerar den senaste versionen av meddelandet, inklusive eventuella ändringar eller borttagningar som har hänt med meddelandet med hjälp update_message
av och delete_message
. För borttagna meddelanden ChatMessage.deleted_on
returnerar ett datetime
värde som anger när meddelandet togs bort. För redigerade meddelanden ChatMessage.edited_on
returnerar ett datetime
värde som anger när meddelandet redigerades. Du kan komma åt den ursprungliga tiden då meddelandet skapades med hjälp ChatMessage.created_on
av , som kan användas för att beställa meddelandena.
list_messages
returnerar olika typer av meddelanden, som kan identifieras av ChatMessage.type
.
Mer information finns i Meddelandetyper.
Skicka läskvitto
Du använder send_read_receipt
metoden för att publicera en läskvittohändelse i en tråd för en användares räkning.
- Använd
message_id
för att ange ID för det senaste meddelandet som lästs av den aktuella användaren.
content='hello world'
send_message_result = chat_thread_client.send_message(content)
chat_thread_client.send_read_receipt(message_id=send_message_result.id)
Lägga till en användare som deltagare i chatttråden
När du skapar en chatttråd kan du sedan lägga till och ta bort användare från den. Genom att lägga till användare ger du dem åtkomst för att kunna skicka meddelanden till chatttråden och lägga till eller ta bort andra deltagare. Innan du anropar add_participants
metoden kontrollerar du att du har skaffat en ny åtkomsttoken och identitet för den användaren. Användaren behöver åtkomsttoken för att initiera chattklienten.
Du kan lägga till en eller flera användare i chatttråden add_participants
med hjälp av metoden, förutsatt att en ny åtkomsttoken och identitet är tillgänglig för alla användare.
A list(tuple(ChatParticipant, CommunicationError))
returneras. När deltagaren har lagts till förväntas en tom lista. Om du stöter på ett fel när du lägger till en deltagare fylls listan med de misslyckade deltagarna, tillsammans med det fel som påträffades.
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)
Lista tråddeltagare i en chatttråd
På samma sätt som när du lägger till en deltagare kan du även lista deltagare från en tråd.
Använd list_participants
för att hämta deltagarna i tråden. Båda följande kommandon är valfria:
- Använd
results_per_page
för att ange det maximala antalet deltagare som ska returneras per sida. - Använd
skip
för att hoppa över deltagare upp till en angiven position i svaret.
En iterator för [ChatParticipant]
är svaret som returneras från en lista över deltagare.
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)
Kör koden
Kör programmet från programkatalogen python
med kommandot .
python start-chat.py
Exempelkod
Hitta den färdiga koden för den här snabbstarten på GitHub.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.
Java Development Kit (JDK) version 8 eller senare.
Skapa en Azure Communication Services-resurs. Mer information finns i Skapa en Azure Communication Services-resurs. Du måste registrera resursslutpunkten och anslutningssträng för den här snabbstarten.
En användaråtkomsttoken. Se till att ange omfånget till chatt och notera tokensträngen samt user_id strängen. Du kan också använda Azure CLI och köra kommandot nedan med din anslutningssträng för att skapa en användare och en åtkomsttoken.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Mer information finns i Använda Azure CLI för att skapa och hantera åtkomsttoken.
Konfigurera
Skapa ett nytt Java-program
Öppna terminalen eller kommandofönstret och gå till katalogen där du vill skapa java-programmet. Kör kommandot nedan för att generera Java-projektet från mallen maven-archetype-quickstart.
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
Du kommer att märka att "generera"-målet skapade en katalog med samma namn som artifactId. Under den här katalogen src/main/java directory
innehåller projektets källkod, src/test/java
katalogen innehåller testkällan och pom.xml-filen är projektets projektobjektmodell eller POM.
Uppdatera programmets POM-fil för att använda Java 8 eller senare:
<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>
Lägg till paketreferenserna för Chat SDK
I POM-filen refererar du till azure-communication-chat
paketet med chatt-API:erna:
<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>
För autentisering måste klienten referera azure-communication-common
till paketet:
<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>
Objektmodell
Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i Azure Communication Services Chat SDK för Java.
Namn | Beskrivning |
---|---|
ChatClient | Den här klassen behövs för chattfunktionen. Du instansierar den med din prenumerationsinformation och använder den för att skapa, hämta och ta bort trådar. |
ChatAsyncClient | Den här klassen behövs för asynkrona chattfunktioner. Du instansierar den med din prenumerationsinformation och använder den för att skapa, hämta och ta bort trådar. |
ChatThreadClient | Den här klassen behövs för chatttrådsfunktionen. Du hämtar en instans via ChatClient och använder den för att skicka/ta emot/uppdatera/ta bort meddelanden, lägga till/ta bort/hämta användare, skicka skrivmeddelanden och läsa kvitton. |
ChatThreadAsyncClient | Den här klassen behövs för funktionen asynkron chatttråd. Du hämtar en instans via ChatAsyncClient och använder den för att skicka/ta emot/uppdatera/ta bort meddelanden, lägga till/ta bort/hämta användare, skicka skrivmeddelanden och läskvitton. |
Skapa en chattklient
Om du vill skapa en chattklient använder du slutpunkten för kommunikationstjänsten och åtkomsttoken som genererades som en del av nödvändiga steg. Med användaråtkomsttoken kan du skapa klientprogram som autentiserar direkt till Azure Communication Services. När du har genererat dessa token på servern skickar du tillbaka dem till en klientenhet. Du måste använda klassen CommunicationTokenCredential från Common SDK för att skicka token till chattklienten.
Läs mer om chattarkitektur
När du lägger till importinstruktionerna ska du bara lägga till importer från namnrymderna com.azure.communication.chat.models och inte från namnområdet com.azure.communication.chat.implementation. I filen App.java som genererades via Maven kan du använda följande kod till att börja med:
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();
}
}
Starta en chatttråd
createChatThread
Använd metoden för att skapa en chatttråd.
createChatThreadOptions
används för att beskriva trådbegäran.
- Använd parametern
topic
för konstruktorn för att ge ett ämne till den här chatten. Ämnet kan uppdateras när chatttråden har skapats med hjälp avUpdateThread
funktionen . - Använd
participants
för att lista de tråddeltagare som ska läggas till i tråden.ChatParticipant
tar den användare som du skapade i snabbstarten för användaråtkomsttoken .
CreateChatThreadResult
är svaret som returneras från skapandet av en chatttråd.
Den innehåller en getChatThread()
metod som returnerar det ChatThread
objekt som kan användas för att hämta trådklienten ChatThreadClient
som du kan hämta för att utföra åtgärder i den skapade tråden: lägga till deltagare, skicka meddelande osv. Objektet ChatThread
innehåller också metoden getId()
som hämtar trådens unika ID.
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();
Lista chatttrådar
listChatThreads
Använd metoden för att hämta en lista över befintliga chatttrådar.
PagedIterable<ChatThreadItem> chatThreads = chatClient.listChatThreads();
chatThreads.forEach(chatThread -> {
System.out.printf("ChatThread id is %s.\n", chatThread.getId());
});
Hämta en chatttrådsklient
Metoden getChatThreadClient
returnerar en trådklient för en tråd som redan finns. Den kan användas för att utföra åtgärder i den skapade tråden: lägga till deltagare, skicka meddelande osv. chatThreadId
är det unika ID:t för den befintliga chatttråden.
ChatThreadClient chatThreadClient = chatClient.getChatThreadClient(chatThreadId);
Skicka ett meddelande till en chatttråd
sendMessage
Använd metoden för att skicka ett meddelande till den tråd som du skapade, identifierad av chatThreadId.
sendChatMessageOptions
används för att beskriva chattmeddelandeförfrågan.
- Använd
content
för att ange innehållet i chattmeddelandet. - Använd
type
för att ange innehållstypen för chattmeddelanden, TEXT eller HTML. - Använd
senderDisplayName
för att ange avsändarens visningsnamn. - Om
metadata
du vill kan du inkludera ytterligare data som du vill skicka tillsammans med meddelandet. Det här fältet innehåller en mekanism för utvecklare att utöka chattmeddelandefunktionerna och lägga till anpassad information för ditt användningsfall. När du till exempel delar en fillänk i meddelandet kanske du vill läggahasAttachment:true
till metadata så att mottagarens program kan parsa det och visa det.
Svaret sendChatMessageResult
innehåller ett id
, vilket är det unika ID:t för meddelandet.
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();
Ta emot chattmeddelanden från en chatttråd
Du kan hämta chattmeddelanden genom att avsöka listMessages
metoden på chatttrådsklienten med angivna intervall.
chatThreadClient.listMessages().forEach(message -> {
System.out.printf("Message id is %s.\n", message.getId());
});
listMessages
returnerar den senaste versionen av meddelandet, inklusive eventuella ändringar eller borttagningar som hände med meddelandet med hjälp av .editMessage()
och .deleteMessage()
. För borttagna meddelanden chatMessage.getDeletedOn()
returnerar ett datetime-värde som anger när meddelandet togs bort. För redigerade meddelanden chatMessage.getEditedOn()
returnerar en datetime som anger när meddelandet redigerades. Den ursprungliga tiden då meddelandet skapades kan nås med hjälp av chatMessage.getCreatedOn()
och kan användas för att beställa meddelandena.
Läs mer om meddelandetyper här: Meddelandetyper.
Skicka läskvitto
sendReadReceipt
Använd metoden för att publicera en läskvittohändelse i en chatttråd för en användares räkning.
chatMessageId
är det unika ID:t för chattmeddelandet som lästes.
String chatMessageId = message.getId();
chatThreadClient.sendReadReceipt(chatMessageId);
Visa en lista över chattdeltagare
Använd listParticipants
för att hämta en sidig samling som innehåller deltagarna i chatttråden som identifierats av chatThreadId.
PagedIterable<ChatParticipant> chatParticipantsResponse = chatThreadClient.listParticipants();
chatParticipantsResponse.forEach(chatParticipant -> {
System.out.printf("Participant id is %s.\n", ((CommunicationUserIdentifier) chatParticipant.getCommunicationIdentifier()).getId());
});
Lägga till en användare som deltagare i chatttråden
När en chatttråd har skapats kan du sedan lägga till och ta bort användare från den. Genom att lägga till användare ger du dem åtkomst till att skicka meddelanden till chatttråden och lägga till/ta bort andra deltagare. Du måste börja med att hämta en ny åtkomsttoken och identitet för den användaren. Innan du anropar metoden addParticipants kontrollerar du att du har skaffat en ny åtkomsttoken och identitet för den användaren. Användaren behöver den åtkomsttoken för att initiera chattklienten.
addParticipants
Använd metoden för att lägga till deltagare i tråden.
communicationIdentifier
, obligatoriskt, är Den CommunicationIdentifier som du har skapat av CommunicationIdentityClient i snabbstarten för användaråtkomsttoken .displayName
, valfritt, är visningsnamnet för tråddeltagaren.shareHistoryTime
, valfritt, är den tid från vilken chatthistoriken delas med deltagaren. Om du vill dela historiken sedan chatttråden startades ställer du in den här egenskapen på ett datum som är lika med eller mindre än tiden då tråden skapades. Om du vill dela någon historik tidigare än när deltagaren lades till anger du det till aktuellt datum. Om du vill dela partiell historik anger du det till det datum som krävs.
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);
Kör koden
Navigera till katalogen som innehåller pom.xml-filen och kompilera projektet med hjälp av följande mvn
kommando.
mvn compile
Skapa sedan paketet.
mvn package
Kör följande mvn
kommando för att köra appen.
mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
Exempelkod
Hitta den färdiga koden för den här snabbstarten på GitHub.
Förutsättningar
Innan du kommer igång måste du:
Skapa ett Azure-konto med en aktiv prenumeration. Mer information finns i Skapa ett konto kostnadsfritt.
Installera Android Studio, vi kommer att använda Android Studio för att skapa ett Android-program för snabbstarten för att installera beroenden.
Skapa en Azure Communication Services-resurs. Mer information finns i Skapa en Azure Communication Services-resurs. Du måste registrera resursslutpunkten och anslutningssträng för den här snabbstarten.
Skapa två Communication Services-användare och ge dem en användaråtkomsttoken. Se till att ange omfånget till chatt och notera tokensträngen och user_id strängen. I den här snabbstarten skapar vi en tråd med en första deltagare och lägger sedan till en andra deltagare i tråden. Du kan också använda Azure CLI och köra kommandot nedan med din anslutningssträng för att skapa en användare och en åtkomsttoken.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Mer information finns i Använda Azure CLI för att skapa och hantera åtkomsttoken.
Konfigurera
Skapa ett nytt Android-program
- Öppna Android Studio och välj
Create a new project
. - I nästa fönster väljer du
Empty Activity
som projektmall. - När du väljer alternativ anger du
ChatQuickstart
som projektnamn. - Klicka på nästa och välj den katalog där du vill att projektet ska skapas.
Installera biblioteken
Vi använder Gradle för att installera de nödvändiga kommunikationstjänsternas beroenden. Från kommandoraden navigerar du i projektets ChatQuickstart
rotkatalog. Öppna appens build.gradle-fil och lägg till följande beroenden i ChatQuickstart
målet:
implementation 'com.azure.android:azure-communication-common:' + $azureCommunicationCommonVersion
implementation 'com.azure.android:azure-communication-chat:' + $azureCommunicationChatVersion
implementation 'org.slf4j:slf4j-log4j12:1.7.29'
https://search.maven.org/artifact/com.azure.android/azure-communication-common Se och https://search.maven.org/artifact/com.azure.android/azure-communication-chat för de senaste versionsnumren.
Exkludera metafiler i paketeringsalternativ i root build.gradle
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")
}
}
(Alternativ) Så här installerar du bibliotek via Maven
Om du vill importera biblioteket till projektet med hjälp av Maven-byggsystemet lägger du till det i dependencies
avsnittet i appens pom.xml
fil och anger dess artefakt-ID och den version som du vill använda:
<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>
Skapa en Azure-funktion
Mer information finns i Azure-funktionsintegrering . Vi rekommenderar starkt att du integrerar med Azure Function för att undvika hårdkodade programparametrar.
Konfigurera programkonstanter:
Skapa en klass ApplicationConstants
som lagrar alla programkonstanter:
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;
}
Konfigurera platshållarna
Öppna och redigera filen MainActivity.java
. I den här snabbstarten lägger vi till koden MainActivity
i och visar utdata i konsolen. Den här snabbstarten handlar inte om att skapa ett användargränssnitt. Längst upp i filen importerar du Azure Communication Common
, Azure Communication Chat
och andra systembibliotek:
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;
Kopiera följande kod till klassen MainActivity
i filen MainActivity.java
:
private ChatAsyncClient chatAsyncClient;
private void log(String msg) {
Log.i(TAG, 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());
}
}
Initiera programparametrar
Kommentar
Initiering ApplicationConstants
måste läggas till MainActivity.java
om något av följande villkor uppfylls: 1. Funktionen för push-meddelanden är INTE aktiverad. 2. Versionen för Azure Communication Chat-biblioteket för Android är < "2.0.0". I annat fall kan du läsa steg 11 i Android-push-meddelanden. Se exempelappen för den SDK-version som du använder som referens.
ACS_ENDPOINT
och FIRST_USER_ID
FIRST_USER_ACCESS_TOKEN
returneras från att anropa Azure Function. Mer information finns i Azure-funktionsintegrering . Vi använder svaret från att anropa Azure Function för att initiera listan med parametrar:
ACS_ENDPOINT
: slutpunkten för din Communication Services-resurs.FIRST_USER_ID
ochSECOND_USER_ID
: giltiga användar-ID:t för Communication Services som genereras av din Communication Services-resurs.FIRST_USER_ACCESS_TOKEN
: åtkomsttoken för communication Services för<FIRST_USER_ID>
.
Kodblock för att initiera programparametrar genom att anropa 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);
}
Skapa en chattklient
Ersätt kommentaren <CREATE A CHAT CLIENT>
med följande kod (placera importinstruktionerna överst i filen):
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();
Objektmodell
Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i Azure Communication Services Chat SDK för JavaScript.
Namn | Beskrivning |
---|---|
ChatClient/ChatAsyncClient | Den här klassen behövs för chattfunktionen. Du instansierar den med din prenumerationsinformation och använder den för att skapa, hämta, ta bort trådar och prenumerera på chatthändelser. |
ChatThreadClient/ChatThreadAsyncClient | Den här klassen behövs för chatttrådsfunktionen. Du hämtar en instans via ChatClient och använder den för att skicka/ta emot/uppdatera/ta bort meddelanden, lägga till/ta bort/hämta användare, skicka skrivmeddelanden och läsa kvitton. |
Starta en chatttråd
Vi använder vår ChatAsyncClient
för att skapa en ny tråd med en första användare.
Ersätt kommentaren <CREATE A CHAT THREAD>
med följande kod:
// 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();
Hämta en chatttrådsklient
Nu när vi har skapat en chatttråd får vi en ChatThreadAsyncClient
för att utföra åtgärder i tråden. Ersätt kommentaren <CREATE A CHAT THREAD CLIENT>
med följande kod:
ChatThreadAsyncClient chatThreadAsyncClient = new ChatThreadClientBuilder()
.endpoint(endpoint)
.credential(new CommunicationTokenCredential(firstUserAccessToken))
.addPolicy(new UserAgentPolicy(APPLICATION_ID, SDK_NAME, sdkVersion))
.chatThreadId(threadId)
.buildAsyncClient();
Skicka ett meddelande till en chatttråd
Vi skickar ett meddelande till den tråden nu.
Ersätt kommentaren <SEND A MESSAGE>
med följande kod:
// 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();
Ta emot chattmeddelanden från en chatttråd
Realtidsmeddelanden
Med realtidssignalering kan du prenumerera på nya inkommande meddelanden och uppdatera de aktuella meddelandena i minnet i enlighet med detta. Azure Communication Services stöder en lista över händelser som du kan prenumerera på.
Ersätt kommentaren <RECEIVE CHAT MESSAGES>
med följande kod (placera importinstruktionerna överst i filen):
// 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
});
Viktigt!
Känt problem: När du använder Android Chat och Calling SDK tillsammans i samma program fungerar inte Chat SDK:s realtidsaviseringar. Du kan få problem med att lösa ett beroende. Medan vi arbetar med en lösning kan du inaktivera funktionen för realtidsaviseringar genom att lägga till följande beroendeinformation i appens build.gradle-fil och i stället avsöka Api:et GetMessages för att visa inkommande meddelanden för användare.
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'
Observera med ovanstående uppdatering, om programmet försöker röra något av meddelande-API:et som chatAsyncClient.startRealtimeNotifications()
eller chatAsyncClient.addEventHandler()
, kommer det att uppstå ett körningsfel.
Push-meddelanden
Mer information finns i Android-push-meddelanden .
Lägga till en användare som deltagare i chatttråden
Ersätt kommentaren <ADD A USER>
med följande kod:
// 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);
Visa en lista över användare i en tråd
Ersätt kommentaren <LIST USERS>
med följande kod (placera importinstruktionerna överst i filen):
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
});
Ta bort användare från en chatttråd
Vi tar bort den andra användaren från tråden nu.
Ersätt kommentaren <REMOVE A USER>
med följande kod:
// Using the unique ID of the participant.
chatThreadAsyncClient.removeParticipant(new CommunicationUserIdentifier(secondUserId)).get();
Skicka ett skrivmeddelande
Ersätt kommentaren <SEND A TYPING NOTIFICATION>
med följande kod:
chatThreadAsyncClient.sendTypingNotification().get();
Skicka ett läskvitto
Vi skickar läskvitto för meddelandet som skickades ovan.
Ersätt kommentaren <SEND A READ RECEIPT>
med följande kod:
chatThreadAsyncClient.sendReadReceipt(chatMessageId).get();
Visa en lista över läskvitton
Ersätt kommentaren <READ RECEIPTS>
med följande kod:
// 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
});
Kör koden
I Android Studio trycker du på knappen Kör för att skapa och köra projektet. I konsolen kan du visa utdata från koden och loggningsutdata från ChatClient.
Exempelkod
Hitta den färdiga koden för den här snabbstarten på GitHub.
Förutsättningar
Innan du kommer igång måste du:
Skapa ett Azure-konto med en aktiv prenumeration. Mer information finns i Skapa ett konto kostnadsfritt.
Installera Visual Studio
Skapa en Azure Communication Services-resurs. Mer information finns i Skapa en Azure Communication Services-resurs. Du måste registrera resursslutpunkten och anslutningssträng för den här snabbstarten.
En användaråtkomsttoken. Se till att ange omfånget till chatt och notera tokensträngen samt user_id strängen. Du kan också använda Azure CLI och köra kommandot nedan med din anslutningssträng för att skapa en användare och en åtkomsttoken.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Mer information finns i Använda Azure CLI för att skapa och hantera åtkomsttoken.
Konfigurera
Skapa ett nytt C#-program
I ett konsolfönster (till exempel cmd, PowerShell eller Bash) använder du dotnet new
kommandot för att skapa en ny konsolapp med namnet ChatQuickstart
. Det här kommandot skapar ett enkelt "Hello World" C#-projekt med en enda källfil: Program.cs.
dotnet new console -o ChatQuickstart
Ändra katalogen till den nyligen skapade appmappen dotnet build
och använd kommandot för att kompilera programmet.
cd ChatQuickstart
dotnet build
Installera -paketet
Installera Azure Communication Chat SDK för .NET
dotnet add package Azure.Communication.Chat
Objektmodell
Följande klasser hanterar några av de viktigaste funktionerna i Azure Communication Services Chat SDK för C#.
Namn | Beskrivning |
---|---|
ChatClient | Den här klassen behövs för chattfunktionen. Du instansierar den med din prenumerationsinformation och använder den för att skapa, hämta och ta bort trådar. |
ChatThreadClient | Den här klassen behövs för chatttrådsfunktionen. Du får en instans via ChatClient och använder den för att skicka/ta emot/uppdatera/ta bort meddelanden, lägga till/ta bort/hämta deltagare, skicka skrivmeddelanden och läskvitton. |
Skapa en chattklient
Om du vill skapa en chattklient använder du slutpunkten för Communication Services och åtkomsttoken som genererades som en del av de nödvändiga stegen. Du måste använda CommunicationIdentityClient
klassen från Identity SDK för att skapa en användare och utfärda en token för att skicka till chattklienten.
Läs mer om användaråtkomsttoken.
Den här snabbstarten beskriver inte hur du skapar en tjänstnivå för att hantera token för chattprogrammet, även om det rekommenderas. Läs mer om chattarkitektur
Kopiera följande kodfragment och klistra in i källfilen: Program.cs
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);
}
}
}
Starta en chatttråd
createChatThread
Använd metoden i chatClient för att skapa en chatttråd
- Använd
topic
för att ge ett ämne till den här chatten; Ämnet kan uppdateras när chatttråden har skapats med hjälp avUpdateTopic
funktionen . - Använd
participants
egenskapen för att skicka en lista överChatParticipant
objekt som ska läggas till i chatttråden. ObjektetChatParticipant
initieras med ettCommunicationIdentifier
objekt.CommunicationIdentifier
kan vara av typenCommunicationUserIdentifier
,MicrosoftTeamsUserIdentifier
ellerPhoneNumberIdentifier
. Om du till exempel vill hämta ettCommunicationIdentifier
objekt måste du skicka ett åtkomst-ID som du skapade genom att följa anvisningarna för att skapa en användare
Svarsobjektet från createChatThread
metoden innehåller chatThread
information. Om du vill interagera med chatttrådsåtgärder som att lägga till deltagare, skicka ett meddelande, ta bort ett meddelande osv. måste en chatThreadClient
klientinstans instans instansieras med hjälp av GetChatThreadClient
-metoden på ChatClient
klienten.
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;
Hämta en chatttrådsklient
Metoden GetChatThreadClient
returnerar en trådklient för en tråd som redan finns. Den kan användas för att utföra åtgärder i den skapade tråden: lägga till medlemmar, skicka meddelande osv. threadId är det unika ID:t för den befintliga chatttråden.
string threadId = "<THREAD_ID>";
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(threadId: threadId);
Visa en lista över alla chatttrådar
Använd GetChatThreads
för att hämta alla chatttrådar som användaren är en del av.
AsyncPageable<ChatThreadItem> chatThreadItems = chatClient.GetChatThreadsAsync();
await foreach (ChatThreadItem chatThreadItem in chatThreadItems)
{
Console.WriteLine($"{ chatThreadItem.Id}");
}
Skicka ett meddelande till en chatttråd
Använd SendMessage
för att skicka ett meddelande till en tråd.
- Använd
content
för att ange innehållet för meddelandet, det krävs. - Använd
type
för innehållstypen för meddelandet, till exempel "Text" eller "Html". Om det inte anges anges kommer "Text" att anges. - Använd
senderDisplayName
för att ange avsändarens visningsnamn. Om inte anges anges en tom sträng. - Om
metadata
du vill kan du inkludera ytterligare data som du vill skicka tillsammans med meddelandet. Det här fältet innehåller en mekanism för utvecklare att utöka chattmeddelandefunktionerna och lägga till anpassad information för ditt användningsfall. När du till exempel delar en fillänk i meddelandet kanske du vill lägga till "hasAttachment:true" i metadata så att mottagarens program kan parsa det och visa därefter.
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;
Ta emot chattmeddelanden från en chatttråd
Du kan hämta chattmeddelanden genom att avsöka GetMessages
metoden på chatttrådsklienten med angivna intervall.
AsyncPageable<ChatMessage> allMessages = chatThreadClient.GetMessagesAsync();
await foreach (ChatMessage message in allMessages)
{
Console.WriteLine($"{message.Id}:{message.Content.Message}");
}
GetMessages
tar en valfri DateTimeOffset
parameter. Om förskjutningen har angetts får du meddelanden som har tagits emot, uppdaterats eller tagits bort efter den. Observera att meddelanden som tagits emot före förskjutningen men som redigerats eller tagits bort efter det också kommer att returneras.
GetMessages
returnerar den senaste versionen av meddelandet, inklusive eventuella ändringar eller borttagningar som hände med meddelandet med hjälp av UpdateMessage
och DeleteMessage
. För borttagna meddelanden chatMessage.DeletedOn
returnerar ett datetime-värde som anger när meddelandet togs bort. För redigerade meddelanden chatMessage.EditedOn
returnerar en datetime som anger när meddelandet redigerades. Den ursprungliga tiden då meddelandet skapades kan nås med hjälp av chatMessage.CreatedOn
och kan användas för att beställa meddelandena.
GetMessages
returnerar olika typer av meddelanden som kan identifieras av chatMessage.Type
. Följande typer är:
Text
: Vanligt chattmeddelande som skickas av en trådmedlem.Html
: Ett formaterat textmeddelande. Observera att Communication Services-användare för närvarande inte kan skicka RichText-meddelanden. Den här meddelandetypen stöds av meddelanden som skickas från Teams-användare till Communication Services-användare i Teams Interop-scenarier.TopicUpdated
: Systemmeddelande som anger att ämnet har uppdaterats. (skrivskyddat)ParticipantAdded
: Systemmeddelande som anger att en eller flera deltagare har lagts till i chatttråden. (skrivskyddat)ParticipantRemoved
: Systemmeddelande som anger att en deltagare har tagits bort från chatttråden.
Mer information finns i Meddelandetyper.
Lägga till en användare som deltagare i chatttråden
När en tråd har skapats kan du sedan lägga till och ta bort användare från den. Genom att lägga till användare ger du dem åtkomst för att kunna skicka meddelanden till tråden och lägga till/ta bort andra deltagare. Innan du anropar AddParticipants
kontrollerar du att du har skaffat en ny åtkomsttoken och identitet för den användaren. Användaren behöver den åtkomsttoken för att initiera chattklienten.
Använd AddParticipants
för att lägga till en eller flera deltagare i chatttråden. Följande är attribut som stöds för varje tråddeltagare:
communicationUser
, obligatoriskt, är identiteten för tråddeltagaren.displayName
, valfritt, är visningsnamnet för tråddeltagaren.shareHistoryTime
, valfritt, tid från vilken chatthistoriken delas med deltagaren.
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);
Hämta tråddeltagare
Använd GetParticipants
för att hämta deltagarna i chatttråden.
AsyncPageable<ChatParticipant> allParticipants = chatThreadClient.GetParticipantsAsync();
await foreach (ChatParticipant participant in allParticipants)
{
Console.WriteLine($"{((CommunicationUserIdentifier)participant.User).Id}:{participant.DisplayName}:{participant.ShareHistoryTime}");
}
Skicka läskvitto
Använd SendReadReceipt
för att meddela andra deltagare att meddelandet läss av användaren.
await chatThreadClient.SendReadReceiptAsync(messageId: messageId);
Kör koden
Kör programmet från programkatalogen dotnet run
med kommandot .
dotnet run
Exempelkod
Hitta den färdiga koden för den här snabbstarten på GitHub.
Förutsättningar
Innan du kommer igång måste du:
Skapa ett Azure-konto med en aktiv prenumeration. Mer information finns i Skapa ett konto kostnadsfritt.
Installera Xcode och CocoaPods. Du använder Xcode för att skapa ett iOS-program för snabbstarten och CocoaPods för att installera beroenden.
Skapa en Azure Communication Services-resurs. Mer information finns i Snabbstart: Skapa och hantera Communication Services-resurser. Du måste registrera resursslutpunkten och anslutningssträng för den här snabbstarten.
Skapa två användare i Azure Communication Services och ge dem en användaråtkomsttoken. Se till att ange omfånget till chatt och notera tokensträngen samt user_id strängen. I den här snabbstarten skapar du en tråd med en första deltagare och lägger sedan till en andra deltagare i tråden. Du kan också använda Azure CLI och köra kommandot nedan med din anslutningssträng för att skapa en användare och en åtkomsttoken.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Mer information finns i Använda Azure CLI för att skapa och hantera åtkomsttoken.
Konfigurera
Skapa ett nytt iOS-program
Öppna Xcode och välj Skapa ett nytt Xcode-projekt. Välj sedan iOS som plattform och App för mallen.
Som projektnamn anger du ChatQuickstart. Välj sedan Storyboard som gränssnitt, UIKit App Delegate som livscykel och Swift som språk.
Välj Nästa och välj den katalog där du vill att projektet ska skapas.
Installera biblioteken
Använd CocoaPods för att installera de nödvändiga kommunikationstjänsternas beroenden.
Från kommandoraden går du in i rotkatalogen för ChatQuickstart
iOS-projektet. Skapa en Podfile med följande kommando: pod init
.
Öppna Podfile och lägg till följande beroenden i ChatQuickstart
målet:
pod 'AzureCommunicationChat', '~> 1.3.6'
Installera beroendena med följande kommando: pod install
. Observera att detta också skapar en Xcode-arbetsyta.
När du har kört pod install
öppnar du projektet igen i Xcode genom att välja den nyligen skapade .xcworkspace
.
Konfigurera platshållarna
Öppna arbetsytan ChatQuickstart.xcworkspace
i Xcode och öppna ViewController.swift
sedan .
I den här snabbstarten lägger du till koden i viewController
och visar utdata i Xcode-konsolen. Den här snabbstarten handlar inte om att skapa ett användargränssnitt i iOS.
Överst i viewController.swift
importerar du biblioteken AzureCommunication
och AzureCommunicatonChat
:
import AzureCommunicationCommon
import AzureCommunicationChat
Kopiera följande kod till viewDidLoad()
metoden 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)")
}
}
}
I demonstrationssyfte använder vi en semafor för att synkronisera koden. I följande steg ersätter du platshållarna med exempelkod med hjälp av Azure Communication Services Chat-biblioteket.
Skapa en chattklient
Om du vill skapa en chattklient använder du slutpunkten för Communication Services och åtkomsttoken som genererades som en del av de nödvändiga stegen.
Läs mer om användaråtkomsttoken.
Den här snabbstarten beskriver inte hur du skapar en tjänstnivå för att hantera token för chattprogrammet, även om det rekommenderas. Läs mer om chattarkitektur
Ersätt kommentaren <CREATE A CHAT CLIENT>
med kodfragmentet nedan:
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
)
Ersätt <ACS_RESOURCE_ENDPOINT>
med slutpunkten för din Azure Communication Services-resurs. Ersätt <ACCESS_TOKEN>
med en giltig kommunikationstjänståtkomsttoken.
Objektmodell
Följande klasser och gränssnitt hanterar några av de viktigaste funktionerna i Azure Communication Services Chat SDK för iOS.
Namn | Beskrivning |
---|---|
ChatClient |
Den här klassen behövs för chattfunktionen. Du instansierar den med din prenumerationsinformation och använder den för att skapa, hämta, ta bort trådar och prenumerera på chatthändelser. |
ChatThreadClient |
Den här klassen behövs för chatttrådsfunktionen. Du hämtar en instans via ChatClient och använder den för att skicka, ta emot, uppdatera och ta bort meddelanden. Du kan också använda den för att lägga till, ta bort och hämta användare, skicka skrivmeddelanden och läskvitton. |
Starta en chatttråd
CreateChatThreadResult
är svaret som returneras från skapandet av en chatttråd.
Den innehåller en chatThread
egenskap som är objektet ChatThreadProperties
. Det här objektet innehåller threadId som kan användas för att hämta en ChatThreadClient
för att utföra åtgärder på den skapade tråden: lägga till deltagare, skicka meddelande osv.
Ersätt kommentaren <CREATE A CHAT THREAD>
med kodfragmentet nedan:
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()
Ersätt <USER_ID>
med ett giltigt användar-ID för Communication Services.
Du använder en semafor här för att vänta på slutförandehanteraren innan du fortsätter. I senare steg använder threadId
du från svaret som returneras till slutförandehanteraren.
Visa en lista över alla chatttrådar
När vi har skapat en chatttråd kan vi lista alla chatttrådar genom att anropa metoden på listChatThreads
ChatClient
. Ersätt kommentaren <LIST ALL CHAT THREADS>
med följande kod:
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()
Hämta en chatttrådsklient
Metoden createClient
returnerar en ChatThreadClient
för en tråd som redan finns. Den kan användas för att utföra åtgärder i den skapade tråden: lägga till deltagare, skicka meddelande osv. threadId är det unika ID:t för den befintliga chatttråden.
Ersätt kommentaren <GET A CHAT THREAD CLIENT>
med följande kod:
let chatThreadClient = try chatClient.createClient(forThread: threadId!)
Skicka ett meddelande till en chatttråd
send
Använd metoden för att skicka ett meddelande till en tråd som identifieras av threadId.
SendChatMessageRequest
används för att beskriva meddelandebegäran:
- Använd
content
för att ange innehållet i chattmeddelandet - Använd
senderDisplayName
för att ange avsändarens visningsnamn - Använd
type
för att ange meddelandetypen, till exempel "text" eller "html" - Om
metadata
du vill kan du inkludera ytterligare data som du vill skicka tillsammans med meddelandet. Det här fältet innehåller en mekanism för utvecklare att utöka chattmeddelandefunktionerna och lägga till anpassad information för ditt användningsfall. När du till exempel delar en fillänk i meddelandet kanske du vill lägga till "hasAttachment:true" i metadata så att mottagarens program kan parsa det och visa därefter.
SendChatMessageResult
är svaret som returneras från att skicka ett meddelande, det innehåller ett ID, vilket är det unika ID:t för meddelandet.
Ersätt kommentaren <SEND A MESSAGE>
med kodfragmentet nedan:
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()
Skicka ett läskvitto
sendReadReceipt
Använd metoden för att publicera en läskvittohändelse i en chatttråd för en användares räkning.
messageId
är det unika ID:t för chattmeddelandet som lästes.
Ersätt kommentaren <SEND A READ RECEIPT>
med koden nedan:
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")
}
Ta emot chattmeddelanden från en chatttråd
Med realtidssignalering kan du prenumerera på att lyssna efter nya inkommande meddelanden och uppdatera de aktuella meddelandena i minnet i enlighet med detta. Azure Communication Services stöder en lista över händelser som du kan prenumerera på.
Ersätt kommentaren <RECEIVE MESSAGES>
med koden nedan. När du har aktiverat meddelanden kan du prova att skicka nya meddelanden för att se 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
}
})
Du kan också hämta chattmeddelanden genom att avsöka listMessages
metoden med angivna intervall. Se följande kodfragment för 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()
Lägga till en användare som deltagare i chatttråden
När en tråd har skapats kan du sedan lägga till och ta bort användare från den. Genom att lägga till användare ger du dem åtkomst för att kunna skicka meddelanden till tråden och lägga till/ta bort andra deltagare. Innan du anropar add
kontrollerar du att du har skaffat en ny åtkomsttoken och identitet för den användaren. Användaren behöver den åtkomsttoken för att initiera chattklienten.
add
Använd metoden ChatThreadClient
för att lägga till en eller flera deltagare i chatttråden. Följande är attribut som stöds för varje tråddeltagare:
id
, obligatoriskt, är identiteten för tråddeltagaren.displayName
, valfritt, är visningsnamnet för tråddeltagaren.shareHistoryTime
, valfritt, tid från vilken chatthistoriken delas med deltagaren.
Ersätt kommentaren <ADD A USER>
med följande kod:
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()
Ersätt <USER_ID>
med kommunikationstjänsternas användar-ID för den användare som ska läggas till.
Visa en lista över användare i en tråd
listParticipants
Använd metoden för att hämta alla deltagare för en viss chatttråd.
Ersätt kommentaren <LIST USERS>
med följande kod:
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()
Push-meddelanden
Push-meddelanden meddelar klienter om inkommande meddelanden i en chatttråd i situationer där mobilappen inte körs i förgrunden. För närvarande stöds sändning av chatt-push-meddelanden med Notification Hub för IOS SDK i version 1.3.0. Mer information finns i artikeln Aktivera push-meddelanden i chattappen .
Kör koden
I Xcode trycker du på knappen Kör för att skapa och köra projektet. I konsolen kan du visa utdata från koden och loggningsutdata från ChatClient.
Obs! Ange Build Settings > Build Options > Enable Bitcode
till No
. För närvarande har AzureCommunicationChat SDK för iOS inte stöd för aktivering av bitkod. Följande GitHub-problem spårar detta.
Exempelkod
Hitta den färdiga koden för den här snabbstarten på GitHub.
Förutsättningar
Ett Azure-konto med en aktiv prenumeration eller skapa ett Azure-konto kostnadsfritt.
En aktiv Azure Communication Services-resurs eller skapa en Communication Services-resurs.
En aktiv Azure Logic Apps-resurs eller skapa en tom logikapp med den utlösare som du vill använda. För närvarande tillhandahåller Communication Services Chat-anslutningsappen endast åtgärder, så din logikapp kräver minst en utlösare.
Skapa användare
Slutför de här stegen i Power Automate med power automate-flödet öppet i redigeringsläge.
Så här lägger du till ett nytt steg i arbetsflödet med hjälp av anslutningsappen för Kommunikationstjänsters identitet:
I designern går du till steget där du vill lägga till den nya åtgärden och väljer Nytt steg. Du kan också lägga till den nya åtgärden mellan stegen genom att flytta pekaren över pilen mellan dessa steg, välja plustecknet (+) och sedan välja Lägg till en åtgärd.
I sökrutan Välj en åtgärd anger du Communication Services-identitet. I listan över åtgärder väljer du Skapa en användare.
Ange anslutningssträng. Om du vill hämta anslutningssträng-URL:en i Azure-portalen går du till Azure Communication Services-resursen. I resursmenyn väljer du Nycklar och sedan Anslut ionssträng. Välj kopieringsikonen för att kopiera anslutningssträng.
Ange ett namn på anslutningen.
Välj Visa avancerade alternativ och välj sedan tokenomfånget. Åtgärden genererar en åtkomsttoken och dess förfallotid med det angivna omfånget. Den här åtgärden genererar också ett användar-ID som är en Kommunikationstjänster-användaridentitet.
I Objekt för tokenomfattningar väljer du chatt.
Välj Skapa. Användar-ID och en åtkomsttoken visas.
Skapa en chatttråd
Lägg till en ny åtgärd.
I sökrutan Välj en åtgärd anger du Communication Services Chat. I listan över åtgärder väljer du Skapa chatttråd.
Ange URL:en för Kommunikationstjänsters slutpunkt. Om du vill hämta slutpunkts-URL:en i Azure-portalen går du till Azure Communication Services-resursen. I resursmenyn väljer du Nycklar och sedan Slutpunkt.
Ange ett namn på anslutningen.
Välj den åtkomsttoken som genererades i föregående avsnitt och lägg sedan till en beskrivning av chatttrådsämnet. Lägg till den skapade användaren och ange ett namn för deltagaren.
Skicka ett meddelande
Lägg till en ny åtgärd.
I sökrutan Välj en åtgärd anger du Communication Services Chat. I listan över åtgärder väljer du Skicka meddelande till chatttråd.
Ange åtkomsttoken, tråd-ID, innehåll och namn.
Lista chatttrådsmeddelanden
Så här kontrollerar du att du har skickat ett meddelande korrekt:
Lägg till en ny åtgärd.
I sökrutan Välj en åtgärd anger du Communication Services Chat. I listan över åtgärder väljer du Lista chatttrådsmeddelanden.
Ange åtkomsttoken och tråd-ID:t.
Testa logikappen
Om du vill starta arbetsflödet manuellt går du till verktygsfältet designer och väljer Kör. Arbetsflödet skapar en användare, utfärdar en åtkomsttoken för användaren och tar sedan bort token och tar bort användaren. Mer information finns i Så här kör du arbetsflödet.
Välj nu Lista chatttrådsmeddelanden. I åtgärdens utdata söker du efter meddelandet som skickades.
Rensa arbetsflödesresurser
Om du vill rensa logikappens arbetsflöde och relaterade resurser kan du läsa om hur du rensar Logic Apps-resurser.
Rensa resurser
Om du vill rensa och ta bort en Communication Services-prenumeration kan du ta bort resursen eller resursgruppen. Om du tar bort resursgruppen tas även alla andra resurser som är associerade med den bort. Läs mer om att rensa resurser.
Nästa steg
I den här snabbstarten lärde du dig att:
- Skapa en chattklient
- Skapa en tråd med två användare
- Skicka ett meddelande till tråden
- Ta emot meddelanden från en tråd
- Ta bort användare från en tråd
Du kanske också vill:
- Kom igång med användargränssnittsbiblioteket
- Lär dig mer om chattbegrepp
- Bekanta dig med Chat SDK
- Använda Chat SDK i ditt React Native-program .