Hızlı Başlangıç: Uygulamanıza Sohbet Ekleme

Uygulamanıza gerçek zamanlı sohbet eklemek için İletişim Hizmetleri Sohbet SDK'sını kullanarak Azure İletişim Hizmetleri kullanmaya başlayın. Bu hızlı başlangıçta, kullanıcıların birbirleriyle konuşmalarını sağlayan sohbet yazışmaları oluşturmak için Sohbet SDK'sını kullanacağız. Sohbet kavramları hakkında daha fazla bilgi edinmek için sohbet kavramsal belgelerini ziyaret edin.

Ön koşullar

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

  • Etkin bir İletişim Hizmetleri kaynağı ve bağlantı dizesi. İletişim Hizmetleri kaynağı oluşturun.

  • Azure CLI'yı yükleyin.

  • İletişim Hizmetleri kaynak uç noktanızı not edin. Uç noktayı Azure portalından alabilirsiniz. Alternatif olarak, uç nokta URL'sini bağlantı dizesi bulabilirsiniz. Sonrasında gelen endpoint= ve ile başlayan URL'dir https://.

  • Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.

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

    Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.

Ayarlama

Uzantıyı ekleme

komutunu kullanarak Azure CLI için Azure İletişim Hizmetleri uzantısını az extension ekleyin.

az extension add --name communication

Azure CLI'da oturum açma

Azure CLI'da oturum açmanız gerekir. Terminalden komutunu çalıştırarak az login ve kimlik bilgilerinizi sağlayarak oturum açabilirsiniz.

(İsteğe bağlı) Uç nokta veya erişim belirteci geçirmeden Azure CLI kimlik işlemlerini kullanma

Uç noktanızı bir ortam değişkeninde depolama

Ortam değişkenini AZURE_COMMUNICATION_ENDPOINT , uç noktayı geçirmek için kullanmak zorunda kalmadan Azure CLI sohbet işlemlerini kullanacak --endpoint şekilde yapılandırabilirsiniz. Ortam değişkenini yapılandırmak için bir konsol penceresi açın ve aşağıdaki sekmelerden işletim sisteminizi seçin. değerini gerçek uç noktanızla değiştirin <yourEndpoint> .

Bir konsol penceresi açın ve aşağıdaki komutu girin:

setx AZURE_COMMUNICATION_ENDPOINT "<yourEndpoint>"

Ortam değişkenini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okumak için gereken tüm çalışan programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Erişim belirtecinizi bir ortam değişkeninde depolama

Ortam değişkenini, erişim belirtecini AZURE_COMMUNICATION_ACCESS_TOKEN geçirmek için kullanmak zorunda kalmadan Azure CLI sohbet işlemlerini kullanacak --access-token şekilde yapılandırabilirsiniz. Ortam değişkenini yapılandırmak için bir konsol penceresi açın ve aşağıdaki sekmelerden işletim sisteminizi seçin. değerini gerçek erişim belirtecinizle değiştirin <yourAccessToken> .

Bir konsol penceresi açın ve aşağıdaki komutu girin:

setx AZURE_COMMUNICATION_ACCESS_TOKEN "<yourAccessToken>"

Ortam değişkenini ekledikten sonra, konsol penceresi de dahil olmak üzere ortam değişkenini okumak için gereken tüm çalışan programları yeniden başlatmanız gerekebilir. Örneğin, düzenleyici olarak Visual Studio kullanıyorsanız, örneği çalıştırmadan önce Visual Studio'yu yeniden başlatın.

Operations

Sohbet yazışması başlatma

Sohbet yazışması thread create oluşturmak için komutunu kullanın.

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

Uç noktayı ve erişim belirtecini yukarıda belirtildiği gibi ortam değişkenlerinde depoladıysanız, bunları komuta geçirmeniz gerekmez.

az communication chat thread create --topic "<chatTopic>"
  • İş parçacığına bir konu vermek için kullanın <chatTopic> . Sohbet yazışması oluşturulduktan sonra komutunu kullanarak thread update-topic konuyu güncelleştirebilirsiniz.
  • değerini Azure İletişim Hizmetleri uç noktanızla değiştirin<endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak identity token issue değiştirin<token>.

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

az communication chat thread update-topic --thread "<chatThreadId>" --topic "<chatTopic>" --endpoint "<endpoint>" --access-token "<token>"
  • değerini sohbet yazışması kimliğiniz ile değiştirin <chatThreadId> .
  • değerini, ayarlamak istediğiniz yeni sohbet konusuyla değiştirin <chatTopic> .
  • değerini Azure İletişim Hizmetleri uç noktanızla değiştirin<endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak identity token issue değiştirin<token>.

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

komut, thread list kullanıcının sohbet yazışmalarının listesini döndürür.

az communication chat thread list --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
  • İsteğe bağlı olarak, sohbet iletilerini almak için zamanın en erken noktasını belirtmek için kullanın <startTime> .
  • değerini Azure İletişim Hizmetleri uç noktanızla değiştirin<endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak identity token issue değiştirin<token>.

Sohbet yazışmasına ileti gönderme

message send komutunu kullanarak oluşturduğunuz ve tarafından 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>"
  • değerini sohbet yazışması kimliğiniz ile değiştirin <chatThreadId> .
  • Sohbet iletisi içeriğini sağlamak için kullanın <content> .
  • İleti içerik türünü belirtmek için kullanın <messageType> . Olası değerler ve htmlşeklindedirtext. 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> .
  • değerini Azure İletişim Hizmetleri uç noktanızla değiştirin<endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak identity token issue değiştirin<token>.

Sohbet yazışmasında sohbet iletilerini listeleme

komutu, message list sohbet yazışmasındaki sohbet iletilerinin listesini döndürür.

az communication chat message list --thread "<chatThreadId>" --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
  • değerini sohbet yazışması kimliğiniz ile değiştirin <chatThreadId> .
  • İsteğe bağlı olarak, sohbet iletilerini almak için zamanın en erken noktasını belirtmek için kullanın <startTime> .
  • değerini Azure İletişim Hizmetleri uç noktanızla değiştirin<endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak identity token issue değiştirin<token>.

Sohbet yazışmasından sohbet iletisi alma

komutunu kullanarak message list sohbet iletilerini alabilirsiniz.

az communication chat message get --thread "<chatThreadId>" --message-id "<messageId>" --endpoint "<endpoint>" --access-token "<token>"
  • değerini sohbet yazışması kimliğiniz ile değiştirin <chatThreadId> .
  • değerini almak istediğiniz iletinin kimliğiyle değiştirin <messageId> .
  • değerini Azure İletişim Hizmetleri uç noktanızla değiştirin<endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak identity token issue değiştirin<token>.

Okundu bilgisi gönder

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

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

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

Sohbet yazışması oluşturduğunuzda, kullanıcı ekleyebilir ve bu yazışmadan kullanıcı kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara sohbet yazışmasına ileti gönderebilmeleri ve diğer katılımcıları ekleyebilmeleri veya kaldırabilmeleri için erişim vermiş olursunuz. Komutunu çağırmadan participant add önce, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun.

az communication chat participant add --thread "<chatThreadId>" --user "<userId>" --display-name "<displayName>" --start-time "<startTime>" --endpoint "<endpoint>" --access-token "<token>"
  • değerini sohbet yazışması kimliğiniz ile değiştirin <chatThreadId> .
  • değerini userId değerinizle değiştirin <userId> .
  • İsteğe bağlı olarak gönderenin görünen adını belirtmek için kullanın <displayName> .
  • İsteğe bağlı olarak, sohbet iletilerini almak için zamanın en erken noktasını belirtmek için kullanın <startTime> .
  • değerini Azure İletişim Hizmetleri uç noktanızla değiştirin<endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak identity token issue değiştirin<token>.

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

Katılımcı eklemeye benzer şekilde, bir iş parçacığındaki katılımcıları da listeleyebilirsiniz.

İş parçacığının katılımcılarını almak için komutunu kullanın participant list .

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

Sohbet yazışmasından katılımcı kaldırma

'katılımcı kaldır' komutunu kullanarak sohbet katılımcısını sohbet yazışmasından kaldırabilirsiniz.

az communication chat participant remove --thread "<chatThreadId>" --user "<userId>" --endpoint "<endpoint>" --access-token "<token>"
  • değerini sohbet yazışması kimliğiniz ile değiştirin <chatThreadId> .
  • yerine <userId> sohbet yazışmasından kaldırmak istediğiniz userId değerini girin.
  • değerini Azure İletişim Hizmetleri uç noktanızla değiştirin<endpoint>.
  • değerini, daha önce elde edilen erişim belirtecinizle komutunu çalıştırarak identity token issue değiştirin<token>.

Ön koşullar

Başlamadan önce şunları yaptığınızdan emin olun:

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

  • Node.js Active LTS ve Maintenance 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 hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.

  • Üç Azure İletişim Hizmetleri Kullanıcı oluşturun ve onlara bir Kullanıcı Erişim Belirteci gönderin. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Tam tanıtım, ilk iki katılımcıyla bir iş parçacığı oluşturur ve ardından iş parçacığına üçüncü bir katılımcı ekler. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.

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

    Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.

Ayarlama

Yeni web uygulaması oluşturma

İlk olarak, terminalinizi veya komut pencerenizi açın, uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.

mkdir chat-quickstart && cd chat-quickstart

Komutunu çalıştırarak npm init -y varsayılan ayarlarla bir package.json dosyası oluşturun.

npm init -y

Paketleri yükleme

npm install JavaScript için aşağıdaki İletişim Hizmetleri SDK'larını yüklemek için komutunu kullanın.

npm install @azure/communication-common --save

npm install @azure/communication-identity --save

npm install @azure/communication-signaling --save

npm install @azure/communication-chat --save

seçeneği, --save kitaplığı package.json dosyanızda bağımlılık olarak listeler.

Uygulama çerçevesini ayarlama

Bu hızlı başlangıçta uygulama varlıklarını paketlemek için paket kullanılır. Yüklemek ve package.json dosyasında geliştirme bağımlılığı olarak listelemek için aşağıdaki komutu çalıştırın:

npm install parcel --save-dev

Projenizin kök dizininde bir index.html dosyası oluşturun. JavaScript için Azure İletişim Sohbet SDK'sını kullanarak sohbet özelliği eklemek için bu dosyayı şablon olarak kullanacağız.

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

Bu hızlı başlangıcın uygulama mantığını içermesi için projenizin kök dizininde client.js adlı bir dosya oluşturun.

Sohbet istemcisi oluşturma

Web uygulamanızda sohbet istemcisi oluşturmak için İletişim Hizmeti uç noktasını ve önkoşul adımlarının bir parçası olarak oluşturulan erişim belirtecini kullanacaksınız.

Kullanıcı erişim belirteçleri, Azure İletişim Hizmetleri doğrudan kimlik doğrulaması yapabilen istemci uygulamaları oluşturmanıza olanak tanır. Bu hızlı başlangıç, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz. Sohbet mimarisi hakkında daha fazla bilgi için sohbet kavramlarına ve erişim belirteçleri hakkında daha fazla bilgi için kullanıcı erişim belirteçlerine bakın.

client.js içinde, JavaScript için Azure İletişim Sohbet SDK'sını kullanarak sohbet özelliği eklemek üzere aşağıdaki kodda yer alan uç noktayı ve erişim belirtecini kullanın.


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

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

let chatClient = new ChatClient(endpointUrl, new AzureCommunicationTokenCredential(userAccessToken));
console.log('Azure Communication Chat client created!');
  • endpointUrl değerini İletişim Hizmetleri kaynak uç noktasıyla değiştirin. Daha önce yapmadıysanız bkz. Azure İletişim Hizmetleri kaynağı oluşturma.
  • userAccessToken değerini, sizin yayımladığınız belirteçle değiştirin.

Kodu çalıştırma

Uygulamanızı çalıştırmak için aşağıdaki komutu çalıştırın:

npx parcel index.html

Tarayıcınızı açın ve http://localhost:1234/. Tarayıcınızdaki geliştirici araçları konsolunda aşağıdakileri görmeniz gerekir:

Azure Communication Chat client created!

Nesne modeli

Aşağıdaki sınıflar ve arabirimler JavaScript için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.

Dosya Adı Tanım
ChatClient Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve yazışmaları oluşturmak, almak, silmek ve sohbet olaylarına abone olmak için kullanırsınız.
ChatThreadClient Sohbet Yazışması işlevselliği için bu sınıf gereklidir. ChatClient aracılığıyla bir örnek alırsınız ve bu örneği iletileri göndermek/almak/güncelleştirmek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için kullanırsınız.

Sohbet yazışması başlatma

Sohbet yazışması createThread oluşturmak için yöntemini kullanın.

createThreadRequest iş parçacığı isteğini açıklamak için kullanılır:

  • Bu sohbete bir konu vermek için kullanın topic . Sohbet yazışması işlevi kullanı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ümlendiğinde yöntemi createChatThread bir CreateChatThreadResultdöndürür. Bu model, yeni oluşturulan iş parçacığına id erişebileceğiniz bir chatThread özellik içerir. Daha sonra örneğini almak ChatThreadClientiçin öğesini id kullanabilirsiniz. ChatThreadClient daha sonra, ileti gönderme veya katılımcıları listeleme gibi iş parçacığı içinde işlem gerçekleştirmek için kullanılabilir.

async function createChatThread() {
  const createChatThreadRequest = {
    topic: "Hello, World!"
  };
  const createChatThreadOptions = {
    participants: [
      {
        id: { communicationUserId: '<USER_ID>' },
        displayName: '<USER_DISPLAY_NAME>'
      }
    ]
  };
  const createChatThreadResult = await chatClient.createChatThread(
    createChatThreadRequest,
    createChatThreadOptions
  );
  const threadId = createChatThreadResult.chatThread.id;
  return threadId;
}

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

Tarayıcı sekmenizi yenilediğinizde konsolda aşağıdakileri görmeniz gerekir:

Thread created: <thread_id>

Sohbet yazışması istemcisi alma

getChatThreadClient yöntemi, zaten var olan bir iş parçacığı için bir chatThreadClient döndürür. Oluşturulan yazışmada işlem gerçekleştirmek için kullanılabilir: katılımcı ekleme, ileti gönderme vb. threadId, mevcut sohbet yazışmasının benzersiz kimliğidir.

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

client.js dosyasında açıklamanın <CREATE CHAT THREAD CLIENT> yerine bu kodu ekleyin, tarayıcı sekmenizi yenileyin ve konsolu kontrol edin, şunları görmeniz gerekir:

Chat Thread client for threadId: <threadId>

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

listChatThreads yöntemi türünde ChatThreadItembir PagedAsyncIterableIterator döndürür. Tüm sohbet yazışmalarını listelemek için kullanılabilir. yineleyicisi [ChatThreadItem] , iş parçacıklarını listelemeden döndürülen yanıttır

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

Sohbet yazışmasına ileti gönderme

ThreadId tarafından tanımlanan bir iş parçacığına ileti göndermek için yöntemini kullanın sendMessage .

sendMessageRequest , ileti isteğini açıklamak için kullanılır:

  • Sohbet iletisi içeriğini sağlamak için kullanın content ;

sendMessageOptions isteğe bağlı parametreleri tanımlamak için kullanılır:

  • Gönderenin görünen adını belirtmek için kullanın senderDisplayName ;
  • 'text' veya 'html' gibi ileti türünü belirtmek için kullanın type ;
  • İletiyle birlikte göndermek istediğiniz diğer verileri eklemek için isteğe bağlı olarak kullanın metadata . Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve buna göre görüntüleyebilmesi için meta verilere 'hasAttachment: true' eklemek isteyebilirsiniz.

SendChatMessageResult , ileti göndermeden döndürülen yanıttır, iletinin benzersiz kimliği olan bir kimlik içerir.

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

client.js dosyasında açıklamanın <SEND MESSAGE TO A CHAT THREAD> yerine bu kodu ekleyin, tarayıcı sekmenizi yenileyin ve konsolu denetleyin.

Message sent!, message id:<number>

Sohbet yazışmasından sohbet iletileri alma

Gerçek zamanlı sinyalle, yeni gelen iletileri dinlemek için abone olabilir ve bellekteki geçerli iletileri uygun şekilde güncelleştirebilirsiniz. Azure İletişim Hizmetleri abone olabileceğiniz olayların listesini destekler.

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

Bu kodu client.js dosyasındaki açıklamanın <RECEIVE A CHAT MESSAGE FROM A CHAT THREAD> yerine ekleyin. Tarayıcı sekmenizi yenileyin, konsolda bir ileti Notification 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
}

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

listMessages tarafından chatMessage.typetanımlanabilen farklı ileti türlerini döndürür.

Diğer ayrıntılar için bkz . İleti Türleri.

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

Sohbet yazışması oluşturulduktan sonra kullanıcı ekleyip kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara sohbet yazışmasına ileti gönderme ve diğer katılımcıları ekleme/kaldırma erişimi vermiş olursunuz.

yöntemini çağırmadan addParticipants önce, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı olacaktır.

addParticipantsRequest sohbet yazışmasına eklenecek katılımcıların listelendiği participants istek nesnesini açıklar;

  • id, gerekli, sohbet yazışmasına eklenecek iletişim tanımlayıcısıdır.
  • 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ığı zamandır. Sohbet yazışmasının başlangıcından bu yana geçmişi paylaşmak için bu özelliği iş parçacığı oluşturma süresine eşit veya ondan daha kısa bir tarihe ayarlayın. Katılımcının eklendiği tarihten önceki bir geçmişi paylaşmak için geçerli tarihe ayarlayın. Kısmi geçmişi paylaşmak için istediğiniz tarihe ayarlayın.

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

await chatThreadClient.addParticipants(addParticipantsRequest);

NEW_PARTICIPANT_USER_ID yeni bir kullanıcı kimliğiyle değiştirin Client.js dosyasında açıklamanın <ADD NEW PARTICIPANT TO THREAD> yerine bu kodu ekleyin

Sohbet yazışmasında kullanıcıları listeleme

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

client.js dosyasında açıklamanın <LIST PARTICIPANTS IN A THREAD> yerine bu kodu ekleyin, tarayıcı sekmenizi yenileyin ve konsolunu denetleyin; bir yazışmadaki kullanıcılar hakkında bilgi görmeniz gerekir.

Sohbet yazışmasından kullanıcı kaldırma

Katılımcı eklemeye benzer şekilde, katılımcıları sohbet yazışmasından kaldırabilirsiniz. Kaldırmak için, eklediğiniz katılımcıların kimliklerini izlemeniz gerekir.

İletişim kullanıcısının iş parçacığından kaldırılacağı yöntemi participant kullanınremoveParticipant.


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

PARTICIPANT_ID önceki adımda< (NEW_PARTICIPANT_USER_ID>) kullanılan kullanıcı kimliğiyle değiştirin. Bu kodu client.js dosyasındaki açıklamanın <REMOVE PARTICIPANT FROM THREAD> yerine ekleyin.

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

Olaylara realTimeNotificationConnected abone olun ve realTimeNotificationDisconnected çağrı sunucusuna bağlantının ne zaman etkin olduğunu bilmenize olanak tanır.

// subscribe to realTimeNotificationConnected event
chatClient.on('realTimeNotificationConnected', () => {
  console.log("Real time notification is now connected!");
  // your code here
});
// subscribe to realTimeNotificationDisconnected event
chatClient.on('realTimeNotificationDisconnected', () => {
  console.log("Real time notification is now disconnected!");
  // your code here
});

Örnek Kod

GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.

Ön koşullar

Başlamadan önce şunları yaptığınızdan emin olun:

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

  • Python 3.7+ sürümünü yükleyin.

  • Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz . Hızlı Başlangıç: İletişim Hizmetleri kaynaklarını oluşturma ve yönetme. Bu hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.

  • Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.

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

    Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.

Ayarlama

Yeni Python uygulaması oluşturma

Terminalinizi veya komut pencerenizi açın, uygulamanız için yeni bir dizin oluşturun ve bu dizine gidin.

mkdir chat-quickstart && cd chat-quickstart

Proje kök dizininde start-chat.py adlı bir dosya oluşturmak için bir metin düzenleyicisi kullanın. Temel özel durum işleme dahil olmak üzere programın yapısını ekleyin. Aşağıdaki bölümlerde, bu hızlı başlangıcın tüm kaynak kodunu bu dosyaya ekleyeceksiniz.

import os
# Add required SDK components from quickstart here

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

SDK yükleme

SDK'yi yüklemek için aşağıdaki komutu kullanın:


pip install azure-communication-chat

Nesne modeli

Aşağıdaki sınıflar ve arabirimler Python için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.

Dosya Adı Tanım
ChatClient Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve iş parçacıkları oluşturmak, almak ve silmek için kullanırsınız.
ChatThreadClient Bu sınıf, sohbet yazışması işlevselliği için gereklidir. aracılığıyla 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 almak, yazma bildirimleri ve okundu bilgileri göndermek için de kullanabilirsiniz.

Sohbet istemcisi oluşturma

Sohbet istemcisi oluşturmak için, önkoşul adımlarının bir parçası olarak oluşturduğunuz İletişim Hizmetleri uç noktasını ve erişim belirtecini kullanın.

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

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

Bu hızlı başlangıç, sohbet uygulamanız için belirteçleri yönetmek üzere bir hizmet katmanı oluşturmayı kapsamaz, ancak bu önerilir. Daha fazla bilgi için Sohbet kavramlarının "Sohbet mimarisi" bölümüne bakın.

Sohbet yazışması başlatma

Sohbet yazışması create_chat_thread oluşturmak için yöntemini kullanın.

  • İş parçacığına bir konu vermek için kullanın topic . sohbet yazışması oluşturulduktan sonra işlevini kullanarak update_thread konuyu güncelleştirebilirsiniz.
  • Sohbet yazışmasına eklenecek öğesini listelemek ChatParticipant için kullanınthread_participants. türü ChatParticipant olarak useralırCommunicationUserIdentifier.

CreateChatThreadResult , bir iş parçacığı oluşturmanın sonucudur. Oluşturulan sohbet yazışmasını id getirmek için bunu kullanabilirsiniz. Bu id daha sonra yöntemini kullanarak get_chat_thread_client bir ChatThreadClient nesneyi getirmek için kullanılabilir. Bu sohbet yazışmasına yönelik diğer sohbet işlemlerini gerçekleştirmek için kullanabilirsiniz ChatThreadClient .

topic="test topic"

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

Sohbet yazışması istemcisi alma

yöntemi, get_chat_thread_client zaten var olan bir iş parçacığı için bir iş parçacığı istemcisi döndürür. Oluşturulan iş parçacığında işlem gerçekleştirmek için bunu kullanabilirsiniz. Örneğin, katılımcı ekleyebilir ve ileti gönderebilirsiniz. thread_id mevcut sohbet yazışmasının benzersiz kimliğidir.

Bu sohbet yazışmasına yönelik diğer sohbet işlemlerini gerçekleştirmek için kullanabilirsiniz ChatThreadClient .

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

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

list_chat_threads yöntemi türünde 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

send_message yeni oluşturduğunuz ve tarafından thread_idtanımlanan bir sohbet yazışmasına ileti göndermek için yöntemini kullanın.

  • Sohbet iletisi içeriğini sağlamak için kullanın content .
  • İleti içerik türünü belirtmek için kullanın chat_message_type . Olası değerler ve htmlşeklindedirtext. 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 ek verileri eklemek için isteğe bağlı olarak kullanın metadata . Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve buna göre görüntüleyebilmesi için meta verilere 'hasAttachment:true' eklemek isteyebilirsiniz.

SendChatMessageResult , ileti göndermekten döndürülen yanıttır. İletinin benzersiz kimliği olan bir kimlik içerir.

from azure.communication.chat import ChatMessageType

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


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

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

Sohbet yazışmasından sohbet iletileri alma

Yöntemi belirtilen aralıklarla yoklayarak list_messages sohbet iletilerini alabilirsiniz.

  • Sayfa başına döndürülecek en fazla ileti sayısını belirtmek için kullanın results_per_page .
  • İletileri almak için en erken noktayı belirtmek için kullanın start_time .

yineleyicisi [ChatMessage] , iletilerin listelenmesinden döndürülen yanıttır.

from datetime import datetime, timedelta

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

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

list_messagesve delete_messagekullanarak update_message iletide gerçekleşen tüm düzenlemeler veya silmeler de dahil olmak üzere iletinin en son sürümünü döndürür. Silinen iletiler için, ChatMessage.deleted_on bu iletinin ne zaman silindiğini belirten bir datetime değer döndürür. Düzenlenen iletiler için, ChatMessage.edited_on iletinin ne zaman düzenlendiğini belirten bir datetime değer döndürür. kullanarak, iletileri sıralamak için kullanılabilecek özgün ileti oluşturma ChatMessage.created_onzamanına erişebilirsiniz.

list_messages tarafından tanımlanabilen ChatMessage.typefarklı ileti türlerini döndürür.

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

Okundu bilgisi gönder

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

  • Geçerli kullanıcı tarafından okunan en son iletinin kimliğini belirtmek için kullanın message_id .
content='hello world'

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

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

Sohbet yazışması oluşturduğunuzda, kullanıcı ekleyebilir ve bu yazışmadan kullanıcı kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara sohbet yazışmasına ileti gönderebilmeleri ve diğer katılımcıları ekleyebilmeleri veya kaldırabilmeleri için erişim vermiş olursunuz. yöntemini çağırmadan add_participants önce, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı vardır.

Yeni bir erişim belirteci ve kimliği tüm kullanıcılar için kullanılabilir olması koşuluyla yöntemini kullanarak add_participants sohbet yazışmasına bir veya daha fazla kullanıcı ekleyebilirsiniz.

döndürülür list(tuple(ChatParticipant, CommunicationError)) . Katılımcı başarıyla eklendiğinde boş bir liste beklenir. Katılımcı eklerken hatayla karşılaşırsanız, liste başarısız katılımcılarla ve karşılaşılan hatayla doldurulur.

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

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

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

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

response = chat_thread_client.add_participants(participants)

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

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

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

Katılımcı eklemeye benzer şekilde, bir iş parçacığındaki katılımcıları da listeleyebilirsiniz.

İş parçacığının katılımcılarını almak için kullanın list_participants . Aşağıdaki komutların her ikisi de isteğe bağlıdır:

  • Sayfa başına döndürülecek en fazla katılımcı sayısını belirtmek için kullanın results_per_page .
  • Katılımcıları yanıtta belirtilen bir konuma atlamak için kullanın skip .

Yineleyicisi [ChatParticipant] , liste katılımcılarından döndürülen yanıttır.

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

Kodu çalıştırma

komutunu kullanarak python uygulamayı uygulama dizininizden çalıştırın.

python start-chat.py

Örnek Kod

GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.

Ön koşullar

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

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

  • Apache Maven.

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

  • Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.

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

    Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.

Ayarlama

Yeni java uygulaması oluşturma

Terminalinizi veya komut pencerenizi açın ve Java uygulamanızı oluşturmak istediğiniz dizine gidin. Maven-archetype-quickstart şablonundan Java projesi oluşturmak için aşağıdaki komutu çalıştırın.

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

'Oluştur' hedefinin artifactId ile aynı ada sahip bir dizin oluşturduğunu göreceksiniz. Bu dizin altında, src/main/java directory proje kaynak kodunu içerir, src/test/java dizin test kaynağını içerir ve pom.xml dosyası projenin Proje Nesne Modeli veya POM'dir.

Uygulamanızın POM dosyasını Java 8 veya üzerini kullanacak şekilde güncelleştirin:

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

Sohbet SDK'sı için paket başvurularını ekleme

POM dosyanızda, Sohbet API'leri ile pakete başvurun azure-communication-chat :

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

Kimlik doğrulaması için istemcinizin pakete başvurması azure-communication-common gerekir:

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

Nesne modeli

Aşağıdaki sınıflar ve arabirimler Java için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.

Dosya Adı Tanım
ChatClient Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve iş parçacıkları oluşturmak, almak ve silmek için kullanırsınız.
ChatAsyncClient Bu sınıf, zaman uyumsuz Sohbet işlevselliği için gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve iş parçacıkları oluşturmak, almak ve silmek için kullanırsınız.
ChatThreadClient Sohbet Yazışması işlevselliği için bu sınıf gereklidir. ChatClient aracılığıyla bir örnek alırsınız ve bu örneği iletileri göndermek/almak/güncelleştirmek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için kullanırsınız.
ChatThreadAsyncClient Bu sınıf, zaman uyumsuz Sohbet Yazışması işlevselliği için gereklidir. ChatAsyncClient aracılığıyla bir örnek alırsınız ve iletileri göndermek/almak/güncelleştirmek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için bu örneği kullanırsınız.

Sohbet istemcisi oluşturma

Sohbet istemcisi oluşturmak için İletişim Hizmeti uç noktasını ve önkoşul adımlarının bir parçası olarak oluşturulan erişim belirtecini kullanacaksınız. Kullanıcı erişim belirteçleri, Azure İletişim Hizmetleri doğrudan kimlik doğrulaması yapabilen istemci uygulamaları oluşturmanıza olanak tanır. Bu belirteçleri sunucunuzda oluşturduktan sonra bir istemci cihazına geri geçirin. Belirteci sohbet istemcinize geçirmek için Common SDK'dan CommunicationTokenCredential sınıfını kullanmanız gerekir.

Sohbet Mimarisi hakkında daha fazla bilgi edinin

İçeri aktarma deyimlerini eklerken, com.azure.communication.chat.implementation ad alanından değil yalnızca com.azure.communication.chat ve com.azure.communication.chat.models ad alanından içeri aktarmalar eklediğinizden emin olun. Maven aracılığıyla oluşturulan App.java dosyasında, başlangıç olarak aşağıdaki kodu kullanabilirsiniz:

package com.communication.quickstart;

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

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

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

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

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

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

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

Sohbet yazışması başlatma

Sohbet yazışması createChatThread oluşturmak için yöntemini kullanın. createChatThreadOptions iş parçacığı isteğini açıklamak için kullanılır.

  • Bu sohbete topic bir konu vermek için oluşturucunun parametresini kullanın; Konu, sohbet yazışması işlevi kullanılarak UpdateThread oluşturulduktan sonra güncelleştirilebilir.
  • İş parçacığına eklenecek iş parçacığı katılımcılarını listelemek için kullanın participants . ChatParticipant, Kullanıcı Erişim Belirteci hızlı başlangıcında oluşturduğunuz kullanıcıyı alır.

CreateChatThreadResult , sohbet yazışması oluşturmaktan döndürülen yanıttır. Oluşturulan iş parçacığında ChatThread işlem gerçekleştirmek için alabileceğiniz iş parçacığı istemcisini almak için kullanılabilecek nesneyi döndüren ChatThreadClient bir getChatThread() yöntem içerir: katılımcı ekleme, ileti gönderme vb. ChatThread nesnesi, iş parçacığının getId() benzersiz kimliğini alan yöntemini de içerir.

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

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

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

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

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

Sohbet yazışmalarını listeleme

listChatThreads Mevcut sohbet yazışmalarının listesini almak için yöntemini kullanın.

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

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

Sohbet yazışması istemcisi alma

yöntemi, getChatThreadClient zaten var olan bir iş parçacığı için bir iş parçacığı istemcisi döndürür. Oluşturulan iş parçacığında işlem gerçekleştirmek için kullanılabilir: katılımcı ekleme, ileti gönderme vb. chatThreadId mevcut sohbet yazışmasının benzersiz kimliğidir.

ChatThreadClient chatThreadClient = chatClient.getChatThreadClient(chatThreadId);

Sohbet yazışmasına ileti gönderme

sendMessage oluşturduğunuz yazışmaya chatThreadId ile tanımlanan bir ileti göndermek için yöntemini kullanın. sendChatMessageOptions , sohbet iletisi isteğini açıklamak için kullanılır.

  • Sohbet iletisi içeriğini sağlamak için kullanın content .
  • Sohbet iletisi içerik türünü,METNEÇEVİr veya HTML belirtmek için kullanın type .
  • Gönderenin görünen adını belirtmek için kullanın senderDisplayName .
  • İletiyle birlikte göndermek istediğiniz ek verileri eklemek için isteğe bağlı olarak kullanın metadata . Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve uygun şekilde görüntüleyebilmesi için meta veriler 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 .deleteMessage()kullanılarak .editMessage() iletiye yapılan tüm düzenlemeler veya silmeler de dahil olmak üzere iletinin en son sürümünü döndürür. Silinen iletiler için, chatMessage.getDeletedOn() bu iletinin ne zaman silindiğini belirten bir tarih saat değeri döndürür. Düzenlenen iletiler için, chatMessage.getEditedOn() iletinin ne zaman düzenlendiğini belirten bir tarih saat döndürür. İleti oluşturma işleminin özgün zamanına kullanılarak chatMessage.getCreatedOn()erişilebilir ve iletileri sıralamak için kullanılabilir.

İleti türleri hakkında daha fazla bilgiyi burada bulabilirsiniz: İleti Türleri.

Okundu bilgisi gönder

sendReadReceipt Kullanıcı adına bir okundu bilgisi olayını sohbet yazışmasına göndermek için yöntemini kullanın. chatMessageId okunan sohbet iletisinin benzersiz kimliğidir.

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

Sohbet katılımcılarını listeleme

chatThreadId tarafından tanımlanan sohbet yazışmasının katılımcılarını içeren sayfalanmış koleksiyonu almak için kullanın listParticipants .

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

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

Sohbet yazışması oluşturulduktan sonra kullanıcı ekleyip kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara sohbet yazışmasına ileti gönderme ve diğer katılımcıları ekleme/kaldırma erişimi vermiş olursunuz. Bu kullanıcı için yeni bir erişim belirteci ve kimlik alarak işe başlamanız gerekir. addParticipants yöntemini çağırmadan önce, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı olacaktır.

İş parçacığına addParticipants katılımcı eklemek için yöntemini kullanın.

  • communicationIdentifiergerekli, Kullanıcı Erişim Belirteci hızlı başlangıcında CommunicationIdentityClient tarafından oluşturduğunuz CommunicationIdentifier'dır.
  • 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ığı zamandır. Sohbet yazışmasının başlangıcından bu yana geçmişi paylaşmak için bu özelliği iş parçacığı oluşturma süresine eşit veya ondan daha kısa bir tarihe ayarlayın. Katılımcının eklendiği tarihten önceki bir geçmişi paylaşmak için geçerli tarihe ayarlayın. Kısmi geçmişi paylaşmak için gerekli tarihe ayarlayın.
List<ChatParticipant> participants = new ArrayList<ChatParticipant>();

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

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

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

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

chatThreadClient.addParticipants(participants);

Kodu çalıştırma

pom.xml dosyasını içeren dizine gidin ve aşağıdaki mvn komutu kullanarak projeyi derleyin.

mvn compile

Ardından paketi derleyin.

mvn package

Uygulamayı yürütmek için aşağıdaki mvn komutu çalıştırın.

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

Örnek Kod

GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.

Ön koşullar

Başlamadan önce şunları yaptığınızdan emin olun:

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

  • Android Studio'yu yükledikten sonra, bağımlılıkları yüklemek üzere hızlı başlangıç için bir Android uygulaması oluşturmak üzere Android Studio kullanacağız.

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

  • İki İletişim Hizmeti Kullanıcısı oluşturun ve onlara bir Kullanıcı Erişim Belirteci gönderin. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Bu hızlı başlangıçta, ilk katılımcıyla bir iş parçacığı oluşturacak ve ardından iş parçacığına ikinci bir katılımcı ekleyeceğiz. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.

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

    Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.

Ayarlama

Yeni bir android uygulaması oluşturma

  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 kullanacağız. Komut satırından projenin kök dizininde gezinin ChatQuickstart . Uygulamanın build.gradle dosyasını açın ve hedefe aşağıdaki bağımlılıkları ChatQuickstart ekleyin:

implementation 'com.azure.android:azure-communication-common:' + $azureCommunicationCommonVersion
implementation 'com.azure.android:azure-communication-chat:' + $azureCommunicationChatVersion
implementation 'org.slf4j:slf4j-log4j12:1.7.29'

En son sürüm numaraları için lütfen ve https://search.maven.org/artifact/com.azure.android/azure-communication-chat bölümüne bakınhttps://search.maven.org/artifact/com.azure.android/azure-communication-common.

Kök build.gradle dosyasındaki paketleme seçeneklerindeki meta dosyaları dışlama

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

(Alternatif) Maven aracılığıyla kitaplıkları yüklemek için

Maven derleme sistemini kullanarak kitaplığı projenize aktarmak içindependencies, uygulamanızın pom.xml dosyasının bölümüne ekleyin ve yapıt kimliğini ve kullanmak istediğiniz sürümü belirtin:

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

Azure işlevini ayarlama

Ayrıntılar için lütfen Azure İşlevi tümleştirmesini inceleyin. Uygulama parametrelerinin sabit kodlanmasından kaçınmak için Azure İşlevi ile tümleştirmeyi kesinlikle öneririz.

Uygulama sabitlerini ayarlama:

Tüm uygulama sabitlerini depolayan bir sınıf ApplicationConstants oluşturun:

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

Yer tutucuları ayarlama

dosyasını MainActivity.javaaçın ve düzenleyin. Bu hızlı başlangıçta kodumuzu öğesine MainActivityekleyeceğiz ve çıkışı konsolunda görüntüleyeceğiz. Bu hızlı başlangıç, kullanıcı arabirimi oluşturmaya yönelik değildir. Dosyanın üst kısmında , Azure Communication Chatve diğer sistem kitaplıklarını içeri aktarınAzure Communication Common:

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

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

import com.jakewharton.threetenabp.AndroidThreeTen;

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

Dosyasındaki MainActivity.javasınıfına MainActivity aşağıdaki kodu kopyalayın:

    private ChatAsyncClient chatAsyncClient;

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

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

            // <CREATE A CHAT CLIENT>

            // <CREATE A CHAT THREAD>

            // <CREATE A CHAT THREAD CLIENT>

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

            // <ADD A USER>

            // <LIST USERS>

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

Uygulama Parametrelerini Başlatma

Dekont

ApplicationConstants Aşağıdaki koşullardan biri karşılanırsa, başlatmanın eklenmesi MainActivity.java gerekir: 1. Anında iletme bildirimi özelliği ETKIN DEĞİlDİr. 2. Android için Azure İletişim Sohbeti kitaplığının sürümü '2.0.0'dır < . Aksi takdirde lütfen Android anında iletme bildirimlerinde 11. adıma bakın. Başvuru için kullandığınız SDK sürümünün örnek UYGULAMASına bakın.

ACS_ENDPOINTve FIRST_USER_ID FIRST_USER_ACCESS_TOKEN Azure İşlevi çağrılır. Ayrıntılar için lütfen Azure İşlevi tümleştirmesini inceleyin. Parametre listesini başlatmak için Azure İşlevi'ni çağırma yanıtını kullanırız:

  • ACS_ENDPOINT: İletişim Hizmetleri kaynağınızın uç noktası.
  • FIRST_USER_ID 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: için <FIRST_USER_ID>iletişim Hizmetleri erişim belirteci.

Azure İşlevi'ni çağırarak uygulama parametrelerini başlatmak için kod bloğu:

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

Sohbet istemcisi oluşturma

açıklamasını <CREATE A CHAT CLIENT> aşağıdaki kodla değiştirin (içeri aktarma deyimlerini dosyanın en üstüne yerleştirin):

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

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

Nesne modeli

Aşağıdaki sınıflar ve arabirimler JavaScript için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.

Dosya Adı Tanım
ChatClient/ChatAsyncClient Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve yazışmaları oluşturmak, almak, silmek ve sohbet olaylarına abone olmak için kullanırsınız.
ChatThreadClient/ChatThreadAsyncClient Sohbet Yazışması işlevselliği için bu sınıf gereklidir. ChatClient aracılığıyla bir örnek alırsınız ve bu örneği iletileri göndermek/almak/güncelleştirmek/silmek, kullanıcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için kullanırsınız.

Sohbet yazışması başlatma

İlk kullanıcıyla yeni bir iş parçacığı oluşturmak için öğesini ChatAsyncClient kullanacağız.

<CREATE A CHAT THREAD> açıklamasını aşağıdaki kodla değiştirin:

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

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

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

Sohbet yazışması istemcisi alma

Artık bir Sohbet yazışması oluşturduğumuza göre, iş parçacığı içinde işlemler gerçekleştirmek için bir ChatThreadAsyncClient a alacağız. <CREATE A CHAT THREAD CLIENT> açıklamasını aşağıdaki kodla değiştirin:

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

Sohbet yazışmasına ileti gönderme

Şimdi bu yazışmaya ileti göndereceğiz.

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

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

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

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

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

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

Sohbet yazışmasından sohbet iletileri alma

Gerçek zamanlı bildirimler

Gerçek zamanlı sinyalle yeni gelen iletilere abone olabilir ve bellekteki geçerli iletileri uygun şekilde güncelleştirebilirsiniz. Azure İletişim Hizmetleri abone olabileceğiniz olayların listesini destekler.

açıklamasını <RECEIVE CHAT MESSAGES> aşağıdaki kodla değiştirin (içeri aktarma deyimlerini dosyanın en üstüne yerleştirin):


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

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

Önemli

Bilinen sorun: Android Sohbet ve Arama SDK'sını aynı uygulamada birlikte kullanırken Sohbet SDK'sının gerçek zamanlı bildirimler özelliği çalışmaz. Bağımlılık çözme sorunuyla karşı karşıya olabilirsiniz. Bir çözüm üzerinde çalışırken, uygulamanın build.gradle dosyasına aşağıdaki bağımlılık bilgilerini ekleyerek gerçek zamanlı bildirimler özelliğini kapatabilir ve bunun yerine GetMessages API'sini yoklayarak kullanıcılara gelen iletileri görüntüleyebilirsiniz.

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

Yukarıdaki güncelleştirmeyle birlikte, uygulama veya chatAsyncClient.addEventHandler()gibi chatAsyncClient.startRealtimeNotifications() bildirim API'lerinden herhangi birine dokunmaya çalışırsa çalışma zamanı hatası olacağını unutmayın.

Anında iletme bildirimleri

Ayrıntılar için lütfen Android anında iletme bildirimlerine göz atın.

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

<ADD A USER> açıklamasını aşağıdaki kodla değiştirin:

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

İş parçacığındaki kullanıcıları listeleme

<LIST USERS> açıklamasını aşağıdaki kodla değiştirin (içeri aktarma deyimlerini dosyanın en üstüne yerleştirin):

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

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

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

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

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

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

Sohbet yazışmasından kullanıcı kaldırma

şimdi iş parçacığından ikinci kullanıcıyı kaldıracağız.

<REMOVE A USER> açıklamasını aşağıdaki kodla değiştirin:

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

Yazma bildirimi gönderme

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

chatThreadAsyncClient.sendTypingNotification().get();

Okundu bilgisi gönderme

Yukarıda gönderilen ileti için okundu bilgisi göndereceğiz.

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

chatThreadAsyncClient.sendReadReceipt(chatMessageId).get();

Okundu bilgilerini listeleme

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

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

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

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

Kodu çalıştırma

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

Örnek Kod

GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.

Ön koşullar

Başlamadan önce şunları yaptığınızdan emin olun:

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

  • Visual Studio'yu yükleme

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

  • Kullanıcı Erişim Belirteci. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.

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

    Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.

Ayarlama

Yeni bir C# uygulaması oluşturma

Bir konsol penceresinde (cmd, PowerShell veya Bash gibi), adlı ChatQuickstartyeni bir konsol uygulaması oluşturmak için komutunu kullanındotnet new. Bu komut, tek bir kaynak dosyası olan basit bir "Merhaba Dünya" C# projesi oluşturur: Program.cs.

dotnet new console -o ChatQuickstart

Dizininizi yeni oluşturulan uygulama klasörüne değiştirin ve komutunu kullanarak dotnet build uygulamanızı derleyin.

cd ChatQuickstart
dotnet build

paketini yükleyin

.NET için Azure İletişim SohbetI SDK'sını yükleme

dotnet add package Azure.Communication.Chat

Nesne modeli

Aşağıdaki sınıflar C# için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.

Dosya Adı Tanım
ChatClient Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve iş parçacıkları oluşturmak, almak ve silmek için kullanırsınız.
ChatThreadClient Sohbet Yazışması işlevselliği için bu sınıf gereklidir. ChatClient aracılığıyla bir örnek alırsınız ve bu örneği iletileri göndermek/almak/güncelleştirmek/silmek, katılımcı eklemek/kaldırmak/almak, yazma bildirimleri göndermek ve okundu bilgilerini okumak için kullanırsınız.

Sohbet istemcisi oluşturma

Sohbet istemcisi oluşturmak için İletişim Hizmetleri uç noktanızı ve önkoşul adımlarının bir parçası olarak oluşturulan erişim belirtecini kullanacaksınız. Kullanıcı oluşturmak ve sohbet istemcinize geçirmek üzere bir belirteç vermek için Kimlik SDK'sından sınıfını kullanmanız CommunicationIdentityClient gerekir.

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

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

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

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

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

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

Sohbet yazışması başlatma

Sohbet yazışması createChatThread oluşturmak için chatClient'da yöntemini kullanın

  • Bu sohbete bir konu vermek için kullanın topic ; Konu, sohbet yazışması işlevi kullanılarak UpdateTopic oluşturulduktan sonra güncelleştirilebilir.
  • Sohbet yazışmasına eklenecek nesnelerin listesini ChatParticipant geçirmek için özelliğini kullanınparticipants. ChatParticipant Nesnesi bir CommunicationIdentifier nesneyle başlatılır. CommunicationIdentifierveya türünde CommunicationUserIdentifierMicrosoftTeamsUserIdentifier 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 . Katılımcı ekleme, ileti gönderme, iletiyi silme chatThreadClient gibi sohbet yazışması işlemleriyle etkileşime geçmek için istemci örneğinin istemcide yöntemini kullanarak örnek oluşturması GetChatThreadClient ChatClient gerekir.

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

Sohbet yazışması istemcisi alma

yöntemi, GetChatThreadClient zaten var olan bir iş parçacığı için bir iş parçacığı istemcisi döndürür. Oluşturulan iş parçacığında işlem gerçekleştirmek için kullanılabilir: üye ekleme, ileti gönderme vb. threadId, mevcut sohbet yazışmasının benzersiz kimliğidir.

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

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

Kullanıcının parçası olduğu tüm sohbet yazışmalarını almak için kullanın GetChatThreads .

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

Sohbet yazışmasına ileti gönderme

bir iş parçacığına ileti göndermek için kullanın SendMessage .

  • İletinin içeriğini sağlamak için kullanın content , gereklidir.
  • İletinin 'Metin' veya 'Html' gibi içerik türü için kullanın type . Belirtilmezse , 'Metin' ayarlanır.
  • Gönderenin görünen adını belirtmek için kullanın senderDisplayName . Belirtilmezse, boş dize ayarlanır.
  • İletiyle birlikte göndermek istediğiniz ek verileri eklemek için isteğe bağlı olarak kullanın metadata . Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve buna göre görüntüleyebilmesi için meta verilere 'hasAttachment:true' eklemek isteyebilirsiniz.
SendChatMessageOptions sendChatMessageOptions = new SendChatMessageOptions()
{
    Content = "Please take a look at the attachment",
    MessageType = ChatMessageType.Text
};
sendChatMessageOptions.Metadata["hasAttachment"] = "true";
sendChatMessageOptions.Metadata["attachmentUrl"] = "https://contoso.com/files/attachment.docx";

SendChatMessageResult sendChatMessageResult = await chatThreadClient.SendMessageAsync(sendChatMessageOptions);

string messageId = sendChatMessageResult.Id;

Sohbet yazışmasından sohbet iletileri alma

Belirtilen aralıklarla sohbet yazışması istemcisinde GetMessages yöntemini yoklayarak sohbet iletilerini alabilirsiniz.

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

GetMessages isteğe bağlı DateTimeOffset bir parametre alır. Bu uzaklık belirtilirse, alınan, güncelleştirilen veya silinen iletileri alırsınız. Uzaklık saatinden önce alınan ancak düzenlendikten veya kaldırıldıktan sonra gelen iletilerin de döndürüleceğini unutmayın.

GetMessagesve DeleteMessagekullanılarak UpdateMessage iletiye yapılan tüm düzenlemeler veya silmeler de dahil olmak üzere iletinin en son sürümünü döndürür. Silinen iletiler için, chatMessage.DeletedOn bu iletinin ne zaman silindiğini belirten bir tarih saat değeri döndürür. Düzenlenen iletiler için, chatMessage.EditedOn iletinin ne zaman düzenlendiğini belirten bir tarih saat döndürür. İleti oluşturma işleminin özgün zamanına kullanılarak chatMessage.CreatedOnerişilebilir ve iletileri sıralamak için kullanılabilir.

GetMessages tarafından chatMessage.Typetanımlanabilen farklı ileti türlerini döndürür. Bu türler şunlardır:

  • Text: Yazışma üyesi tarafından gönderilen normal sohbet iletisi.

  • Html: Biçimlendirilmiş bir metin iletisi. İletişim Hizmetleri kullanıcılarının şu anda RichText iletileri gönderemiyoruz. Bu ileti türü, Teams kullanıcıları tarafından Teams Birlikte Çalışma senaryolarındaki İletişim Hizmetleri kullanıcılarına gönderilen iletiler tarafından desteklenir.

  • TopicUpdated: Konunun güncelleştirildiğini belirten sistem iletisi. (salt okunur)

  • ParticipantAdded: Sohbet yazışmasına bir veya daha fazla katılımcının eklendiğini gösteren sistem iletisi. (salt okunur)

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

Diğer ayrıntılar için bkz . İleti Türleri.

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

Bir iş parçacığı oluşturulduktan sonra kullanıcı ekleyip kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara yazışmaya ileti gönderebilmeleri ve diğer katılımcıları ekleyebilmeleri/kaldırabilmeleri için erişim vermiş olursunuz. çağrısı AddParticipantsöncesinde, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı olacaktır.

Sohbet yazışmasına bir veya daha fazla katılımcı eklemek için kullanın AddParticipants . Her iş parçacığı katılımcısı için desteklenen öznitelikler şunlardır:

  • communicationUser, gerekli, iş parçacığı katılımcısının kimliğidir.
  • 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.
var josh = new CommunicationUserIdentifier(id: "<Access_ID_For_Josh>");
var gloria = new CommunicationUserIdentifier(id: "<Access_ID_For_Gloria>");
var amy = new CommunicationUserIdentifier(id: "<Access_ID_For_Amy>");

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

await chatThreadClient.AddParticipantsAsync(participants: participants);

İş parçacığı katılımcılarını alma

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

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

Okundu bilgisi gönder

İletinin kullanıcı tarafından okunduğunu diğer katılımcılara bildirmek için kullanın SendReadReceipt .

await chatThreadClient.SendReadReceiptAsync(messageId: messageId);

Kodu çalıştırma

komutunu kullanarak dotnet run uygulamayı uygulama dizininizden çalıştırın.

dotnet run

Örnek Kod

GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.

Ön koşullar

Başlamadan önce şunları yaptığınızdan emin olun:

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

  • Xcode ve CocoaPods'u yükleyin. Hızlı başlangıç için bir iOS uygulaması oluşturmak için Xcode ve bağımlılıkları yüklemek için CocoaPods kullanırsınız.

  • Azure İletişim Hizmetleri kaynağı oluşturma. Ayrıntılar için bkz . Hızlı Başlangıç: İletişim Hizmetleri kaynaklarını oluşturma ve yönetme. Bu hızlı başlangıç için kaynak uç noktanızı ve bağlantı dizesi kaydetmeniz gerekir.

  • Azure İletişim Hizmetleri'de iki kullanıcı oluşturun ve onlara bir Kullanıcı Erişim Belirteci gönderin. Kapsamı sohbet olarak ayarladığınızdan emin olun ve belirteç dizesini ve user_id dizesini not edin. Bu hızlı başlangıçta, ilk katılımcıyla bir iş parçacığı oluşturacak ve ardından iş parçacığına ikinci bir katılımcı ekleyebilirsiniz. Kullanıcı ve erişim belirteci oluşturmak için Azure CLI'yi kullanabilir ve bağlantı dizesi aşağıdaki komutu çalıştırabilirsiniz.

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

    Ayrıntılar için bkz . Erişim Belirteçleri Oluşturmak ve Yönetmek için Azure CLI kullanma.

Ayarlama

Yeni bir iOS uygulaması oluşturma

Xcode'u açın ve Yeni Xcode projesi oluştur'u seçin. Ardından platform olarak iOS ve şablon için Uygulama'ya tıklayın.

Proje adı olarak ChatQuickstart girin. Ardından arabirim olarak Görsel Taslak'ı, yaşam döngüsü olarak UIKit Uygulama Temsilcisi'ni ve dil olarak Swift'i seçin.

İleri'yi seçin ve projenin oluşturulmasını istediğiniz dizini seçin.

Kitaplıkları yükleme

Gerekli İletişim Hizmetleri bağımlılıklarını yüklemek için CocoaPods'u kullanın.

Komut satırından iOS projesinin kök dizinine ChatQuickstart gidin. Aşağıdaki komutla bir Podfile oluşturun: pod init.

Podfile dosyasını açın ve hedefe aşağıdaki bağımlılıkları ChatQuickstart ekleyin:

pod 'AzureCommunicationChat', '~> 1.3.6'

Bağımlılıkları aşağıdaki komutla yükleyin: pod install. Bunun bir Xcode çalışma alanı da oluşturduğunu unutmayın.

çalıştırdıktan pod 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 hızlı başlangıçta kodunuzu öğesine viewControllerekleyecek ve çıkışı Xcode konsolunda görüntüleyeceksiniz. Bu hızlı başlangıçta iOS'ta kullanıcı arabirimi oluşturma işlemi ele alınmıyor.

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

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 kullanacağız. Aşağıdaki adımlarda, Azure İletişim Hizmetleri Sohbet kitaplığını kullanarak yer tutucuları örnek kodla değiştirirsiniz.

Sohbet istemcisi oluşturma

Sohbet istemcisi oluşturmak için İletişim Hizmetleri uç noktanızı ve önkoşul adımlarının bir parçası olarak oluşturulan erişim belirtecini kullanacaksınız.

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

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

Açıklamayı <CREATE A CHAT CLIENT> aşağıdaki kod parçacığıyla değiştirin:

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

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

değerini Azure İletişim Hizmetleri kaynağınızın uç noktasıyla değiştirin<ACS_RESOURCE_ENDPOINT>. değerini geçerli bir İletişim Hizmetleri erişim belirteci ile değiştirin <ACCESS_TOKEN> .

Nesne modeli

Aşağıdaki sınıflar ve arabirimler, iOS için Azure İletişim Hizmetleri Sohbet SDK'sının bazı önemli özelliklerini işler.

Dosya Adı Tanım
ChatClient Sohbet işlevselliği için bu sınıf gereklidir. Bu örneği abonelik bilgilerinizle oluşturur ve yazışmaları oluşturmak, almak, silmek ve sohbet olaylarına abone olmak için kullanırsınız.
ChatThreadClient Bu sınıf, sohbet yazışması işlevselliği için gereklidir. aracılığıyla 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 almak, yazma bildirimleri ve okundu bilgileri göndermek için de kullanabilirsiniz.

Sohbet yazışması başlatma

CreateChatThreadResult , sohbet yazışması oluşturmaktan döndürülen yanıttır. Nesne olan ChatThreadProperties bir chatThread özellik içerir. Bu nesne, oluşturulan iş parçacığında işlem gerçekleştirmek için bir almak ChatThreadClient için kullanılabilecek threadId değerini içerir: katılımcı ekleme, ileti gönderme vb.

Açıklamayı <CREATE A CHAT THREAD> aşağıdaki kod parçacığıyla değiştirin:

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

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

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

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

Devam etmeden önce tamamlama işleyicisini beklemek için burada bir semafor kullanıyorsunuz. Sonraki adımlarda, tamamlanma işleyicisine döndürülen yanıttan öğesini kullanacaksınız threadId .

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

Sohbet yazışması oluşturduktan sonra yöntemini üzerinde ChatClientçağırarak listChatThreads tüm sohbet yazışmalarını listeleyebiliriz. <LIST ALL CHAT THREADS> açıklamasını aşağıdaki kodla değiştirin:

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

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

Sohbet yazışması istemcisi alma

createClient yöntemi, zaten var olan bir iş parçacığı için bir ChatThreadClient döndürür. Oluşturulan yazışmada işlem gerçekleştirmek için kullanılabilir: katılımcı ekleme, ileti gönderme vb. threadId, mevcut sohbet yazışmasının benzersiz kimliğidir.

<GET A CHAT THREAD CLIENT> açıklamasını aşağıdaki kodla değiştirin:

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

Sohbet yazışmasına ileti gönderme

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

SendChatMessageRequest , ileti isteğini açıklamak için kullanılır:

  • Sohbet iletisi içeriğini sağlamak için kullanın content
  • Gönderenin görünen adını belirtmek için kullanın senderDisplayName
  • 'text' veya 'html' gibi ileti türünü belirtmek için kullanın type
  • İletiyle birlikte göndermek istediğiniz ek verileri eklemek için isteğe bağlı olarak kullanın metadata . Bu alan, geliştiricilerin sohbet iletisi işlevselliğini genişletmesi ve kullanım örneğiniz için özel bilgiler eklemesi için bir mekanizma sağlar. Örneğin, iletide bir dosya bağlantısı paylaşırken, alıcının uygulamasının bunu ayrıştırabilmesi ve buna göre görüntüleyebilmesi için meta verilere 'hasAttachment:true' eklemek isteyebilirsiniz.

SendChatMessageResult , ileti göndermeden döndürülen yanıttır, iletinin benzersiz kimliği olan bir kimlik içerir.

Açıklamayı <SEND A MESSAGE> aşağıdaki kod parçacığıyla değiştirin:

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

var messageId: String?

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

Okundu bilgisi gönderme

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

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

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

Sohbet yazışmasından sohbet iletileri alma

Gerçek zamanlı sinyalle, yeni gelen iletileri dinlemek için abone olabilir ve bellekteki geçerli iletileri uygun şekilde güncelleştirebilirsiniz. Azure İletişim Hizmetleri abone olabileceğiniz olayların listesini destekler.

açıklamasını <RECEIVE MESSAGES> aşağıdaki kodla değiştirin. Bildirimleri etkinleştirdikten sonra ChatMessageReceivedEvents'i görmek için yeni iletiler göndermeyi deneyin.

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

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

Alternatif olarak, yöntemini belirtilen aralıklarla yoklayarak listMessages sohbet iletilerini alabilirsiniz. Aşağıdaki kod parçacığına bakın: listMessages

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

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

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

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

Bir iş parçacığı oluşturulduktan sonra kullanıcı ekleyip kaldırabilirsiniz. Kullanıcıları ekleyerek, onlara yazışmaya ileti gönderebilmeleri ve diğer katılımcıları ekleyebilmeleri/kaldırabilmeleri için erişim vermiş olursunuz. çağrısı addöncesinde, bu kullanıcı için yeni bir erişim belirteci ve kimlik edindiğinizden emin olun. Kullanıcının sohbet istemcisini başlatmak için bu erişim belirtecine ihtiyacı olacaktır.

add Sohbet yazışmasına bir veya daha fazla katılımcı eklemek için yöntemini ChatThreadClient kullanın. Her iş parçacığı katılımcısı için desteklenen öznitelikler şunlardır:

  • id, gerekli, iş parçacığı katılımcısının kimliğidir.
  • 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()

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

İş parçacığındaki kullanıcıları listeleme

Belirli bir sohbet yazışması listParticipants için tüm katılımcıları almak için yöntemini kullanın.

<LIST USERS> açıklamasını aşağıdaki kodla değiştirin:

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

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

Anında iletme bildirimleri

Anında iletme bildirimleri, mobil uygulamanın ön planda çalışmadığı durumlarda istemcilere sohbet yazışmasında gelen iletileri bildirir. Şu anda Notification Hub ile sohbet anında iletme bildirimleri göndermek, sürüm 1.3.0'da IOS SDK için desteklenmektedir. Ayrıntılar için lütfen sohbet uygulamanızda Anında İletme Bildirimini Etkinleştirme makalesine bakın.

Kodu çalıştırma

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

Not: olarak NoayarlayınBuild Settings > Build Options > Enable Bitcode. Şu anda iOS için AzureCommunicationChat SDK'sı bit kodunu etkinleştirmeyi desteklememektedir, aşağıdaki GitHub sorunu bunu izlemektir.

Örnek Kod

GitHub'da bu hızlı başlangıcın son halini alan kodu bulun.

Ön koşullar

  • Etkin aboneliği olan bir Azure hesabı veya ücretsiz bir Azure hesabı oluşturun.

  • Etkin bir Azure İletişim Hizmetleri kaynağı veya bir İletişim Hizmetleri kaynağı oluşturun.

  • Etkin bir Azure Logic Apps kaynağı veya kullanmak istediğiniz tetikleyiciyle boş bir mantıksal uygulama oluşturun. Şu anda İletişim Hizmetleri Sohbet bağlayıcısı yalnızca eylemler sağladığından mantıksal uygulamanız en azından bir tetikleyici gerektirir.

Kullanıcı oluşturma

Power Automate akışınız düzenleme modunda açıkken Power Automate'te bu adımları tamamlayın.

İletişim Hizmetleri Kimliği bağlayıcısını kullanarak iş akışınıza yeni bir adım eklemek için:

  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. İşlem seçin arama kutusuna İletişim Hizmetleri Kimliği girin. Eylem listesinde Kullanıcı oluştur'u seçin.

    Screenshot that shows the Azure Communication Services Identity connector Create user action.

  3. bağlantı dizesi girin. Azure portalında bağlantı dizesi URL'sini almak için Azure İletişim Hizmetleri kaynağına gidin. Kaynak menüsünde Anahtarlar'ı ve ardından Bağlan ion dizesini seçin. bağlantı dizesi kopyalamak için kopyala simgesini seçin.

    Screenshot that shows the Keys pane for an Azure Communication Services resource.

  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 süre sonu oluşturur. Bu eylem, İletişim Hizmetleri kullanıcı kimliği olan bir kullanıcı kimliği de oluşturur.

    Screenshot that shows the Azure Communication Services Identity connector Create user action options.

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

    Screenshot that shows the Azure Communication Services Chat connector advanced options.

  7. Oluştur seçeneğini belirleyin. Kullanıcı kimliği ve erişim belirteci gösterilir.

Sohbet yazışması oluşturma

  1. Yeni bir eylem ekleyin.

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

    Screenshot that shows the Azure Communication Services Chat connector Create a chat thread action.

  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.

    Screenshot that shows the Azure Communication Services Chat connector Create chat thread action dialog.

İleti gönderme

  1. Yeni bir eylem ekleyin.

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

    Screenshot that shows the Azure Communication Services Chat connector Send chat message action.

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

    Screenshot that shows the Azure Communication Services Chat connector Send chat message action dialog.

Sohbet yazışma iletilerini listeleme

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

  1. Yeni bir eylem ekleyin.

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

    Screenshot that shows the Azure Communication Services Chat connector List chat messages action.

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

    Screenshot that shows the Azure Communication Services Chat connector List chat messages action dialog.

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.

Screenshot that shows the Azure Communication Services Chat connector Send chat message action results.

İş akışı kaynaklarını temizleme

Mantıksal uygulama iş akışınızı ve ilgili kaynakları temizlemek için Logic Apps kaynaklarını temizlemeyi gözden geçirin.

Kaynakları temizleme

İletişim Hizmetleri aboneliğini temizlemek ve kaldırmak istiyorsanız, kaynağı veya kaynak grubunu silebilirsiniz. Kaynak grubunun silinmesi, kaynak grubuyla ilişkili diğer tüm kaynakları da siler. Kaynakları temizleme hakkında daha fazla bilgi edinin.

Sonraki adımlar

Bu hızlı başlangıçta aşağıdakilerin nasıl yapılacağını öğrendiniz:

  • Sohbet istemcisi oluşturma
  • İki kullanıcıyla iş parçacığı oluşturma
  • İş parçacığına ileti gönderme
  • bir iş parçacığından ileti alma
  • İş parçacığından Kullanıcı Kaldırma

Ayrıca şunları da isteyebilirsiniz: