Aracılığıyla paylaş


Uygulamanıza Sohbet Ekleme

İletişim Hizmetleri Sohbet SDK'sını kullanarak uygulamanıza gerçek zamanlı sohbet ekleyin. Bu makalede, kullanıcıların birbirleriyle konuşma yapmasını sağlayan sohbet yazışmaları oluşturmak için Sohbet SDK'sının nasıl kullanılacağı açıklanmaktadır. Sohbet kavramları hakkında daha fazla bilgi edinmek için sohbet kavramsal belgelerine bakın.

Önkoş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 adresini bağlantı dizesinde bulabilirsiniz. Sonrasında gelen endpoint= ve ile başlayan URL'dir https://.

  • Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Ayrıca Azure CLI'yi kullanabilir ve kullanıcı ve erişim belirteci oluşturmak için 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.

Kurulum

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

Azure CLI sohbet işlemlerini uç nokta belirtmeden kullanabilmek için AZURE_COMMUNICATION_ENDPOINT ortam değişkenini --endpoint olarak 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. <yourEndpoint> ifadesini gerçek uç noktanızla değiştirin.

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 okuması 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

Azure CLI sohbet işlemlerini kullanmak adına ortam değişkenini, erişim belirtecini --access-token ile geçirmek zorunda kalmadan AZURE_COMMUNICATION_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. <yourAccessToken> ifadesini gerçek erişim belirtecinizle değiştirin.

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 okuması 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.

Operasyonlar

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 daha önce 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 <chatTopic> kullanın. Sohbet yazışması oluşturulduktan sonra komutunu kullanarak thread update-topic konuyu güncelleştirebilirsiniz.
  • Azure İletişim Hizmetleri uç noktanızla <endpoint> değerini değiştirin.
  • <token> öğesini, daha önce identity token issue komutunu çalıştırarak elde ettiğiniz erişim belirtecinizle değiştirin.

Sohbet yazışmasının konusunu güncelleştirme

az communication chat thread update-topic --thread "<chatThreadId>" --topic "<chatTopic>" --endpoint "<endpoint>" --access-token "<token>"
  • "<chatThreadId> öğesini sohbet dizisi kimliğiniz ile değiştirin."
  • Yeni sohbet konusunu ayarlamak için <chatTopic>'yı değiştirin.
  • <endpoint> değerini Azure İletişim Hizmetleri uç noktanızla değiştirin.
  • <token> komutunu çalıştırarak daha önce elde ettiğiniz erişim belirteciyle değiştirin.

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ı: Sohbet iletilerini almak için en erken noktayı belirtmek için kullanın <startTime> .
  • <endpoint> değerini Azure İletişim Hizmetleri uç noktanızla değiştirin.
  • <token>'i, daha önce çalıştırdığınız identity token issue komutuyla elde ettiğiniz erişim belirteciyle değiştirin.

Sohbet yazışmasına ileti gönderme

message send komutunu kullanarak oluşturduğunuz ve tarafından threadIdtanı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>"
  • Sohbet yazışma kimliğiniz ile <chatThreadId> değerini değiştirin.
  • 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 text ve html'dir. Bir değer belirtmezseniz, varsayılan değer olur text.
  • İsteğe bağlı olarak gönderenin görünen adını belirtmek için kullanın <displayName> .
  • <endpoint>, Azure İletişim Hizmetleri uç noktanız ile değiştirin.
  • <token> ifadesini, identity token issue komutunu çalıştırarak daha önce elde ettiğiniz erişim belirteci ile değiştirin.

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>"
  • Yerine <chatThreadId> sohbet yazışması kimliğinizi koyun.
  • İsteğe bağlı olarak, sohbet iletilerini almak için zamanın en erken noktasını belirtmek için kullanın <startTime> .
  • Azure İletişim Hizmetleri uç noktanızla değiştirin <endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak <token> değiştirinidentity token issue.

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>"
  • <chatThreadId> ifadesini sohbet yazışması kimliğiniz ile değiştirin.
  • <messageId>'yi değerini almak istediğiniz iletinin kimliğiyle değiştirin.
  • 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 <token> değiştirinidentity token issue.

Okundu bilgisi gönder

Bir kullanıcı adına bir iş parçacığına okundu bilgisi etkinliğini göndermek için message receipt send komutunu kullanırsınız.

az communication chat message receipt send --thread "<chatThreadId>" --message-id "<messageId>" --endpoint "<endpoint>" --access-token "<token>"
  • <chatThreadId> ile sohbet yazışması kimliğinizi değiştirin.
  • geçerli kullanıcı tarafından okunan en son iletinin kimliğini belirtmek için değerini değiştirin <messageId> .
  • Azure İletişim Hizmetleri uç noktanızla <endpoint> değerini değiştirin.
  • <token> değerini, daha önce identity token issue komutunu çalıştırarak elde ettiğiniz erişim belirteciyle değiştirin.

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. Komutu ç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>"
  • <chatThreadId> ifadesini sohbet yazışması kimliğiniz ile değiştirin.
  • <userId> ifadesini userId değerinizle değiştirin.
  • İ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> .
  • <endpoint> değerini Azure İletişim Hizmetleri uç noktanızla değiştirin.
  • <token> ile, daha önce identity token issue komutunu çalıştırarak elde ettiğiniz erişim belirtecinizi değiştirin.

Sohbet yazışmasında yazışma katılımcılarını listeleme

Katılımcı eklemeye benzer şekilde, konu başlığındaki katılımcıları da listeleyebilirsiniz.

Katılımcıları almak için participant list komutunu kullanın.

az communication chat participant list --thread "<chatThreadId>" --skip "<skip>" --endpoint "<endpoint>" --access-token "<token>"
  • <chatThreadId> öğesini sohbet yazışması kimliğinizle değiştirin.
  • İsteğe bağlı olarak <skip>'yi, yanıt içinde belirtilen konuma kadar olan katılımcıları atlamak için kullanın.
  • Azure İletişim Hizmetleri uç noktanızla <endpoint> 'i değiştirin.
  • <token> değerini, daha önce identity token issue komutunu çalıştırarak elde ettiğiniz erişim belirteci ile değiştirin.

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>"
  • <chatThreadId> öğesini chat yazışması kimliğiniz ile değiştirin.
  • yerine <userId> sohbet yazışmasından kaldırmak istediğiniz userId değerini girin.
  • <endpoint> değerini Azure İletişim Hizmetleri uç noktanızla değiştirin.
  • <token> değerini, identity token issue komutunu çalıştırarak daha önce elde ettiğiniz erişim belirteciyle değiştirin.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı oluşturun. Ayrıntılar için bkz . Ücretsiz hesap oluşturma.

  • Node.js Etkin LTS ve Bakım LTS sürümlerini yükleyin.

  • Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz. Azure İletişim Hizmetleri kaynağı oluşturma. Bu makale için kaynak uç noktanızı ve bağlantı dizenizi 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 demo, iki başlangıç katılımcısıyla bir konu oluşturur ve daha sonra konuya üçüncü bir katılımcı ekler. Ayrıca Azure CLI'yi kullanabilir ve kullanıcı ve erişim belirteci oluşturmak için 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.

Kurulum

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

Varsayılan ayarlarla bir npm init -y dosyası oluşturmak için komutunu çalıştırın.

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

Bu seçenek, package.json dosyanızda kitaplığı bir bağımlılık olarak listeler.

Uygulama çerçevesini ayarlama

Bu makalede uygulama varlıklarını paketlemek için paket kullanılır. Yüklemek ve package.json 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 kullanın.

<!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 makalenin 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 kullanın.

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 makale, 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 bkz . sohbet kavramları. Erişim belirteçleri hakkında daha fazla bilgi için bkz . kullanıcı erişim belirteçleri.

client.jsiçinde, JavaScript için Azure İletişim Sohbet SDK'sını kullanarak sohbet özelliği eklemek için aşağıdaki koddaki 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 fazla bilgi için 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/. adresine gidin Tarayıcınızdaki geliştirici araçları konsolunda şunları 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.

Veri Akışı Adı Açıklama
ChatClient Sohbet işlevselliği için bu sınıf gereklidir. Abonelik bilgilerinizle bir örneklem oluşturur ve bunu iletişim konularını 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 onu iletileri göndermek/almak/güncellemek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgileri almak için kullanırsınız.

Sohbet yazışması başlatma

createThread yöntemini kullanarak bir sohbet başlığı oluşturun.

createThreadRequest konu isteğini tanımlamak için kullanılır.

  • Bu sohbete bir konu vermek için kullanın topic . Sohbet yazışması işlevi kullanılarak UpdateThread oluşturulduktan sonra konular güncelleştirilebilir.
  • Sohbet yazışmasına eklenecek katılımcıları listelemek için kullanın participants .

Çözüldüğünde createChatThread yöntemi bir CreateChatThreadResult döndürür. Bu model, yeni oluşturulan iş parçacığına chatThread erişebileceğiniz bir id özellik içerir. Daha sonra bir ChatThreadClient örneğini almak için 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ğıdaki iletiyi 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 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 PagedAsyncIterableIteratorbir ChatThreadItem döndürür. Tüm sohbet yazışmalarını listelemek için kullanılabilir. bir [ChatThreadItem] yineleyicisi, iş parçacıklarını listeleme işleminden 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

Mesajı, threadId ile tanımlanan bir iş parçacığına göndermek için sendMessage yöntemini kullanın.

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öndermekten döndürülen yanıttır. İletinin benzersiz kimliğini 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 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 <RECEIVE A CHAT MESSAGE FROM A CHAT THREAD> yerine client.js dosyasına ekleyin. Tarayıcı sekmenizi yenileyin, konsolda bir ileti Notification chatMessageReceivedgö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
}

client.js açıklamanın <LIST MESSAGES IN A CHAT THREAD>yerine bu kodu ekleyin. Sekmenizi yenileyin, konsolda bu sohbet yazışmasında gönderilen iletilerin listesini bulmanız gerekir.

listMessages, chatMessage.type tarafından tanımlanabilecek farklı mesaj türleri döndürür.

Daha fazla bilgi 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ı vardı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, iş parçacığı katılımcısının isteğe bağlı 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ı eklenmeden önceki hiçbir geçmişi paylaşmamak için, tarihi bugüne 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 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 açıklamanın <LIST PARTICIPANTS IN A THREAD>yerine bu kodu ekleyin, tarayıcı sekmenizi yenileyin ve konsolu denetleyin. Bir iş parçacığında 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 removeParticipant kullanınparticipant.


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> client.js açıklamanın <REMOVE PARTICIPANT FROM THREAD>yerine bu kodu ekleyin.

Gerçek zamanlı bildirimlerin bağlantı durumuna abone olma

Olaylara realTimeNotificationConnected abonelik ve realTimeNotificationDisconnected çağrı sunucusuna bağlantının ne zaman etkin olduğunu öğrenmenizi sağlar.

// 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

Bu makalenin son haline getirilmiş kodunu GitHub örneği Uygulamanıza Sohbet Ekleme bölümünde bulabilirsiniz.

Önkoşullar

  • 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 makale için kaynak uç noktanızı ve bağlantı dizenizi kaydetmeniz gerekir.

  • Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesi ile user_id dizesini not edin. Ayrıca Azure CLI'yi kullanabilir ve kullanıcı ve erişim belirteci oluşturmak için 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 makalenin tüm kaynak kodunu bu dosyaya ekleyin.

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.

Adı Açıklama
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 ChatClientbir ö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 kullanıcı bilgilerini almak, yazma bildirimleri ve okundu bilgisi 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 makale, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz, ancak önerilir. Daha fazla bilgi için Sohbet kavramları > Sohbet mimarisi'nin "Sohbet mimarisi" bölümüne bakın.

Sohbet yazışması başlatma

Bir sohbet dizisi oluşturmak için create_chat_thread yöntemini kullanın.

  • İş parçacığına bir konu vermek için kullanın topic . sohbet yazışması oluşturulduktan sonra işlevini kullanarak update_thread konuyu güncelleştirebilirsiniz.
  • thread_participants kullanarak sohbet yazışmasına eklenecek ChatParticipant listesini yapın. ChatParticipant CommunicationUserIdentifier türünü user olarak alır.

CreateChatThreadResult, bir iş parçacığı oluşturmaktan elde edilen sonuçtur. Oluşturulan sohbet yazışmasını id getirmek için bunu kullanabilirsiniz. Bu id daha sonra get_chat_thread_client yöntemini kullanarak 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 konu başlığı istemcisi edinme

get_chat_thread_client yöntemi, var olan bir iş parçacığına ait iş parçacığı istemcisini 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 ChatThreadItembir 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

Bir mesaj göndermek için oluşturduğunuz ve thread_id ile tanımlanan sohbet dizisine send_message 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 ve textşeklindedirhtml. Bir değer belirtmezseniz, varsayılan değer olur text.
  • Gönderenin görünen adını belirtmek için kullanın sender_display_name .
  • İ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öndermekten döndürülen yanıttır. Mesajın benzersiz kimliği olan bir ID 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 .

Bir [ChatMessage] yineleyicisi, 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_messagesve update_messagekullanarak delete_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_onzamanına erişebilirsiniz.

list_messages , içinden tanımladığınız ChatMessage.typefarklı ileti türlerini döndürür.

Daha fazla bilgi için bkz . İleti türleri.

Okundu bilgisi gönder

Bir kullanıcının adına okundu bilgisi olayını bir iş parçacığına göndermek için send_read_receipt yöntemini kullanırsınız.

  • 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.

Tüm kullanıcılar için yeni bir erişim belirteci ve kimlik varsa yöntemini kullanarak add_participants sohbet yazışmasına bir veya daha fazla kullanıcı ekleyebilirsiniz.

Bir list(tuple(ChatParticipant, CommunicationError)) döndürülür. Katılımcı başarıyla eklendiğinde boş bir liste beklenir. Katılımcı eklerken bir 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 konu başlığındaki katılımcıları da listeleyebilirsiniz.

İş parçacığının katılımcılarını almak için list_participants kullanın. 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 .
  • skip'yi, yanıtta belirtilen bir konuma kadar katılımcıları atlamak için kullanın.

[ChatParticipant] için bir yineleyici, katılımcıları listeleme sonucu 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

Bu makalenin son haline getirilmiş kodunu GitHub örneği Uygulamanıza Sohbet Ekleme bölümünde bulabilirsiniz.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz hesap oluşturun.

  • Java Development Kit (JDK) sürüm 8 veya üzeri.

  • Apache Maven.

  • Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz. Azure İletişim Hizmetleri kaynağı oluşturma. Bu makale için kaynak uç noktanızı ve bağlantı dizenizi kaydetmeniz gerekir.

  • Kullanıcı Erişim Belirteci. Kapsamı chat olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Ayrıca Azure CLI'yi kullanabilir ve kullanıcı ve erişim belirteci oluşturmak için 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.

Kurulum

Yeni java uygulaması oluşturma

Terminalinizi veya komut pencerenizi açın ve Java uygulamanızı oluşturmak istediğiniz dizine gidin. Şablondan maven-archetype-quickstart 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

Hedef generate, artifactId ile aynı ada sahip bir dizin oluşturmaktır. 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 dosya 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 için paket başvurularını ekleyin

POM dosyanızda, Sohbet API'leri olan 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 azure-communication-common paketine başvurması 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.

Veri Akışı Adı Açıklama
ChatClient Sohbet işlevselliği için bu sınıf gereklidir. Abonelik bilgilerinizle örnek oluşturur, ardından bu örneği 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ır ve bu örneği iletileri göndermek/almak/güncellemek/silmek, kullanıcıları eklemek/kaldırmak/almak, yazma bildirimleri ve okundu bilgisi göndermek 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 kullanın. 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, yalnızca com.azure.communication.chat ve com.azure.communication.chat.models ad alanlarından içeri aktarmalar eklediğinizden ve com.azure.communication.chat.implementation ad alanından içeri aktarma eklemediğ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

createChatThread yöntemini sohbet yazışması oluşturmak için kullanın. createChatThreadOptions iş parçacığı isteğini tanımlamak 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ılarak UpdateThread oluşturulduktan sonra güncelleştirilebilir.
  • participants iş parçacığına eklenecek katılımcıları listelemek için kullanın. ChatParticipant , Kullanıcı Erişim Belirteci'nde oluşturduğunuz kullanıcıyı alır.

CreateChatThreadResult , sohbet yazışması oluşturmaktan döndürülen yanıttır. Bu, oluşturulan iş parçacığında işlem gerçekleştirmek üzere katılımcı ekleme, ileti gönderme vb. için faydalanabileceğiniz iş parçacığı istemcisini almanıza olanak tanıyan getChatThread() yöntemini içeren ChatThread nesnesini döndüren bir yöntem içerir: ChatThread nesnesi ayrıca iş parçacığının benzersiz kimliğini elde etmek için getId() 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

Zaten var olan bir iş parçacığı için getChatThreadClient yöntemi 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ü TEXT veya HTMLbelirtmek için kullanıntype.
  • Gönderenin görünen adını belirtmek için kullanın senderDisplayName .
  • İ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 uygun şekilde görüntüleyebilmesi için meta veriler eklemek hasAttachment:true isteyebilirsiniz.

Yanıt sendChatMessageResult , iletinin benzersiz kimliği olan bir idiç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());
});

listMessagesve .editMessage()kullanılarak .deleteMessage() 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 yöntemini, bir kullanıcı adına bir okundu bilgisi etkinliğini sohbet dizisine göndermek için 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. Yöntemini çağırmadan addParticipants önce, bu kullanıcı için yeni bir erişim belirteci ve kimliği edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı vardır.

Konuya katılımcı eklemek için addParticipants yöntemini kullanın.

  • communicationIdentifiergerekli, Kullanıcı Erişim Belirteci'nde CommunicationIdentityClient tarafından oluşturduğunuz CommunicationIdentifier'dır.
  • displayName, iş parçacığı katılımcısının isteğe bağlı 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şin paylaşılmaması için tarihi 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

Dosyasını içeren pom.xml 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

Bu makalenin son haline getirilmiş kodunu GitHub örneği Uygulamanıza Sohbet Ekleme bölümünde bulabilirsiniz.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı oluşturun. Ayrıntılar için bkz . Ücretsiz hesap oluşturma.

  • Android Studio'yu yükleyin, Android Studio'yu kullanarak bir Android uygulaması oluşturur ve bağımlılıkları yükleriz.

  • Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz. Azure İletişim Hizmetleri kaynağı oluşturma. Bu makale için kaynak uç noktanızı ve bağlantı dizenizi 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 makalede, 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. Ayrıca Azure CLI'yi kullanabilir ve kullanıcı ve erişim belirteci oluşturmak için 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.

Kurulum

Yeni bir android uygulaması oluşturma

  1. Android Studio'yu açın ve öğesini seçin Create a new project.
  2. Sonraki pencerede proje şablonu olarak seçin Empty Activity .
  3. Seçenekleri belirlerken proje adı olarak girin ChatQuickstart .
  4. İ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 kullanırı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 bkz https://search.maven.org/artifact/com.azure.android/azure-communication-common . ve https://search.maven.org/artifact/com.azure.android/azure-communication-chat.

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

Projenize Maven derleme sistemini kullanarak kitaplığı aktarmak için, yapıt kimliğini ve kullanmak istediğiniz sürümü belirterek bunu uygulamanızın dependencies dosyasındaki pom.xml bölümüne ekleyin.

<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 bkz. Azure İşlevi tümleştirmesi. Uygulama parametrelerinin sabit kodlanmasından kaçınmak için Azure İşlevi ile tümleştirmenizi ö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.javaaçın ve düzenleyin. Bu makalede, kodumuzu öğesine MainActivityekleyeceğiz ve çıktıyı konsolunda görüntüleyeceğiz. Bu makalede kullanıcı arabirimi oluşturma konusu ele alınmıyor. Dosyanın üst kısmında Azure Communication Common, Azure Communication Chat ve diğer sistem kitaplıklarını içeri aktarın.

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;

Aşağıdaki kodu dosya MainActivity.java içindeki sınıf MainActivity'a 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

Not

Aşağıdaki koşullardan biri karşılanırsa, ApplicationConstants başlangıç değeri MainActivity.java'e eklenmelidir: 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, Android anında iletme bildirimleri11. adımdaki talimatlara bakın. Kullandığınız SDK sürümünün örnek uygulamasına referans için göz atın.

ACS_ENDPOINT, FIRST_USER_ID ve FIRST_USER_ACCESS_TOKEN, Azure işlevi çağrıldığında döndürülür. Daha fazla bilgi için bkz. Azure İşlevi tümleştirmesi. 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 ve SECOND_USER_ID: İletişim Hizmetleri kaynağınız tarafından oluşturulan geçerli İletişim Hizmetleri kullanıcı kimlikleri.
  • FIRST_USER_ACCESS_TOKEN: <FIRST_USER_ID> İletişim Hizmetleri için 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

Yorum <CREATE A CHAT CLIENT> yerine aşağıdaki kodu yerleş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.

Veri Akışı Adı Açıklama
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 komutunu ChatAsyncClient kullanın.

<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, yazışma içinde yer alan işlemler gerçekleştirmek için bir ChatThreadAsyncClient elde etmemiz gerekir. <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

Sohbet yazışmasına şimdi ileti gönderin.

<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.

Yorumu <RECEIVE CHAT MESSAGES> ile 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 kullandığınızda, Sohbet SDK'sı gerçek zamanlı bildirimler özelliği çalışmaz. Bağımlılık çözme sorunuyla karşı karşıya olabilirsiniz. Gerçek zamanlı bildirimler özelliğini kapatmak için uygulamanın dosyasına aşağıdaki bağımlılık bilgilerini ekleyebilir ve bunun yerine GetMessages API'sini build.gradle 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'

Bu güncellemeyle, uygulama chatAsyncClient.startRealtimeNotifications() veya chatAsyncClient.addEventHandler() kullanarak bildirim API'sine başvurmaya çalışırsa bir çalışma zamanı hatası oluşur.

Anında iletme bildirimleri

Daha fazla bilgi için bkz. Android anında iletme bildirimleri.

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ığında kullanıcıları listele

<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

İkinci kullanıcıyı konudan kaldırın.

<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önder.

<SEND A TYPING NOTIFICATION> açıklamasını aşağıdaki kodla değiştirin:

chatThreadAsyncClient.sendTypingNotification().get();

Okundu bilgisi gönder

Daha önce gönderilen mesaj için okundu bilgisi gönderiyoruz.

<SEND A READ RECEIPT> açıklamasını aşağıdaki kodla değiştirin:

chatThreadAsyncClient.sendReadReceipt(chatMessageId).get();

Okundu bilgilerini listele

<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. Konsolda, kodun çıktısını ve ChatClient'ın günlük kaydı çıktısını görüntüleyebilirsiniz.

Örnek kod

Bu makalenin son haline getirilmiş kodunu GitHub örneği Uygulamanıza Sohbet Ekleme bölümünde bulabilirsiniz.

Önkoşullar

  • 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 makale için kaynak uç noktanızı ve bağlantı dizenizi kaydetmeniz gerekir.

  • Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Ayrıca Azure CLI'yi kullanabilir ve kullanıcı ve erişim belirteci oluşturmak için 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.

Kurulum

Yeni bir C# uygulaması oluşturma

Bir konsol penceresinde (cmd, PowerShell veya Bash gibi), adlı dotnet newyeni bir konsol uygulaması oluşturmak için komutunu kullanınChatQuickstart. Bu komut, tek bir kaynak dosyayla 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.

Adı Açıklama
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ı ekleme/çıkarma/getirme, yazma bildirimleri göndermek ve okundu bilgilerini almak 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 kullanın. Kullanıcı oluşturmak ve sohbet istemcinize geçirmek üzere bir belirteç oluşturup sağlamak için Kimlik SDK'sından CommunicationIdentityClient sınıfını kullanmanız gerekir.

Kullanıcı Erişim Belirteçleri hakkında daha fazla bilgi edinin.

Bu makale, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz, ancak bunu öneririz. Daha fazla bilgi için bkz. Sohbet Mimarisi.

Aşağıdaki kod parçacıklarını kopyalayın ve kaynak dosyaya Program.cs yapıştırın.

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ı oluşturmak için chatClient'in createChatThread yöntemini kullanın.

  • Bu sohbete bir konu vermek için kullanın topic . sohbet yazışmasını oluşturduktan sonra işlevini kullanarak UpdateTopic konuyu güncelleştirebilirsiniz.
  • Sohbet dizisine eklenecek nesnelerin listesini aktarmak için participants özelliğini kullanın ChatParticipant. ChatParticipant Nesnesi bir CommunicationIdentifier nesneyle başlatılır. CommunicationIdentifier, CommunicationUserIdentifierveya MicrosoftTeamsUserIdentifiertüründe PhoneNumberIdentifierolabilir. Örneğin, bir CommunicationIdentifier 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 . Sohbet yazışması işlemleriyle, örneğin katılımcı ekleme, ileti gönderme, iletiyi silme vb., etkileşime geçmek için, istemci üzerinde GetChatThreadClient yöntemini kullanarak bir chatThreadClient istemci örneğinin ChatClient kurulması 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

GetChatThreadClient yöntemi, 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şlemler gerçekleştirmek için bunu kullanabilirsiniz: ü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 SendMessage kullanın.

  • İletinin içeriğini sağlamak için kullanın content . Gerekli.
  • İ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.
  • İsteğe bağlı: İletiyle birlikte göndermek istediğiniz diğer verileri de eklemek için 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, ondan sonra alınan, güncelleştirilen veya silinen iletileri alırsınız. Zaman diliminden önce alınan ancak daha sonra düzenlenen veya kaldırılan iletiler de döndürülür.

GetMessagesve UpdateMessagekullanılarak DeleteMessage 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.CreatedOnerişilebilir ve iletileri sıralamak için kullanılabilir.

GetMessages farklı türde iletiler döndürür. Türünü chatMessage.Type'dan tanımlayabilirsiniz. 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ı şu anda RichText iletileri gönderemiyor. 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 için desteklenir.

  • TopicUpdated: Konunun güncelleştirildiğini belirten sistem iletisi. (yalnızca okunabilir)

  • ParticipantAdded: Sohbete bir veya daha fazla katılımcının eklendiğini belirten sistem iletisi (salt okunur).

  • ParticipantRemoved: Bir katılımcının sohbet yazışmasından kaldırıldığını belirten sistem iletisi.

Daha fazla bilgi için bkz . İleti Türleri.

Sohbet yazışmasına katılımcı olarak kullanıcı ekleme

Bir konu oluşturulduktan sonra kullanıcıları ekleyebilir ve 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ı vardı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, zorunludur, iş parçacığı katılımcısının kimliğidir.
  • displayName, iş parçacığı katılımcısının görünen adıdır ve isteğe bağlı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);

Konuşma katılımcılarını alma

Sohbet yazışmasının katılımcılarını getirmek için GetParticipants kullanın.

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

Okundu makbuzu gönder

Diğer katılımcılara kullanıcının iletiyi okuduğunu 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

Bu makalenin son haline getirilmiş kodunu GitHub örneği Uygulamanıza Sohbet Ekleme bölümünde bulabilirsiniz.

Önkoşullar

  • 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. Bu makale 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 makale için kaynak uç noktanızı ve bağlantı dizenizi 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ç ve user_id dizelerini not edin. Bu makalede, ilk katılımcıyla bir iş parçacığı oluşturacak ve ardından iş parçacığına ikinci bir katılımcı ekleyacaksınız. Ayrıca Azure CLI'yi kullanabilir ve kullanıcı ve erişim belirteci oluşturmak için 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.

Kurulum

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 olarak Uygulama seçin.

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. Bu ayrıca bir Xcode çalışma alanı da oluşturur.

çalıştırdıktan pod installsonra, 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 makalede, kodunuzu öğesine viewControllerekler ve çıktıyı Xcode konsolunda görüntülersiniz. Bu makale, iOS'ta kullanıcı arabirimi oluşturmayı ele almaz.

öğesinin viewController.swiften üstünde ve AzureCommunication kitaplıklarını içeri aktarınAzureCommunicationChat:

import AzureCommunicationCommon
import AzureCommunicationChat

Aşağıdaki kodu yöntemine viewDidLoad()ViewControllerkopyalayı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 kullanırı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 kullanın.

Kullanıcı Erişim Belirteçleri hakkında daha fazla bilgi edinin.

Bu makale, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz, ancak bunu öneririz. Sohbet Mimarisi hakkında daha fazla bilgi edinin

Açıklamasını <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>. <ACCESS_TOKEN>'yi geçerli bir İletişim Hizmetleri erişim belirteci ile değiştirin.

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.

Adı Açıklama
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 ChatClientbir ö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 erişmek, 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. chatThread nesnesi olan bir ChatThreadProperties özelliği içerir. Bu nesne, oluşturulan iş parçacığında işlem gerçekleştirmek için kullanılabilecek bir ChatThreadClient elde etmeye yarayan threadId değerini içerir: katılımcı ekleme, ileti gönderme vb.

Açıklamasını <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()

<USER_ID> öğesini geçerli bir İletişim Hizmetleri kullanıcı kimliğiyle değiştirin.

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ıttaki threadId öğesini kullanın.

Tüm sohbet yazışmalarını listeleme

Sohbet yazışması oluşturduktan sonra, listChatThreads yöntemini ChatClient üzerinde çağırarak 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, halihazırda mevcut 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

Bir mesajı, threadId ile tanımlanan bir iş parçacığına göndermek için send 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 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öndermekten döndürülen yanıttır. İletinin benzersiz ID'sini içeren bir kimlik vardır.

Açıklamasını <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önder

sendReadReceipt yöntemini, kullanıcı adına bir okundu bildirimi etkinliğini sohbet yazışmasına göndermek için kullanın. messageId okunan sohbet iletisinin benzersiz kimliğidir.

<SEND A READ RECEIPT> açıklamasını 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.

<RECEIVE MESSAGES> açıklamasını aşağıdaki kodla değiştirin. Bildirimleri etkinleştirdikten sonra, ChatMessageReceivedEvents öğesini 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 kimliği edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için erişim belirtecine ihtiyacı vardı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.
  • displayNameisteğ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()

<USER_ID> öğesini eklenecek kullanıcının İletişim Hizmetleri kullanıcı kimliğiyle değiştirin.

Konudaki kullanıcıları listeleme

Belirli bir sohbet yazışması için tüm katılımcıları almak amacıyla listParticipants 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.

Daha fazla bilgi için bkz . Sohbet uygulamanızda Anında İletme Bildirimini Etkinleştirme.

Kodu çalıştırma

Xcode'da projeyi derlemek ve çalıştırmak için Çalıştır düğmesine basın. Konsolda, kodun çıkışını ve ChatClient'ın günlük çıkışını görüntüleyebilirsiniz.

Not:Build Settings > Build Options > Enable Bitcode'i No olarak ayarlayın. Şu anda iOS için AzureCommunicationChat SDK'sı bit kodunu etkinleştirmeyi desteklemiyor, aşağıdaki GitHub sorunu sorunu takip ediyor.

Örnek kod

Bu makalenin son haline getirilmiş kodunu GitHub örneği Uygulamanıza Sohbet Ekleme bölümünde bulabilirsiniz.

Önkoş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:

  1. 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.

  2. Bir işlem seçin arama kutusuna İletişim Hizmetleri Kimliği girin. Eylem listesinde Kullanıcı oluştur'u seçin.

    Azure İletişim Hizmetleri Kimlik bağlayıcısı Kullanıcı oluştur eylemini gösteren ekran görüntüsü.

  3. Bağlantı dizesini 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ğlantı dizesi'ni seçin. bağlantı dizesi kopyalamak için kopyala simgesini seçin.

    Azure İletişim Hizmetleri kaynağın Anahtarlar bölmesini gösteren ekran görüntüsü.

  4. Bağlantı için bir ad girin.

  5. Gelişmiş seçenekleri göster'i ve ardından belirteç kapsamını seçin. Eylem, belirtilen kapsamla bir erişim belirteci ve geçerlilik süresini oluşturur. Bu eylem, İletişim Hizmetleri kullanıcı kimliği olan bir kullanıcı kimliği de oluşturur.

    Azure İletişim Hizmetleri Kimlik bağlayıcısı Kullanıcı eylemi oluşturma seçeneklerini gösteren ekran görüntüsü.

  6. Belirteç Kapsamları Öğesi'nde sohbet'i seçin.

    Azure İletişim Hizmetleri Sohbet bağlayıcısı gelişmiş seçeneklerini gösteren ekran görüntüsü.

  7. Oluştur'u belirleyin. Kullanıcı kimliği ve erişim belirteci gösterilir.

Sohbet yazışması oluşturma

  1. Yeni bir eylem ekleyin.

  2. Bir işlem seçin arama kutusuna İletişim Hizmetleri Sohbet yazın. Eylem listesinde Sohbet yazışması oluştur'u seçin.

    Azure İletişim Hizmetleri Sohbet bağlayıcısı Sohbet yazışması oluşturma eylemini gösteren ekran görüntüsü.

  3. İ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.

  4. Bağlantı için bir ad girin.

  5. Ö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.

    Azure İletişim Hizmetleri Sohbet bağlayıcısı Sohbet yazışması oluştur eylem iletişim kutusunu gösteren ekran görüntüsü.

İleti gönderme

  1. Yeni bir eylem ekleyin.

  2. Bir işlem seçin araması kutusuna İletişim Hizmetleri Sohbeti yazın. Eylem listesinde İletiyi sohbet yazışmasına gönder'i seçin.

    sohbet bağlayıcısı Azure İletişim Hizmetleri Sohbet iletisi gönder eylemini gösteren ekran görüntüsü.

  3. Erişim belirtecini, iş parçacığı kimliğini, içeriği ve adı girin.

    Azure İletişim Hizmetleri Sohbet Bağlayıcısı'nın Sohbet İletisi Gönderme Eylemi iletişim kutusunu gösteren ekran görüntüsü.

Sohbet yazışma iletilerini listeleme

Bir iletiyi doğru gönderdiğinizi doğrulamak için:

  1. Yeni bir eylem ekleyin.

  2. Bir işlem seç arama kutusuna "İletişim Hizmetleri Sohbet" yazın. Eylem listesinde Sohbet yazışması iletilerini listele'yi seçin.

    Azure İletişim Hizmetleri Sohbet bağlayıcısı Sohbet iletilerini listele eylemini gösteren ekran görüntüsü.

  3. Erişim belirtecini ve konu kimliğini yazın.

    Azure İletişim Hizmetleri Sohbet bağlayıcısı Sohbet iletilerini listele eylem iletişim kutusunu gösteren ekran görüntüsü.

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.

Azure İletişim Hizmetleri Sohbet bağlayıcısı Sohbet iletisi gönder eylem sonuçlarını gösteren ekran görüntüsü.

İş akışı kaynaklarını temizleme

Mantıksal uygulama iş akışınızı ve ilgili kaynakları temizlemek için bkz. Logic Apps kaynaklarını temizleme.

Kaynakları temizleme

İletişim Hizmetleri aboneliğini temizlemek ve kaldırmak için kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Daha fazla bilgi için bkz. Kaynakları temizleme.

Sonraki adımlar

Bu makalede şunların nasıl yapıldığını açıklanmıştır:

  • Sohbet istemcisi oluşturma
  • İki kullanıcıyla bir konu oluşturma
  • İş parçacığına ileti gönderme
  • Bir konudan mesaj alma
  • Bir konudan kullanıcıları kaldırma