Hızlı Başlangıç: Uygulamanıza Sohbet Ekleme
Uygulamanıza gerçek zamanlı sohbet eklemek için İletişim Hizmetleri Sohbet SDK'sını kullanarak Azure İletişim Hizmetleri kullanmaya başlayın. Bu hızlı başlangıçta, kullanıcıların birbirleriyle konuşmalarını sağlayan sohbet yazışmaları oluşturmak için Sohbet SDK'sını kullanacağız. Sohbet kavramları hakkında daha fazla bilgi edinmek için sohbet kavramsal belgelerini ziyaret edin.
Ön koşullar
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
Etkin bir İletişim Hizmetleri kaynağı ve bağlantı dizesi. İletişim Hizmetleri kaynağı oluşturun.
Azure CLI'yı yükleyin.
İletişim Hizmetleri kaynak uç noktanızı not edin. Uç noktayı Azure portalından alabilirsiniz. Alternatif olarak, uç nokta URL'sini bağlantı dizesi bulabilirsiniz. Sonrasında gelen
endpoint=
ve ile başlayan URL'dirhttps://
.Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.
Ayarlama
Uzantıyı ekleme
komutunu kullanarak Azure CLI için Azure İletişim Hizmetleri uzantısını az extension
ekleyin.
az extension add --name communication
Azure CLI'da oturum açma
Azure CLI'da oturum açmanız gerekir. Terminalden komutunu çalıştırarak az login
ve kimlik bilgilerinizi sağlayarak oturum açabilirsiniz.
(İsteğe bağlı) Uç nokta veya erişim belirteci geçirmeden Azure CLI kimlik işlemlerini kullanma
Uç noktanızı bir ortam değişkeninde depolama
Ortam değişkenini AZURE_COMMUNICATION_ENDPOINT
, uç noktayı geçirmek için kullanmak zorunda kalmadan Azure CLI sohbet işlemlerini kullanacak --endpoint
şekilde yapılandırabilirsiniz. Ortam değişkenini yapılandırmak için bir konsol penceresi açın ve aşağıdaki sekmelerden işletim sisteminizi seçin. değerini gerçek uç noktanızla değiştirin <yourEndpoint>
.
Bir konsol penceresi açın ve aşağıdaki komutu girin:
setx AZURE_COMMUNICATION_ENDPOINT "<yourEndpoint>"
Ortam değişkenini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okumak için gereken tüm çalışan programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.
Erişim belirtecinizi bir ortam değişkeninde depolama
Ortam değişkenini, erişim belirtecini AZURE_COMMUNICATION_ACCESS_TOKEN
geçirmek için kullanmak zorunda kalmadan Azure CLI sohbet işlemlerini kullanacak --access-token
şekilde yapılandırabilirsiniz. Ortam değişkenini yapılandırmak için bir konsol penceresi açın ve aşağıdaki sekmelerden işletim sisteminizi seçin. değerini gerçek erişim belirtecinizle değiştirin <yourAccessToken>
.
Bir konsol penceresi açın ve aşağıdaki komutu girin:
setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"
Ortam değişkenini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okumak için gereken tüm çalışan programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.
Operations
Sohbet yazışması başlatma
Sohbet yazışması thread create
oluşturmak için komutunu kullanın.
az communication chat thread create --topic "<chatTopic>" --endpoint "<endpoint>" --access-token "<token>"
Uç noktayı ve erişim belirtecini yukarıda belirtildiği gibi ortam değişkenlerinde depoladıysanız, bunları komuta geçirmeniz gerekmez.
az communication chat thread create --topic "<chatTopic>"
- İş parçacığına bir konu vermek için kullanın
<chatTopic>
. Sohbet yazışması oluşturulduktan sonra komutunu kullanarakthread update-topic
konuyu güncelleştirebilirsiniz. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Sohbet yazışmasının konusunu güncelleştirme
az communication chat thread update-topic --thread "<chatThreadId>" --topic "<chatTopic>" --endpoint "<endpoint>" --access-token "<token>"
- değerini sohbet yazışması kimliğiniz ile değiştirin
<chatThreadId>
. - değerini, ayarlamak istediğiniz yeni sohbet konusuyla değiştirin
<chatTopic>
. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Tüm sohbet yazışmalarını listeleme
komut, thread list
kullanıcının sohbet yazışmalarının listesini döndürür.
az communication chat thread list --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
- İsteğe bağlı olarak, sohbet iletilerini almak için zamanın en erken noktasını belirtmek için kullanın
<startTime>
. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Sohbet yazışmasına ileti gönderme
message send
komutunu kullanarak oluşturduğunuz ve tarafından threadId
tanımlanan bir sohbet yazışmasına ileti gönderin.
az communication chat message send --thread "<chatThreadId>" --display-name "<displayName>" --content "<content>" --message-type "<messageType>" --endpoint "<endpoint>" --access-token "<token>"
- değerini sohbet yazışması kimliğiniz ile değiştirin
<chatThreadId>
. - Sohbet iletisi içeriğini sağlamak için kullanın
<content>
. - İleti içerik türünü belirtmek için kullanın
<messageType>
. Olası değerler vehtml
şeklindedirtext
. Bir değer belirtmezseniz, varsayılan değer olurtext
. - İsteğe bağlı olarak gönderenin görünen adını belirtmek için kullanın
<displayName>
. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Sohbet yazışmasında sohbet iletilerini listeleme
komutu, message list
sohbet yazışmasındaki sohbet iletilerinin listesini döndürür.
az communication chat message list --thread "<chatThreadId>" --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
- değerini sohbet yazışması kimliğiniz ile değiştirin
<chatThreadId>
. - İsteğe bağlı olarak, sohbet iletilerini almak için zamanın en erken noktasını belirtmek için kullanın
<startTime>
. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Sohbet yazışmasından sohbet iletisi alma
komutunu kullanarak message list
sohbet iletilerini alabilirsiniz.
az communication chat message get --thread "<chatThreadId>" --message-id "<messageId>" --endpoint "<endpoint>" --access-token "<token>"
- değerini sohbet yazışması kimliğiniz ile değiştirin
<chatThreadId>
. - değerini almak istediğiniz iletinin kimliğiyle değiştirin
<messageId>
. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Okundu bilgisi gönder
Kullanıcı adına bir iş parçacığına message receipt send
okundu bilgisi olayı göndermek için komutunu kullanırsınız.
az communication chat message receipt send --thread "<chatThreadId>" --message-id "<messageId>" --endpoint "<endpoint>" --access-token "<token>"
- değerini sohbet yazışması kimliğiniz ile değiştirin
<chatThreadId>
. - geçerli kullanıcı tarafından okunan en son iletinin kimliğini belirtmek için değerini değiştirin
<messageId>
. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Sohbet yazışmasına katılımcı olarak kullanıcı ekleme
Sohbet yazışması oluşturduğunuzda, kullanıcı ekleyebilir ve bu yazışmadan kullanıcı kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara sohbet yazışmasına ileti gönderebilmeleri ve diğer katılımcıları ekleyebilmeleri veya kaldırabilmeleri için erişim vermiş olursunuz. Komutunu çağırmadan participant add
önce, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun.
az communication chat participant add --thread "<chatThreadId>" --user "<userId>" --display-name "<displayName>" --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
- değerini sohbet yazışması kimliğiniz ile değiştirin
<chatThreadId>
. - değerini userId değerinizle değiştirin
<userId>
. - İsteğe bağlı olarak gönderenin görünen adını belirtmek için kullanın
<displayName>
. - İsteğe bağlı olarak, sohbet iletilerini almak için zamanın en erken noktasını belirtmek için kullanın
<startTime>
. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Sohbet yazışmasında yazışma katılımcılarını listeleme
Katılımcı eklemeye benzer şekilde, bir iş parçacığındaki katılımcıları da listeleyebilirsiniz.
İş parçacığının katılımcılarını almak için komutunu kullanın participant list
.
az communication chat participant list --thread "<chatThreadId>" --skip "<skip>" --endpoint "<endpoint>" --access-token "<token>"
- değerini sohbet yazışması kimliğiniz ile değiştirin
<chatThreadId>
. - İsteğe bağlı olarak, katılımcıları yanıtta belirtilen konuma atlamak için kullanın
<skip>
. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Sohbet yazışmasından katılımcı kaldırma
'katılımcı kaldır' komutunu kullanarak sohbet katılımcısını sohbet yazışmasından kaldırabilirsiniz.
az communication chat participant remove --thread "<chatThreadId>" --user "<userId>" --endpoint "<endpoint>" --access-token "<token>"
- değerini sohbet yazışması kimliğiniz ile değiştirin
<chatThreadId>
. - yerine
<userId>
sohbet yazışmasından kaldırmak istediğiniz userId değerini girin. - değerini Azure İletişim Hizmetleri uç noktanızla değiştirin
<endpoint>
. - değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak
identity token issue
değiştirin<token>
.
Ön koşullar
Başlamadan önce şunları yaptığınızdan emin olun:
Etkin aboneliği olan bir Azure hesabı oluşturun. Ayrıntılar için bkz . Ücretsiz hesap oluşturma.
Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz. Azure İletişim Hizmetleri kaynağı oluşturma. Bu hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.
Üç Azure İletişim Hizmetleri Kullanıcı oluşturun ve onlara bir Kullanıcı Erişim Belirteci gönderin. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Tam tanıtım, ilk iki katılımcıyla bir iş parçacığı oluşturur ve ardından iş parçacığına üçüncü bir katılımcı ekler. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.
Ayarlama
Yeni web uygulaması oluşturma
İlk olarak, terminalinizi veya komut pencerenizi açın, uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.
mkdir chat-quickstart && cd chat-quickstart
Komutunu çalıştırarak npm init -y
varsayılan ayarlarla bir package.json dosyası oluşturun.
npm init -y
Paketleri yükleme
npm install
JavaScript için aşağıdaki İletişim Hizmetleri SDK'larını yüklemek için komutunu kullanın.
npm install @azure/communication-common --save
npm install @azure/communication-identity --save
npm install @azure/communication-signaling --save
npm install @azure/communication-chat --save
seçeneği, --save
kitaplığı package.json dosyanızda bağımlılık olarak listeler.
Uygulama çerçevesini ayarlama
Bu hızlı başlangıçta uygulama varlıklarını paketlemek için paket kullanılır. Yüklemek ve package.json dosyasında geliştirme bağımlılığı olarak listelemek için aşağıdaki komutu çalıştırın:
npm install parcel --save-dev
Projenizin kök dizininde bir index.html dosyası oluşturun. JavaScript için Azure İletişim Sohbet SDK'sını kullanarak sohbet özelliği eklemek için bu dosyayı şablon olarak kullanacağız.
<!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>
Bu hızlı başlangıcın uygulama mantığını içermesi için projenizin kök dizininde client.js adlı bir dosya oluşturun.
Sohbet istemcisi oluşturma
Web uygulamanızda sohbet istemcisi oluşturmak için İletişim Hizmeti uç noktasını ve önkoşul adımlarının bir parçası olarak oluşturulan erişim belirtecini kullanacaksınız.
Kullanıcı erişim belirteçleri, Azure İletişim Hizmetleri doğrudan kimlik doğrulaması yapabilen istemci uygulamaları oluşturmanıza olanak tanır. Bu hızlı başlangıç, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz. Sohbet mimarisi hakkında daha fazla bilgi için sohbet kavramlarına ve erişim belirteçleri hakkında daha fazla bilgi için kullanıcı erişim belirteçlerine bakın.
client.js içinde, JavaScript için Azure İletişim Sohbet SDK'sını kullanarak sohbet özelliği eklemek üzere aşağıdaki kodda yer alan uç noktayı ve erişim belirtecini kullanın.
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!');
- endpointUrl değerini İletişim Hizmetleri kaynak uç noktasıyla değiştirin. Daha önce yapmadıysanız bkz. Azure İletişim Hizmetleri kaynağı oluşturma.
- userAccessToken değerini, sizin yayımladığınız belirteçle değiştirin.
Kodu çalıştırma
Uygulamanızı çalıştırmak için aşağıdaki komutu çalıştırın:
npx parcel index.html
Tarayıcınızı açın ve http://localhost:1234/. Tarayıcınızdaki geliştirici araçları konsolunda aşağıdakileri görmeniz gerekir:
Azure Communication Chat client created!
Nesne modeli
Aşağıdaki sınıflar ve arabirimler JavaScript için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.
Dosya Adı | Tanım |
---|---|
ChatClient | Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve yazışmaları oluşturmak, almak, silmek ve sohbet olaylarına abone olmak için kullanırsınız. |
ChatThreadClient | Sohbet Yazışması işlevselliği için bu sınıf gereklidir. ChatClient aracılığıyla bir örnek alırsınız ve bu örneği iletileri göndermek/almak/güncelleştirmek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için kullanırsınız. |
Sohbet yazışması başlatma
Sohbet yazışması createThread
oluşturmak için yöntemini kullanın.
createThreadRequest
iş parçacığı isteğini açıklamak için kullanılır:
- Bu sohbete bir konu vermek için kullanın
topic
. Sohbet yazışması işlevi kullanılarakUpdateThread
oluşturulduktan sonra konular güncelleştirilebilir. - Sohbet yazışmasına eklenecek katılımcıları listelemek için kullanın
participants
.
Çözümlendiğinde yöntemi createChatThread
bir CreateChatThreadResult
döndürür. Bu model, yeni oluşturulan iş parçacığına id
erişebileceğiniz bir chatThread
özellik içerir. Daha sonra örneğini almak ChatThreadClient
için öğesini id
kullanabilirsiniz. ChatThreadClient
daha sonra, ileti gönderme veya katılımcıları listeleme gibi iş parçacığı içinde işlem gerçekleştirmek için kullanılabilir.
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>
});
Tarayıcı sekmenizi yenilediğinizde konsolda aşağıdakileri görmeniz gerekir:
Thread created: <thread_id>
Sohbet yazışması istemcisi alma
getChatThreadClient
yöntemi, zaten var olan bir iş parçacığı için bir chatThreadClient
döndürür. Oluşturulan yazışmada işlem gerçekleştirmek için kullanılabilir: katılımcı ekleme, ileti gönderme vb. threadId, mevcut sohbet yazışmasının benzersiz kimliğidir.
let chatThreadClient = chatClient.getChatThreadClient(threadId);
console.log(`Chat Thread client for threadId:${threadId}`);
client.js dosyasında açıklamanın <CREATE CHAT THREAD CLIENT>
yerine bu kodu ekleyin, tarayıcı sekmenizi yenileyin ve konsolu kontrol edin, şunları görmeniz gerekir:
Chat Thread client for threadId: <threadId>
Tüm sohbet yazışmalarını listeleme
listChatThreads
yöntemi türünde ChatThreadItem
bir PagedAsyncIterableIterator
döndürür. Tüm sohbet yazışmalarını listelemek için kullanılabilir.
yineleyicisi [ChatThreadItem]
, iş parçacıklarını listelemeden döndürülen yanıttır
const threads = chatClient.listChatThreads();
for await (const thread of threads) {
// your code here
}
Sohbet yazışmasına ileti gönderme
ThreadId tarafından tanımlanan bir iş parçacığına ileti göndermek için yöntemini kullanın sendMessage
.
sendMessageRequest
, ileti isteğini açıklamak için kullanılır:
- Sohbet iletisi içeriğini sağlamak için kullanın
content
;
sendMessageOptions
isteğe bağlı parametreleri tanımlamak için kullanılır:
- Gönderenin görünen adını belirtmek için kullanın
senderDisplayName
; - 'text' veya 'html' gibi ileti türünü belirtmek için kullanın
type
; - İletiyle birlikte göndermek istediğiniz diğer verileri eklemek için isteğe bağlı olarak kullanın
metadata
. Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve buna göre görüntüleyebilmesi için meta verilere 'hasAttachment: true' eklemek isteyebilirsiniz.
SendChatMessageResult
, ileti göndermeden döndürülen yanıttır, iletinin benzersiz kimliği olan bir kimlik içerir.
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}`);
client.js dosyasında açıklamanın <SEND MESSAGE TO A CHAT THREAD>
yerine bu kodu ekleyin, tarayıcı sekmenizi yenileyin ve konsolu denetleyin.
Message sent!, message id:<number>
Sohbet yazışmasından sohbet iletileri alma
Gerçek zamanlı sinyalle, yeni gelen iletileri dinlemek için abone olabilir ve bellekteki geçerli iletileri uygun şekilde güncelleştirebilirsiniz. Azure İletişim Hizmetleri abone olabileceğiniz olayların listesini destekler.
// open notifications channel
await chatClient.startRealtimeNotifications();
// subscribe to new notification
chatClient.on("chatMessageReceived", (e) => {
console.log("Notification chatMessageReceived!");
// your code here
});
Bu kodu client.js dosyasındaki açıklamanın <RECEIVE A CHAT MESSAGE FROM A CHAT THREAD>
yerine ekleyin.
Tarayıcı sekmenizi yenileyin, konsolda bir ileti Notification chatMessageReceived
görmeniz gerekir;
Alternatif olarak, yöntemini belirtilen aralıklarla yoklayarak listMessages
sohbet iletilerini alabilirsiniz.
const messages = chatThreadClient.listMessages();
for await (const message of messages) {
// your code here
}
Bu kodu client.js dosyasındaki açıklamanın <LIST MESSAGES IN A CHAT THREAD>
yerine ekleyin.
Sekmenizi yenileyin, konsolda bu sohbet yazışmasında gönderilen iletilerin listesini bulmanız gerekir.
listMessages
tarafından chatMessage.type
tanımlanabilen farklı ileti türlerini döndürür.
Diğer ayrıntılar için bkz . İleti Türleri.
Sohbet yazışmasına katılımcı olarak kullanıcı ekleme
Sohbet yazışması oluşturulduktan sonra kullanıcı ekleyip kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara sohbet yazışmasına ileti gönderme ve diğer katılımcıları ekleme/kaldırma erişimi vermiş olursunuz.
yöntemini çağırmadan addParticipants
önce, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı olacaktır.
addParticipantsRequest
sohbet yazışmasına eklenecek katılımcıların listelendiği participants
istek nesnesini açıklar;
id
, gerekli, sohbet yazışmasına eklenecek iletişim tanımlayıcısıdır.displayName
isteğe bağlı olarak, iş parçacığı katılımcısının görünen adıdır.shareHistoryTime
, isteğe bağlı olarak, sohbet geçmişinin katılımcıyla paylaşıldığı zamandır. Sohbet yazışmasının başlangıcından bu yana geçmişi paylaşmak için bu özelliği iş parçacığı oluşturma süresine eşit veya ondan daha kısa bir tarihe ayarlayın. Katılımcının eklendiği tarihten önceki bir geçmişi paylaşmak için geçerli tarihe ayarlayın. Kısmi geçmişi paylaşmak için istediğiniz tarihe ayarlayın.
const addParticipantsRequest =
{
participants: [
{
id: { communicationUserId: '<NEW_PARTICIPANT_USER_ID>' },
displayName: 'Jane'
}
]
};
await chatThreadClient.addParticipants(addParticipantsRequest);
NEW_PARTICIPANT_USER_ID yeni bir kullanıcı kimliğiyle değiştirin Client.js dosyasında açıklamanın <ADD NEW PARTICIPANT TO THREAD>
yerine bu kodu ekleyin
Sohbet yazışmasında kullanıcıları listeleme
const participants = chatThreadClient.listParticipants();
for await (const participant of participants) {
// your code here
}
client.js dosyasında açıklamanın <LIST PARTICIPANTS IN A THREAD>
yerine bu kodu ekleyin, tarayıcı sekmenizi yenileyin ve konsolunu denetleyin; bir yazışmadaki kullanıcılar hakkında bilgi görmeniz gerekir.
Sohbet yazışmasından kullanıcı kaldırma
Katılımcı eklemeye benzer şekilde, katılımcıları sohbet yazışmasından kaldırabilirsiniz. Kaldırmak için, eklediğiniz katılımcıların kimliklerini izlemeniz gerekir.
İletişim kullanıcısının iş parçacığından kaldırılacağı yöntemi participant
kullanınremoveParticipant
.
await chatThreadClient.removeParticipant({ communicationUserId: <PARTICIPANT_ID> });
await listParticipants();
PARTICIPANT_ID önceki adımda< (NEW_PARTICIPANT_USER_ID>) kullanılan kullanıcı kimliğiyle değiştirin.
Bu kodu client.js dosyasındaki açıklamanın <REMOVE PARTICIPANT FROM THREAD>
yerine ekleyin.
Gerçek zamanlı bildirimlerin bağlantı durumuna abone olma
Olaylara realTimeNotificationConnected
abone olun ve realTimeNotificationDisconnected
çağrı sunucusuna bağlantının ne zaman etkin olduğunu bilmenize olanak tanır.
// 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
});
Örnek Kod
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ön koşullar
Başlamadan önce şunları yaptığınızdan emin olun:
Etkin aboneliği olan bir Azure hesabı oluşturun. Ayrıntılar için bkz . Ücretsiz hesap oluşturma.
Python 3.7+ sürümünü yükleyin.
Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz . Hızlı Başlangıç: İletişim Hizmetleri kaynaklarını oluşturma ve yönetme. Bu hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.
Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.
Ayarlama
Yeni Python uygulaması oluşturma
Terminalinizi veya komut pencerenizi açın, uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.
mkdir chat-quickstart && cd chat-quickstart
Proje kök dizininde start-chat.py adlı bir dosya oluşturmak için bir metin düzenleyicisi kullanın. Temel özel durum işleme dahil olmak üzere programın yapısını ekleyin. Aşağıdaki bölümlerde, bu hızlı başlangıcın tüm kaynak kodunu bu dosyaya ekleyeceksiniz.
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)
SDK yükleme
SDK'yi yüklemek için aşağıdaki komutu kullanın:
pip install azure-communication-chat
Nesne modeli
Aşağıdaki sınıflar ve arabirimler Python için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.
Dosya Adı | Tanım |
---|---|
ChatClient |
Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve iş parçacıkları oluşturmak, almak ve silmek için kullanırsınız. |
ChatThreadClient |
Bu sınıf, sohbet yazışması işlevselliği için gereklidir. aracılığıyla ChatClient bir örnek alırsınız ve iletileri göndermek, almak, güncelleştirmek ve silmek için bu örneği kullanırsınız. Ayrıca kullanıcıları eklemek, kaldırmak ve almak, yazma bildirimleri ve okundu bilgileri göndermek için de kullanabilirsiniz. |
Sohbet istemcisi oluşturma
Sohbet istemcisi oluşturmak için, önkoşul adımlarının bir parçası olarak oluşturduğunuz İletişim Hizmetleri uç noktasını ve erişim belirtecini kullanın.
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>"))
Bu hızlı başlangıç, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz, ancak bu önerilir. Daha fazla bilgi için Sohbet kavramlarının "Sohbet mimarisi" bölümüne bakın.
Sohbet yazışması başlatma
Sohbet yazışması create_chat_thread
oluşturmak için yöntemini kullanın.
- İş parçacığına bir konu vermek için kullanın
topic
. sohbet yazışması oluşturulduktan sonra işlevini kullanarakupdate_thread
konuyu güncelleştirebilirsiniz. - Sohbet yazışmasına eklenecek öğesini listelemek
ChatParticipant
için kullanınthread_participants
. türüChatParticipant
olarakuser
alırCommunicationUserIdentifier
.
CreateChatThreadResult
, bir iş parçacığı oluşturmanın sonucudur. Oluşturulan sohbet yazışmasını id
getirmek için bunu kullanabilirsiniz. Bu id
daha sonra yöntemini kullanarak get_chat_thread_client
bir ChatThreadClient
nesneyi getirmek için kullanılabilir. Bu sohbet yazışmasına yönelik diğer sohbet işlemlerini gerçekleştirmek için kullanabilirsiniz ChatThreadClient
.
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)
Sohbet yazışması istemcisi alma
yöntemi, get_chat_thread_client
zaten var olan bir iş parçacığı için bir iş parçacığı istemcisi döndürür. Oluşturulan iş parçacığında işlem gerçekleştirmek için bunu kullanabilirsiniz. Örneğin, katılımcı ekleyebilir ve ileti gönderebilirsiniz. thread_id
mevcut sohbet yazışmasının benzersiz kimliğidir.
Bu sohbet yazışmasına yönelik diğer sohbet işlemlerini gerçekleştirmek için kullanabilirsiniz ChatThreadClient
.
thread_id = create_chat_thread_result.chat_thread.id
chat_thread_client = chat_client.get_chat_thread_client(thread_id)
Tüm sohbet yazışmalarını listeleme
list_chat_threads
yöntemi türünde ChatThreadItem
bir yineleyici döndürür.
- Sohbet yazışmalarını almak için zamanın en erken noktasını belirtmek için kullanın
start_time
. - Sayfa başına döndürülen en fazla sohbet yazışması sayısını belirtmek için kullanın
results_per_page
.
yineleyicisi [ChatThreadItem]
, iş parçacıklarını listelemeden döndürülen yanıttır.
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)
Sohbet yazışmasına ileti gönderme
send_message
yeni oluşturduğunuz ve tarafından thread_id
tanımlanan bir sohbet yazışmasına ileti göndermek için yöntemini kullanın.
- Sohbet iletisi içeriğini sağlamak için kullanın
content
. - İleti içerik türünü belirtmek için kullanın
chat_message_type
. Olası değerler vehtml
şeklindedirtext
. Bir değer belirtmezseniz, varsayılan değer olurtext
. - Gönderenin görünen adını belirtmek için kullanın
sender_display_name
. - İletiyle birlikte göndermek istediğiniz ek verileri eklemek için isteğe bağlı olarak kullanın
metadata
. Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve buna göre görüntüleyebilmesi için meta verilere 'hasAttachment:true' eklemek isteyebilirsiniz.
SendChatMessageResult
, ileti göndermekten döndürülen yanıttır. İletinin benzersiz kimliği olan bir kimlik içerir.
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)
Sohbet yazışmasından sohbet iletileri alma
Yöntemi belirtilen aralıklarla yoklayarak list_messages
sohbet iletilerini alabilirsiniz.
- Sayfa başına döndürülecek en fazla ileti sayısını belirtmek için kullanın
results_per_page
. - İletileri almak için en erken noktayı belirtmek için kullanın
start_time
.
yineleyicisi [ChatMessage]
, iletilerin listelenmesinden döndürülen yanıttır.
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
ve delete_message
kullanarak update_message
iletide gerçekleşen tüm düzenlemeler veya silmeler de dahil olmak üzere iletinin en son sürümünü döndürür. Silinen iletiler için, ChatMessage.deleted_on
bu iletinin ne zaman silindiğini belirten bir datetime
değer döndürür. Düzenlenen iletiler için, ChatMessage.edited_on
iletinin ne zaman düzenlendiğini belirten bir datetime
değer döndürür. kullanarak, iletileri sıralamak için kullanılabilecek özgün ileti oluşturma ChatMessage.created_on
zamanına erişebilirsiniz.
list_messages
tarafından tanımlanabilen ChatMessage.type
farklı ileti türlerini döndürür.
Daha fazla bilgi için bkz . İleti türleri.
Okundu bilgisi gönder
Kullanıcı adına okundu bilgisi olayını iş parçacığına göndermek için yöntemini kullanırsınız send_read_receipt
.
- Geçerli kullanıcı tarafından okunan en son iletinin kimliğini belirtmek için kullanın
message_id
.
content='hello world'
send_message_result = chat_thread_client.send_message(content)
chat_thread_client.send_read_receipt(message_id=send_message_result.id)
Sohbet yazışmasına katılımcı olarak kullanıcı ekleme
Sohbet yazışması oluşturduğunuzda, kullanıcı ekleyebilir ve bu yazışmadan kullanıcı kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara sohbet yazışmasına ileti gönderebilmeleri ve diğer katılımcıları ekleyebilmeleri veya kaldırabilmeleri için erişim vermiş olursunuz. yöntemini çağırmadan add_participants
önce, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı vardır.
Yeni bir erişim belirteci ve kimliği tüm kullanıcılar için kullanılabilir olması koşuluyla yöntemini kullanarak add_participants
sohbet yazışmasına bir veya daha fazla kullanıcı ekleyebilirsiniz.
döndürülür list(tuple(ChatParticipant, CommunicationError))
. Katılımcı başarıyla eklendiğinde boş bir liste beklenir. Katılımcı eklerken hatayla karşılaşırsanız, liste başarısız katılımcılarla ve karşılaşılan hatayla doldurulur.
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)
Sohbet yazışmasında yazışma katılımcılarını listeleme
Katılımcı eklemeye benzer şekilde, bir iş parçacığındaki katılımcıları da listeleyebilirsiniz.
İş parçacığının katılımcılarını almak için kullanın list_participants
. Aşağıdaki komutların her ikisi de isteğe bağlıdır:
- Sayfa başına döndürülecek en fazla katılımcı sayısını belirtmek için kullanın
results_per_page
. - Katılımcıları yanıtta belirtilen bir konuma atlamak için kullanın
skip
.
Yineleyicisi [ChatParticipant]
, liste katılımcılarından döndürülen yanıttır.
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)
Kodu çalıştırma
komutunu kullanarak python
uygulamayı uygulama dizininizden çalıştırın.
python start-chat.py
Örnek Kod
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ön koşullar
Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.
Java Development Kit (JDK) sürüm 8 veya üzeri.
Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz. Azure İletişim Hizmetleri kaynağı oluşturma. Bu hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.
Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.
Ayarlama
Yeni java uygulaması oluşturma
Terminalinizi veya komut pencerenizi açın ve Java uygulamanızı oluşturmak istediğiniz dizine gidin. Maven-archetype-quickstart şablonundan Java projesi oluşturmak için aşağıdaki komutu çalıştırın.
mvn archetype:generate -DgroupId=com.communication.quickstart -DartifactId=communication-quickstart -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=1.4 -DinteractiveMode=false
'Oluştur' hedefinin artifactId ile aynı ada sahip bir dizin oluşturduğunu göreceksiniz. Bu dizin altında, src/main/java directory
proje kaynak kodunu içerir, src/test/java
dizin test kaynağını içerir ve pom.xml dosyası projenin Proje Nesne Modeli veya POM'dir.
Uygulamanızın POM dosyasını Java 8 veya üzerini kullanacak şekilde güncelleştirin:
<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>
Sohbet SDK'sı için paket başvurularını ekleme
POM dosyanızda, Sohbet API'leri ile pakete başvurun azure-communication-chat
:
<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>
Kimlik doğrulaması için istemcinizin pakete başvurması azure-communication-common
gerekir:
<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>
Nesne modeli
Aşağıdaki sınıflar ve arabirimler Java için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.
Dosya Adı | Tanım |
---|---|
ChatClient | Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve iş parçacıkları oluşturmak, almak ve silmek için kullanırsınız. |
ChatAsyncClient | Bu sınıf, zaman uyumsuz Sohbet işlevselliği için gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve iş parçacıkları oluşturmak, almak ve silmek için kullanırsınız. |
ChatThreadClient | Sohbet Yazışması işlevselliği için bu sınıf gereklidir. ChatClient aracılığıyla bir örnek alırsınız ve bu örneği iletileri göndermek/almak/güncelleştirmek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için kullanırsınız. |
ChatThreadAsyncClient | Bu sınıf, zaman uyumsuz Sohbet Yazışması işlevselliği için gereklidir. ChatAsyncClient aracılığıyla bir örnek alırsınız ve iletileri göndermek/almak/güncelleştirmek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için bu örneği kullanırsınız. |
Sohbet istemcisi oluşturma
Sohbet istemcisi oluşturmak için İletişim Hizmeti uç noktasını ve önkoşul adımlarının bir parçası olarak oluşturulan erişim belirtecini kullanacaksınız. Kullanıcı erişim belirteçleri, Azure İletişim Hizmetleri doğrudan kimlik doğrulaması yapabilen istemci uygulamaları oluşturmanıza olanak tanır. Bu belirteçleri sunucunuzda oluşturduktan sonra bir istemci cihazına geri geçirin. Belirteci sohbet istemcinize geçirmek için Common SDK'dan CommunicationTokenCredential sınıfını kullanmanız gerekir.
Sohbet Mimarisi hakkında daha fazla bilgi edinin
İçeri aktarma deyimlerini eklerken, com.azure.communication.chat.implementation ad alanından değil yalnızca com.azure.communication.chat ve com.azure.communication.chat.models ad alanından içeri aktarmalar eklediğinizden emin olun. Maven aracılığıyla oluşturulan App.java dosyasında, başlangıç olarak aşağıdaki kodu kullanabilirsiniz:
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();
}
}
Sohbet yazışması başlatma
Sohbet yazışması createChatThread
oluşturmak için yöntemini kullanın.
createChatThreadOptions
iş parçacığı isteğini açıklamak için kullanılır.
- Bu sohbete
topic
bir konu vermek için oluşturucunun parametresini kullanın; Konu, sohbet yazışması işlevi kullanılarakUpdateThread
oluşturulduktan sonra güncelleştirilebilir. - İş parçacığına eklenecek iş parçacığı katılımcılarını listelemek için kullanın
participants
.ChatParticipant
, Kullanıcı Erişim Belirteci hızlı başlangıcında oluşturduğunuz kullanıcıyı alır.
CreateChatThreadResult
, sohbet yazışması oluşturmaktan döndürülen yanıttır.
Oluşturulan iş parçacığında ChatThread
işlem gerçekleştirmek için alabileceğiniz iş parçacığı istemcisini almak için kullanılabilecek nesneyi döndüren ChatThreadClient
bir getChatThread()
yöntem içerir: katılımcı ekleme, ileti gönderme vb. ChatThread
nesnesi, iş parçacığının getId()
benzersiz kimliğini alan yöntemini de içerir.
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();
Sohbet yazışmalarını listeleme
listChatThreads
Mevcut sohbet yazışmalarının listesini almak için yöntemini kullanın.
PagedIterable<ChatThreadItem> chatThreads = chatClient.listChatThreads();
chatThreads.forEach(chatThread -> {
System.out.printf("ChatThread id is %s.\n", chatThread.getId());
});
Sohbet yazışması istemcisi alma
yöntemi, getChatThreadClient
zaten var olan bir iş parçacığı için bir iş parçacığı istemcisi döndürür. Oluşturulan iş parçacığında işlem gerçekleştirmek için kullanılabilir: katılımcı ekleme, ileti gönderme vb. chatThreadId
mevcut sohbet yazışmasının benzersiz kimliğidir.
ChatThreadClient chatThreadClient = chatClient.getChatThreadClient(chatThreadId);
Sohbet yazışmasına ileti gönderme
sendMessage
oluşturduğunuz yazışmaya chatThreadId ile tanımlanan bir ileti göndermek için yöntemini kullanın.
sendChatMessageOptions
, sohbet iletisi isteğini açıklamak için kullanılır.
- Sohbet iletisi içeriğini sağlamak için kullanın
content
. - Sohbet iletisi içerik türünü,METNEÇEVİr veya HTML belirtmek için kullanın
type
. - Gönderenin görünen adını belirtmek için kullanın
senderDisplayName
. - İletiyle birlikte göndermek istediğiniz ek verileri eklemek için isteğe bağlı olarak kullanın
metadata
. Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve uygun şekilde görüntüleyebilmesi için meta veriler eklemekhasAttachment:true
isteyebilirsiniz.
Yanıt sendChatMessageResult
, iletinin benzersiz kimliği olan bir id
içerir.
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();
Sohbet yazışmasından sohbet iletileri alma
Belirtilen aralıklarla sohbet yazışması istemcisinde listMessages
yöntemini yoklayarak sohbet iletilerini alabilirsiniz.
chatThreadClient.listMessages().forEach(message -> {
System.out.printf("Message id is %s.\n", message.getId());
});
listMessages
ve .deleteMessage()
kullanılarak .editMessage()
iletiye yapılan tüm düzenlemeler veya silmeler de dahil olmak üzere iletinin en son sürümünü döndürür. Silinen iletiler için, chatMessage.getDeletedOn()
bu iletinin ne zaman silindiğini belirten bir tarih saat değeri döndürür. Düzenlenen iletiler için, chatMessage.getEditedOn()
iletinin ne zaman düzenlendiğini belirten bir tarih saat döndürür. İleti oluşturma işleminin özgün zamanına kullanılarak chatMessage.getCreatedOn()
erişilebilir ve iletileri sıralamak için kullanılabilir.
İleti türleri hakkında daha fazla bilgiyi burada bulabilirsiniz: İleti Türleri.
Okundu bilgisi gönder
sendReadReceipt
Kullanıcı adına bir okundu bilgisi olayını sohbet yazışmasına göndermek için yöntemini kullanın.
chatMessageId
okunan sohbet iletisinin benzersiz kimliğidir.
String chatMessageId = message.getId();
chatThreadClient.sendReadReceipt(chatMessageId);
Sohbet katılımcılarını listeleme
chatThreadId tarafından tanımlanan sohbet yazışmasının katılımcılarını içeren sayfalanmış koleksiyonu almak için kullanın listParticipants
.
PagedIterable<ChatParticipant> chatParticipantsResponse = chatThreadClient.listParticipants();
chatParticipantsResponse.forEach(chatParticipant -> {
System.out.printf("Participant id is %s.\n", ((CommunicationUserIdentifier) chatParticipant.getCommunicationIdentifier()).getId());
});
Sohbet yazışmasına katılımcı olarak kullanıcı ekleme
Sohbet yazışması oluşturulduktan sonra kullanıcı ekleyip kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara sohbet yazışmasına ileti gönderme ve diğer katılımcıları ekleme/kaldırma erişimi vermiş olursunuz. Bu kullanıcı için yeni bir erişim belirteci ve kimlik alarak işe başlamanız gerekir. addParticipants yöntemini çağırmadan önce, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı olacaktır.
İş parçacığına addParticipants
katılımcı eklemek için yöntemini kullanın.
communicationIdentifier
gerekli, Kullanıcı Erişim Belirteci hızlı başlangıcında CommunicationIdentityClient tarafından oluşturduğunuz CommunicationIdentifier'dır.displayName
isteğe bağlı olarak, iş parçacığı katılımcısının görünen adıdır.shareHistoryTime
, isteğe bağlı olarak, sohbet geçmişinin katılımcıyla paylaşıldığı zamandır. Sohbet yazışmasının başlangıcından bu yana geçmişi paylaşmak için bu özelliği iş parçacığı oluşturma süresine eşit veya ondan daha kısa bir tarihe ayarlayın. Katılımcının eklendiği tarihten önceki bir geçmişi paylaşmak için geçerli tarihe ayarlayın. Kısmi geçmişi paylaşmak için gerekli tarihe ayarlayın.
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);
Kodu çalıştırma
pom.xml dosyasını içeren dizine gidin ve aşağıdaki mvn
komutu kullanarak projeyi derleyin.
mvn compile
Ardından paketi derleyin.
mvn package
Uygulamayı yürütmek için aşağıdaki mvn
komutu çalıştırın.
mvn exec:java -Dexec.mainClass="com.communication.quickstart.App" -Dexec.cleanupDaemonThreads=false
Örnek Kod
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ön koşullar
Başlamadan önce şunları yaptığınızdan emin olun:
Etkin aboneliği olan bir Azure hesabı oluşturun. Ayrıntılar için bkz . Ücretsiz hesap oluşturma.
Android Studio'yu yükledikten sonra, bağımlılıkları yüklemek üzere hızlı başlangıç için bir Android uygulaması oluşturmak üzere Android Studio kullanacağız.
Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz. Azure İletişim Hizmetleri kaynağı oluşturma. Bu hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.
İki İletişim Hizmeti Kullanıcısı oluşturun ve onlara bir Kullanıcı Erişim Belirteci gönderin. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Bu hızlı başlangıçta, ilk katılımcıyla bir iş parçacığı oluşturacak ve ardından iş parçacığına ikinci bir katılımcı ekleyeceğiz. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.
Ayarlama
Yeni bir android uygulaması oluşturma
- Android Studio'yu açın ve öğesini seçin
Create a new project
. - Sonraki pencerede proje şablonu olarak seçin
Empty Activity
. - Seçenekleri belirlerken proje adı olarak girin
ChatQuickstart
. - İleri'ye tıklayın ve projenin oluşturulmasını istediğiniz dizini seçin.
Kitaplıkları yükleme
Gerekli İletişim Hizmetleri bağımlılıklarını yüklemek için Gradle kullanacağız. Komut satırından projenin kök dizininde gezinin ChatQuickstart
. Uygulamanın build.gradle dosyasını açın ve hedefe aşağıdaki bağımlılıkları ChatQuickstart
ekleyin:
implementation 'com.azure.android:azure-communication-common:' + $azureCommunicationCommonVersion
implementation 'com.azure.android:azure-communication-chat:' + $azureCommunicationChatVersion
implementation 'org.slf4j:slf4j-log4j12:1.7.29'
En son sürüm numaraları için lütfen ve https://search.maven.org/artifact/com.azure.android/azure-communication-chat bölümüne bakınhttps://search.maven.org/artifact/com.azure.android/azure-communication-common.
Kök build.gradle dosyasındaki paketleme seçeneklerindeki meta dosyaları dışlama
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) Maven aracılığıyla kitaplıkları yüklemek için
Maven derleme sistemini kullanarak kitaplığı projenize aktarmak içindependencies
, uygulamanızın pom.xml
dosyasının bölümüne ekleyin ve yapıt kimliğini ve kullanmak istediğiniz sürümü belirtin:
<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>
Azure işlevini ayarlama
Ayrıntılar için lütfen Azure İşlevi tümleştirmesini inceleyin. Uygulama parametrelerinin sabit kodlanmasından kaçınmak için Azure İşlevi ile tümleştirmeyi kesinlikle öneririz.
Uygulama sabitlerini ayarlama:
Tüm uygulama sabitlerini depolayan bir sınıf ApplicationConstants
oluşturun:
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;
}
Yer tutucuları ayarlama
dosyasını MainActivity.java
açın ve düzenleyin. Bu hızlı başlangıçta kodumuzu öğesine MainActivity
ekleyeceğiz ve çıkışı konsolunda görüntüleyeceğiz. Bu hızlı başlangıç, kullanıcı arabirimi oluşturmaya yönelik değildir. Dosyanın üst kısmında , Azure Communication Chat
ve diğer sistem kitaplıklarını içeri aktarınAzure Communication Common
:
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;
Dosyasındaki MainActivity.java
sınıfına MainActivity
aşağıdaki kodu kopyalayın:
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());
}
}
Uygulama Parametrelerini Başlatma
Dekont
ApplicationConstants
Aşağıdaki koşullardan biri karşılanırsa, başlatmanın eklenmesi MainActivity.java
gerekir: 1. Anında iletme bildirimi özelliği ETKIN DEĞİlDİr. 2. Android için Azure İletişim Sohbeti kitaplığının sürümü '2.0.0'dır < . Aksi takdirde lütfen Android anında iletme bildirimlerinde 11. adıma bakın. Başvuru için kullandığınız SDK sürümünün örnek UYGULAMASına bakın.
ACS_ENDPOINT
ve FIRST_USER_ID
FIRST_USER_ACCESS_TOKEN
Azure İşlevi çağrılır. Ayrıntılar için lütfen Azure İşlevi tümleştirmesini inceleyin. Parametre listesini başlatmak için Azure İşlevi'ni çağırma yanıtını kullanırız:
ACS_ENDPOINT
: İletişim Hizmetleri kaynağınızın uç noktası.FIRST_USER_ID
veSECOND_USER_ID
: İletişim Hizmetleri kaynağınız tarafından oluşturulan geçerli İletişim Hizmetleri kullanıcı kimlikleri.FIRST_USER_ACCESS_TOKEN
: için<FIRST_USER_ID>
iletişim Hizmetleri erişim belirteci.
Azure İşlevi'ni çağırarak uygulama parametrelerini başlatmak için kod bloğu:
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);
}
Sohbet istemcisi oluşturma
açıklamasını <CREATE A CHAT CLIENT>
aşağıdaki kodla değiştirin (içeri aktarma deyimlerini dosyanın en üstüne yerleştirin):
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();
Nesne modeli
Aşağıdaki sınıflar ve arabirimler JavaScript için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.
Dosya Adı | Tanım |
---|---|
ChatClient/ChatAsyncClient | Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve yazışmaları oluşturmak, almak, silmek ve sohbet olaylarına abone olmak için kullanırsınız. |
ChatThreadClient/ChatThreadAsyncClient | Sohbet Yazışması işlevselliği için bu sınıf gereklidir. ChatClient aracılığıyla bir örnek alırsınız ve bu örneği iletileri göndermek/almak/güncelleştirmek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için kullanırsınız. |
Sohbet yazışması başlatma
İlk kullanıcıyla yeni bir iş parçacığı oluşturmak için öğesini ChatAsyncClient
kullanacağız.
<CREATE A CHAT THREAD>
açıklamasını aşağıdaki kodla değiştirin:
// 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();
Sohbet yazışması istemcisi alma
Artık bir Sohbet yazışması oluşturduğumuza göre, iş parçacığı içinde işlemler gerçekleştirmek için bir ChatThreadAsyncClient
a alacağız. <CREATE A CHAT THREAD CLIENT>
açıklamasını aşağıdaki kodla değiştirin:
ChatThreadAsyncClient chatThreadAsyncClient = new ChatThreadClientBuilder()
.endpoint(endpoint)
.credential(new CommunicationTokenCredential(firstUserAccessToken))
.addPolicy(new UserAgentPolicy(APPLICATION_ID, SDK_NAME, sdkVersion))
.chatThreadId(threadId)
.buildAsyncClient();
Sohbet yazışmasına ileti gönderme
Şimdi bu yazışmaya ileti göndereceğiz.
<SEND A MESSAGE>
açıklamasını aşağıdaki kodla değiştirin:
// 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();
Sohbet yazışmasından sohbet iletileri alma
Gerçek zamanlı bildirimler
Gerçek zamanlı sinyalle yeni gelen iletilere abone olabilir ve bellekteki geçerli iletileri uygun şekilde güncelleştirebilirsiniz. Azure İletişim Hizmetleri abone olabileceğiniz olayların listesini destekler.
açıklamasını <RECEIVE CHAT MESSAGES>
aşağıdaki kodla değiştirin (içeri aktarma deyimlerini dosyanın en üstüne yerleştirin):
// 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
});
Önemli
Bilinen sorun: Android Sohbet ve Arama SDK'sını aynı uygulamada birlikte kullanırken Sohbet SDK'sının gerçek zamanlı bildirimler özelliği çalışmaz. Bağımlılık çözme sorunuyla karşı karşıya olabilirsiniz. Bir çözüm üzerinde çalışırken, uygulamanın build.gradle dosyasına aşağıdaki bağımlılık bilgilerini ekleyerek gerçek zamanlı bildirimler özelliğini kapatabilir ve bunun yerine GetMessages API'sini yoklayarak kullanıcılara gelen iletileri görüntüleyebilirsiniz.
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'
Yukarıdaki güncelleştirmeyle birlikte, uygulama veya chatAsyncClient.addEventHandler()
gibi chatAsyncClient.startRealtimeNotifications()
bildirim API'lerinden herhangi birine dokunmaya çalışırsa çalışma zamanı hatası olacağını unutmayın.
Anında iletme bildirimleri
Ayrıntılar için lütfen Android anında iletme bildirimlerine göz atın.
Sohbet yazışmasına katılımcı olarak kullanıcı ekleme
<ADD A USER>
açıklamasını aşağıdaki kodla değiştirin:
// 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);
İş parçacığındaki kullanıcıları listeleme
<LIST USERS>
açıklamasını aşağıdaki kodla değiştirin (içeri aktarma deyimlerini dosyanın en üstüne yerleştirin):
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
});
Sohbet yazışmasından kullanıcı kaldırma
şimdi iş parçacığından ikinci kullanıcıyı kaldıracağız.
<REMOVE A USER>
açıklamasını aşağıdaki kodla değiştirin:
// Using the unique ID of the participant.
chatThreadAsyncClient.removeParticipant(new CommunicationUserIdentifier(secondUserId)).get();
Yazma bildirimi gönderme
<SEND A TYPING NOTIFICATION>
açıklamasını aşağıdaki kodla değiştirin:
chatThreadAsyncClient.sendTypingNotification().get();
Okundu bilgisi gönderme
Yukarıda gönderilen ileti için okundu bilgisi göndereceğiz.
<SEND A READ RECEIPT>
açıklamasını aşağıdaki kodla değiştirin:
chatThreadAsyncClient.sendReadReceipt(chatMessageId).get();
Okundu bilgilerini listeleme
<READ RECEIPTS>
açıklamasını aşağıdaki kodla değiştirin:
// 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
});
Kodu çalıştırma
Android Studio'da projeyi derlemek ve çalıştırmak için Çalıştır düğmesine basın. Konsolunda, kodun çıkışını ve ChatClient'ın günlükçü çıkışını görüntüleyebilirsiniz.
Örnek Kod
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ön koşullar
Başlamadan önce şunları yaptığınızdan emin olun:
Etkin aboneliği olan bir Azure hesabı oluşturun. Ayrıntılar için bkz . Ücretsiz hesap oluşturma.
Visual Studio'yu yükleme
Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz. Azure İletişim Hizmetleri kaynağı oluşturma. Bu hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.
Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.
Ayarlama
Yeni bir C# uygulaması oluşturma
Bir konsol penceresinde (cmd, PowerShell veya Bash gibi), adlı ChatQuickstart
yeni bir konsol uygulaması oluşturmak için komutunu kullanındotnet new
. Bu komut, tek bir kaynak dosyası olan basit bir "Merhaba Dünya" C# projesi oluşturur: Program.cs.
dotnet new console -o ChatQuickstart
Dizininizi yeni oluşturulan uygulama klasörüne değiştirin ve komutunu kullanarak dotnet build
uygulamanızı derleyin.
cd ChatQuickstart
dotnet build
paketini yükleyin
.NET için Azure İletişim SohbetI SDK'sını yükleme
dotnet add package Azure.Communication.Chat
Nesne modeli
Aşağıdaki sınıflar C# için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.
Dosya Adı | Tanım |
---|---|
ChatClient | Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve iş parçacıkları oluşturmak, almak ve silmek için kullanırsınız. |
ChatThreadClient | Sohbet Yazışması işlevselliği için bu sınıf gereklidir. ChatClient aracılığıyla bir örnek alırsınız ve bu örneği iletileri göndermek/almak/güncelleştirmek/silmek, katılımcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için kullanırsınız. |
Sohbet istemcisi oluşturma
Sohbet istemcisi oluşturmak için İletişim Hizmetleri uç noktanızı ve önkoşul adımlarının bir parçası olarak oluşturulan erişim belirtecini kullanacaksınız. Kullanıcı oluşturmak ve sohbet istemcinize geçirmek üzere bir belirteç vermek için Kimlik SDK'sından sınıfını kullanmanız CommunicationIdentityClient
gerekir.
Kullanıcı Erişim Belirteçleri hakkında daha fazla bilgi edinin.
Bu hızlı başlangıç, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz ancak önerilir. Sohbet Mimarisi hakkında daha fazla bilgi edinin
Aşağıdaki kod parçacıklarını kopyalayın ve kaynak dosyaya yapıştırın: 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);
}
}
}
Sohbet yazışması başlatma
Sohbet yazışması createChatThread
oluşturmak için chatClient'da yöntemini kullanın
- Bu sohbete bir konu vermek için kullanın
topic
; Konu, sohbet yazışması işlevi kullanılarakUpdateTopic
oluşturulduktan sonra güncelleştirilebilir. - Sohbet yazışmasına eklenecek nesnelerin listesini
ChatParticipant
geçirmek için özelliğini kullanınparticipants
.ChatParticipant
Nesnesi birCommunicationIdentifier
nesneyle başlatılır.CommunicationIdentifier
veya türündeCommunicationUserIdentifier
MicrosoftTeamsUserIdentifier
PhoneNumberIdentifier
olabilir. Örneğin, birCommunicationIdentifier
nesneyi almak için Kullanıcı oluşturma yönergelerini izleyerek oluşturduğunuz bir Erişim Kimliği geçirmeniz gerekir
yöntemindeki createChatThread
yanıt nesnesi ayrıntıları içerir chatThread
. Katılımcı ekleme, ileti gönderme, iletiyi silme chatThreadClient
gibi sohbet yazışması işlemleriyle etkileşime geçmek için istemci örneğinin istemcide yöntemini kullanarak örnek oluşturması GetChatThreadClient
ChatClient
gerekir.
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;
Sohbet yazışması istemcisi alma
yöntemi, GetChatThreadClient
zaten var olan bir iş parçacığı için bir iş parçacığı istemcisi döndürür. Oluşturulan iş parçacığında işlem gerçekleştirmek için kullanılabilir: üye ekleme, ileti gönderme vb. threadId, mevcut sohbet yazışmasının benzersiz kimliğidir.
string threadId = "<THREAD_ID>";
ChatThreadClient chatThreadClient = chatClient.GetChatThreadClient(threadId: threadId);
Tüm sohbet yazışmalarını listeleme
Kullanıcının parçası olduğu tüm sohbet yazışmalarını almak için kullanın GetChatThreads
.
AsyncPageable<ChatThreadItem> chatThreadItems = chatClient.GetChatThreadsAsync();
await foreach (ChatThreadItem chatThreadItem in chatThreadItems)
{
Console.WriteLine($"{ chatThreadItem.Id}");
}
Sohbet yazışmasına ileti gönderme
bir iş parçacığına ileti göndermek için kullanın SendMessage
.
- İletinin içeriğini sağlamak için kullanın
content
, gereklidir. - İletinin 'Metin' veya 'Html' gibi içerik türü için kullanın
type
. Belirtilmezse , 'Metin' ayarlanır. - Gönderenin görünen adını belirtmek için kullanın
senderDisplayName
. Belirtilmezse, boş dize ayarlanır. - İletiyle birlikte göndermek istediğiniz ek verileri eklemek için isteğe bağlı olarak kullanın
metadata
. Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve buna göre görüntüleyebilmesi için meta verilere 'hasAttachment:true' eklemek isteyebilirsiniz.
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;
Sohbet yazışmasından sohbet iletileri alma
Belirtilen aralıklarla sohbet yazışması istemcisinde GetMessages
yöntemini yoklayarak sohbet iletilerini alabilirsiniz.
AsyncPageable<ChatMessage> allMessages = chatThreadClient.GetMessagesAsync();
await foreach (ChatMessage message in allMessages)
{
Console.WriteLine($"{message.Id}:{message.Content.Message}");
}
GetMessages
isteğe bağlı DateTimeOffset
bir parametre alır. Bu uzaklık belirtilirse, alınan, güncelleştirilen veya silinen iletileri alırsınız. Uzaklık saatinden önce alınan ancak düzenlendikten veya kaldırıldıktan sonra gelen iletilerin de döndürüleceğini unutmayın.
GetMessages
ve DeleteMessage
kullanılarak UpdateMessage
iletiye yapılan tüm düzenlemeler veya silmeler de dahil olmak üzere iletinin en son sürümünü döndürür. Silinen iletiler için, chatMessage.DeletedOn
bu iletinin ne zaman silindiğini belirten bir tarih saat değeri döndürür. Düzenlenen iletiler için, chatMessage.EditedOn
iletinin ne zaman düzenlendiğini belirten bir tarih saat döndürür. İleti oluşturma işleminin özgün zamanına kullanılarak chatMessage.CreatedOn
erişilebilir ve iletileri sıralamak için kullanılabilir.
GetMessages
tarafından chatMessage.Type
tanımlanabilen farklı ileti türlerini döndürür. Bu türler şunlardır:
Text
: Yazışma üyesi tarafından gönderilen normal sohbet iletisi.Html
: Biçimlendirilmiş bir metin iletisi. İletişim Hizmetleri kullanıcılarının şu anda RichText iletileri gönderemiyoruz. Bu ileti türü, Teams kullanıcıları tarafından Teams Birlikte Çalışma senaryolarındaki İletişim Hizmetleri kullanıcılarına gönderilen iletiler tarafından desteklenir.TopicUpdated
: Konunun güncelleştirildiğini belirten sistem iletisi. (salt okunur)ParticipantAdded
: Sohbet yazışmasına bir veya daha fazla katılımcının eklendiğini gösteren sistem iletisi. (salt okunur)ParticipantRemoved
: Bir katılımcının sohbet yazışmasından kaldırıldığını belirten sistem iletisi.
Diğer ayrıntılar için bkz . İleti Türleri.
Sohbet yazışmasına katılımcı olarak kullanıcı ekleme
Bir iş parçacığı oluşturulduktan sonra kullanıcı ekleyip kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara yazışmaya ileti gönderebilmeleri ve diğer katılımcıları ekleyebilmeleri/kaldırabilmeleri için erişim vermiş olursunuz. çağrısı AddParticipants
öncesinde, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı olacaktır.
Sohbet yazışmasına bir veya daha fazla katılımcı eklemek için kullanın AddParticipants
. Her iş parçacığı katılımcısı için desteklenen öznitelikler şunlardır:
communicationUser
, gerekli, iş parçacığı katılımcısının kimliğidir.displayName
isteğe bağlı olarak, iş parçacığı katılımcısının görünen adıdır.shareHistoryTime
, isteğe bağlı olarak, sohbet geçmişinin katılımcıyla paylaşıldığı zaman.
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);
İş parçacığı katılımcılarını alma
Sohbet yazışmasının katılımcılarını almak için kullanın GetParticipants
.
AsyncPageable<ChatParticipant> allParticipants = chatThreadClient.GetParticipantsAsync();
await foreach (ChatParticipant participant in allParticipants)
{
Console.WriteLine($"{((CommunicationUserIdentifier)participant.User).Id}:{participant.DisplayName}:{participant.ShareHistoryTime}");
}
Okundu bilgisi gönder
İletinin kullanıcı tarafından okunduğunu diğer katılımcılara bildirmek için kullanın SendReadReceipt
.
await chatThreadClient.SendReadReceiptAsync(messageId: messageId);
Kodu çalıştırma
komutunu kullanarak dotnet run
uygulamayı uygulama dizininizden çalıştırın.
dotnet run
Örnek Kod
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ön koşullar
Başlamadan önce şunları yaptığınızdan emin olun:
Etkin aboneliği olan bir Azure hesabı oluşturun. Ayrıntılar için bkz . Ücretsiz hesap oluşturma.
Xcode ve CocoaPods'u yükleyin. Hızlı başlangıç için bir iOS uygulaması oluşturmak için Xcode ve bağımlılıkları yüklemek için CocoaPods kullanırsınız.
Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz . Hızlı Başlangıç: İletişim Hizmetleri kaynaklarını oluşturma ve yönetme. Bu hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.
Azure İletişim Hizmetleri'de iki kullanıcı oluşturun ve onlara bir Kullanıcı Erişim Belirteci gönderin. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Bu hızlı başlangıçta, ilk katılımcıyla bir iş parçacığı oluşturacak ve ardından iş parçacığına ikinci bir katılımcı ekleyebilirsiniz. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.
az communication identity token issue --scope chat --connection-string "yourConnectionString"
Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.
Ayarlama
Yeni bir iOS uygulaması oluşturma
Xcode'u açın ve Yeni Xcode projesi oluştur'u seçin. Ardından platform olarak iOS ve şablon için Uygulama'ya tıklayın.
Proje adı olarak ChatQuickstart girin. Ardından arabirim olarak Görsel Taslak'ı, yaşam döngüsü olarak UIKit Uygulama Temsilcisi'ni ve dil olarak Swift'i seçin.
İleri'yi seçin ve projenin oluşturulmasını istediğiniz dizini seçin.
Kitaplıkları yükleme
Gerekli İletişim Hizmetleri bağımlılıklarını yüklemek için CocoaPods'u kullanın.
Komut satırından iOS projesinin kök dizinine ChatQuickstart
gidin. Aşağıdaki komutla bir Podfile oluşturun: pod init
.
Podfile dosyasını açın ve hedefe aşağıdaki bağımlılıkları ChatQuickstart
ekleyin:
pod 'AzureCommunicationChat', '~> 1.3.6'
Bağımlılıkları aşağıdaki komutla yükleyin: pod install
. Bunun bir Xcode çalışma alanı da oluşturduğunu unutmayın.
çalıştırdıktan pod install
sonra, yeni oluşturulan .xcworkspace
öğesini seçerek projeyi Xcode'da yeniden açın.
Yer tutucuları ayarlama
Çalışma alanını ChatQuickstart.xcworkspace
Xcode'da açın ve ardından öğesini açın ViewController.swift
.
Bu hızlı başlangıçta kodunuzu öğesine viewController
ekleyecek ve çıkışı Xcode konsolunda görüntüleyeceksiniz. Bu hızlı başlangıçta iOS'ta kullanıcı arabirimi oluşturma işlemi ele alınmıyor.
öğesinin viewController.swift
en üstünde ve AzureCommunicatonChat
kitaplıklarını içeri aktarınAzureCommunication
:
import AzureCommunicationCommon
import AzureCommunicationChat
Aşağıdaki kodu yöntemine viewDidLoad()
ViewController
kopyalayın:
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)")
}
}
}
Tanıtım amacıyla kodunuzu eşitlemek için semafor kullanacağız. Aşağıdaki adımlarda, Azure İletişim Hizmetleri Sohbet kitaplığını kullanarak yer tutucuları örnek kodla değiştirirsiniz.
Sohbet istemcisi oluşturma
Sohbet istemcisi oluşturmak için İletişim Hizmetleri uç noktanızı ve önkoşul adımlarının bir parçası olarak oluşturulan erişim belirtecini kullanacaksınız.
Kullanıcı Erişim Belirteçleri hakkında daha fazla bilgi edinin.
Bu hızlı başlangıç, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz ancak önerilir. Sohbet Mimarisi hakkında daha fazla bilgi edinin
Açıklamayı <CREATE A CHAT CLIENT>
aşağıdaki kod parçacığıyla değiştirin:
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
)
değerini Azure İletişim Hizmetleri kaynağınızın uç noktasıyla değiştirin<ACS_RESOURCE_ENDPOINT>
. değerini geçerli bir İletişim Hizmetleri erişim belirteci ile değiştirin <ACCESS_TOKEN>
.
Nesne modeli
Aşağıdaki sınıflar ve arabirimler, iOS için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.
Dosya Adı | Tanım |
---|---|
ChatClient |
Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve yazışmaları oluşturmak, almak, silmek ve sohbet olaylarına abone olmak için kullanırsınız. |
ChatThreadClient |
Bu sınıf, sohbet yazışması işlevselliği için gereklidir. aracılığıyla ChatClient bir örnek alırsınız ve iletileri göndermek, almak, güncelleştirmek ve silmek için bu örneği kullanırsınız. Ayrıca kullanıcıları eklemek, kaldırmak ve almak, yazma bildirimleri ve okundu bilgileri göndermek için de kullanabilirsiniz. |
Sohbet yazışması başlatma
CreateChatThreadResult
, sohbet yazışması oluşturmaktan döndürülen yanıttır.
Nesne olan ChatThreadProperties
bir chatThread
özellik içerir. Bu nesne, oluşturulan iş parçacığında işlem gerçekleştirmek için bir almak ChatThreadClient
için kullanılabilecek threadId değerini içerir: katılımcı ekleme, ileti gönderme vb.
Açıklamayı <CREATE A CHAT THREAD>
aşağıdaki kod parçacığıyla değiştirin:
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()
değerini geçerli bir İletişim Hizmetleri kullanıcı kimliğiyle değiştirin <USER_ID>
.
Devam etmeden önce tamamlama işleyicisini beklemek için burada bir semafor kullanıyorsunuz. Sonraki adımlarda, tamamlanma işleyicisine döndürülen yanıttan öğesini kullanacaksınız threadId
.
Tüm sohbet yazışmalarını listeleme
Sohbet yazışması oluşturduktan sonra yöntemini üzerinde ChatClient
çağırarak listChatThreads
tüm sohbet yazışmalarını listeleyebiliriz. <LIST ALL CHAT THREADS>
açıklamasını aşağıdaki kodla değiştirin:
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()
Sohbet yazışması istemcisi alma
createClient
yöntemi, zaten var olan bir iş parçacığı için bir ChatThreadClient
döndürür. Oluşturulan yazışmada işlem gerçekleştirmek için kullanılabilir: katılımcı ekleme, ileti gönderme vb. threadId, mevcut sohbet yazışmasının benzersiz kimliğidir.
<GET A CHAT THREAD CLIENT>
açıklamasını aşağıdaki kodla değiştirin:
let chatThreadClient = try chatClient.createClient(forThread: threadId!)
Sohbet yazışmasına ileti gönderme
send
threadId ile tanımlanan bir iş parçacığına ileti göndermek için yöntemini kullanın.
SendChatMessageRequest
, ileti isteğini açıklamak için kullanılır:
- Sohbet iletisi içeriğini sağlamak için kullanın
content
- Gönderenin görünen adını belirtmek için kullanın
senderDisplayName
- 'text' veya 'html' gibi ileti türünü belirtmek için kullanın
type
- İletiyle birlikte göndermek istediğiniz ek verileri eklemek için isteğe bağlı olarak kullanın
metadata
. Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve buna göre görüntüleyebilmesi için meta verilere 'hasAttachment:true' eklemek isteyebilirsiniz.
SendChatMessageResult
, ileti göndermeden döndürülen yanıttır, iletinin benzersiz kimliği olan bir kimlik içerir.
Açıklamayı <SEND A MESSAGE>
aşağıdaki kod parçacığıyla değiştirin:
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()
Okundu bilgisi gönderme
sendReadReceipt
Kullanıcı adına bir okundu bilgisi olayını sohbet yazışmasına göndermek için yöntemini kullanın.
messageId
okunan sohbet iletisinin benzersiz kimliğidir.
Açıklamayı <SEND A READ RECEIPT>
aşağıdaki kodla değiştirin:
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")
}
Sohbet yazışmasından sohbet iletileri alma
Gerçek zamanlı sinyalle, yeni gelen iletileri dinlemek için abone olabilir ve bellekteki geçerli iletileri uygun şekilde güncelleştirebilirsiniz. Azure İletişim Hizmetleri abone olabileceğiniz olayların listesini destekler.
açıklamasını <RECEIVE MESSAGES>
aşağıdaki kodla değiştirin. Bildirimleri etkinleştirdikten sonra ChatMessageReceivedEvents'i görmek için yeni iletiler göndermeyi deneyin.
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
}
})
Alternatif olarak, yöntemini belirtilen aralıklarla yoklayarak listMessages
sohbet iletilerini alabilirsiniz. Aşağıdaki kod parçacığına bakın: 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()
Sohbet yazışmasına katılımcı olarak kullanıcı ekleme
Bir iş parçacığı oluşturulduktan sonra kullanıcı ekleyip kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara yazışmaya ileti gönderebilmeleri ve diğer katılımcıları ekleyebilmeleri/kaldırabilmeleri için erişim vermiş olursunuz. çağrısı add
öncesinde, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı olacaktır.
add
Sohbet yazışmasına bir veya daha fazla katılımcı eklemek için yöntemini ChatThreadClient
kullanın. Her iş parçacığı katılımcısı için desteklenen öznitelikler şunlardır:
id
, gerekli, iş parçacığı katılımcısının kimliğidir.displayName
isteğe bağlı olarak, iş parçacığı katılımcısının görünen adıdır.shareHistoryTime
, isteğe bağlı olarak, sohbet geçmişinin katılımcıyla paylaşıldığı zaman.
<ADD A USER>
açıklamasını aşağıdaki kodla değiştirin:
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()
öğesini eklenecek kullanıcının İletişim Hizmetleri kullanıcı kimliğiyle değiştirin <USER_ID>
.
İş parçacığındaki kullanıcıları listeleme
Belirli bir sohbet yazışması listParticipants
için tüm katılımcıları almak için yöntemini kullanın.
<LIST USERS>
açıklamasını aşağıdaki kodla değiştirin:
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()
Anında iletme bildirimleri
Anında iletme bildirimleri, mobil uygulamanın ön planda çalışmadığı durumlarda istemcilere sohbet yazışmasında gelen iletileri bildirir. Şu anda Notification Hub ile sohbet anında iletme bildirimleri göndermek, sürüm 1.3.0'da IOS SDK için desteklenmektedir. Ayrıntılar için lütfen sohbet uygulamanızda Anında İletme Bildirimini Etkinleştirme makalesine bakın.
Kodu çalıştırma
Xcode'da projeyi derlemek ve çalıştırmak için Çalıştır düğmesine basın. Konsolunda kodun çıkışını ve ChatClient'ın günlükçü çıkışını görüntüleyebilirsiniz.
Not: olarak No
ayarlayınBuild Settings > Build Options > Enable Bitcode
. Şu anda iOS için AzureCommunicationChat SDK'sı bit kodunu etkinleştirmeyi desteklememektedir, aşağıdaki GitHub sorunu bunu izlemektir.
Örnek Kod
GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.
Ön koşullar
Etkin aboneliği olan bir Azure hesabı veya ücretsiz bir Azure hesabı oluşturun.
Etkin bir Azure İletişim Hizmetleri kaynağı veya bir İletişim Hizmetleri kaynağı oluşturun.
Etkin bir Azure Logic Apps kaynağı veya kullanmak istediğiniz tetikleyiciyle boş bir mantıksal uygulama oluşturun. Şu anda İletişim Hizmetleri Sohbet bağlayıcısı yalnızca eylemler sağladığından mantıksal uygulamanız en azından bir tetikleyici gerektirir.
Kullanıcı oluşturma
Power Automate akışınız düzenleme modunda açıkken Power Automate'te bu adımları tamamlayın.
İletişim Hizmetleri Kimliği bağlayıcısını kullanarak iş akışınıza yeni bir adım eklemek için:
Tasarımcıda, yeni eylemi eklemek istediğiniz adımın altında Yeni adım'ı seçin. Alternatif olarak, adımlar arasına yeni eylem eklemek için işaretçinizi bu adımlar arasındaki okun üzerine getirin, artı işaretini (+) ve ardından Eylem ekle'yi seçin.
İşlem seçin arama kutusuna İletişim Hizmetleri Kimliği girin. Eylem listesinde Kullanıcı oluştur'u seçin.
bağlantı dizesi girin. Azure portalında bağlantı dizesi URL'sini almak için Azure İletişim Hizmetleri kaynağına gidin. Kaynak menüsünde Anahtarlar'ı ve ardından Bağlan ion dizesini seçin. bağlantı dizesi kopyalamak için kopyala simgesini seçin.
Bağlantı için bir ad girin.
Gelişmiş seçenekleri göster'i ve ardından belirteç kapsamını seçin. Eylem, belirtilen kapsamla bir erişim belirteci ve süre sonu oluşturur. Bu eylem, İletişim Hizmetleri kullanıcı kimliği olan bir kullanıcı kimliği de oluşturur.
Belirteç Kapsamları Öğesi'nde sohbet'i seçin.
Oluştur seçeneğini belirleyin. Kullanıcı kimliği ve erişim belirteci gösterilir.
Sohbet yazışması oluşturma
Yeni bir eylem ekleyin.
İşlem seçin arama kutusuna İletişim Hizmetleri Sohbeti yazın. Eylem listesinde Sohbet yazışması oluştur'u seçin.
İletişim Hizmetleri uç noktası URL'sini girin. Azure portalında uç nokta URL'sini almak için Azure İletişim Hizmetleri kaynağına gidin. Kaynak menüsünde Anahtarlar'ı ve ardından Uç Nokta'yı seçin.
Bağlantı için bir ad girin.
Önceki bölümde oluşturulan erişim belirtecini seçin ve ardından bir sohbet yazışması konusu açıklaması ekleyin. Oluşturulan kullanıcıyı ekleyin ve katılımcı için bir ad girin.
İleti gönderme
Yeni bir eylem ekleyin.
İşlem seçin arama kutusuna İletişim Hizmetleri Sohbeti yazın. Eylem listesinde İletiyi sohbet yazışmasına gönder'i seçin.
Erişim belirtecini, iş parçacığı kimliğini, içeriği ve adı girin.
Sohbet yazışma iletilerini listeleme
Bir iletiyi doğru gönderdiğinizi doğrulamak için:
Yeni bir eylem ekleyin.
İşlem seçin arama kutusuna İletişim Hizmetleri Sohbeti yazın. Eylem listesinde Sohbet yazışması iletilerini listele'yi seçin.
Erişim belirtecini ve iş parçacığı kimliğini girin.
Mantıksal uygulamanızı test edin
İş akışınızı el ile başlatmak için tasarımcı araç çubuğunda Çalıştır'ı seçin. İş akışı bir kullanıcı oluşturur, bu kullanıcı için bir erişim belirteci oluşturur ve ardından belirteci kaldırır ve kullanıcıyı siler. Daha fazla bilgi için bkz . İş akışınızı çalıştırma.
Şimdi Sohbet yazışma iletilerini listele'yi seçin. Eylem çıkışlarında, gönderilen iletiyi denetleyin.
İş akışı kaynaklarını temizleme
Mantıksal uygulama iş akışınızı ve ilgili kaynakları temizlemek için Logic Apps kaynaklarını temizlemeyi gözden geçirin.
Kaynakları temizleme
İletişim Hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Kaynakları temizleme hakkında daha fazla bilgi edinin.
Sonraki adımlar
Bu hızlı başlangıçta aşağıdakilerin nasıl yapılacağını öğrendiniz:
- Sohbet istemcisi oluşturma
- İki kullanıcıyla iş parçacığı oluşturma
- İş parçacığına ileti gönderme
- bir iş parçacığından ileti alma
- İş parçacığından Kullanıcı Kaldırma
Ayrıca şunları da isteyebilirsiniz:
- Kullanıcı Arabirimi Kitaplığı'nı kullanmaya başlama
- Sohbet kavramları hakkında bilgi edinin
- Sohbet SDK'sı hakkında bilgi edinme
- React Native uygulamanızda Sohbet SDK'sı kullanma.