Azure Communication Services チャットは、クロス プラットフォーム アプリケーションにリアルタイム テキスト通信を追加するのに役立ちます。 このページには、チャットの主な概念と機能がまとめられています。 SDK、言語、プラットフォーム、詳細な機能サポートのリストについては、「Communication Services Chat ソフトウェア開発キット (SDK) 概要」をご覧ください。
チャット APIは、テキストやデータを永続的に保存するための自動スケーリングサービスを提供します。 その他の主な機能は以下の通りです。
-
カスタム ID とアドレス指定 - Azure Communication Services は、通信エンドポイントのアドレスを指定する汎用 ID を提供します。 クライアントは、これらの ID を使用して Azure サービスに対する認証を行い、、コントロールする
chat threads
で互いに通信します。 - 暗号化 -チャット SDK は、トラフィックを暗号化し、ネットワーク上の改ざんを防ぎます。
- Microsoft Teams 会議 - チャット SDKは、Teams 会議に参加し、Teams チャット メッセージで通信できます。
- リアルタイム通知 - チャット SD Kは、効率的な永続的接続(WebSocket)を使用して、リモートユーザーが入力したときなどのリアルタイム通知を受信します。 アプリがバックグラウンドで実行されている場合、 ポップアップ通知 ("toasts") を起動して、新しいスレッドやメッセージをエンドユーザーに通知するための組み込み機能を使用できます。
- ボットの拡張性 - Azure Bot 統合を使用して、チャット サービスに簡単に Azure ボットを付加することができます。
チャットの概要
チャットの会話は、チャット スレッド内で行われます。 チャット スレッドには次の特徴があります。
- チャット スレッド ID は、その
ChatThreadId
となります。 - チャットスレッドには、0 ~ 250 人のユーザーが、メッセージを送信できる参加者として割り当てられています。
- 1 人のユーザーが参加できるチャット スレッドの数は無制限です。
- スレッド参加者のみがメッセージの送受信、参加者の追加、参加者の削除を行うことができます。
- ユーザーは、自分が作成したすべてのチャット スレッドに参加者として追加されます。
ユーザー アクセス
Azure Communication Services では、チャット トークンによる 3 つのレベルのユーザー アクセス制御がサポートされています。 詳細については、ID とトークンに関するページを参照してください。 参加者は、他の参加者から送信されたメッセージへの書き込みアクセス権限を持っていません。つまり、送信済みのメッセージに対して更新や削除を実行できるのは、メッセージの送信者本人だけです。 別の参加者がその操作を行おうとすると、エラーが発生します。
チャット データ
Azure Communication Services では、チャット スレッドの作成時に適用されたデータ保持ポリシーに従ってチャット スレッドが保存されます。 保持ポリシーを更新する必要が生じた場合は、設定した保持期間中に更新できます。 削除されたチャット スレッドを取得することはできません (ポリシーによる削除でも、削除 API 要求による削除でも同様)。
重要
このセクションで説明されているデータ保持ポリシーは、現在、パブリック プレビュー段階にあります。 このサービスのプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
以下から選択できます。
- スレッドの無期限保持。
- チャット スレッドの作成 API のアイテム保持ポリシーを使用して、30 日から 90 日の間の自動削除。
- API を使用した即時削除 チャット メッセージの削除 または チャット スレッドの削除。
新しいアイテム保持ポリシーの適用以前に作成されたスレッドは、そのスレッドに適用するポリシーを変更しない限り影響を受けません。 アイテム保持ポリシーによってスレッドが削除され、30 日を超える日数が経過した後は、削除済みのチャット スレッドについてサポート リクエストを送信してもスレッドを取得することはできず、スレッドの情報も一切得られません。 必要な場合、スレッドの作成時点から 30 日以内に、できるだけ早くサポート チケットを開けば対応できることがあります。
チャット スレッドの参加者は、ListMessages
を使用して、特定のスレッドのメッセージの履歴を表示できます。
ListMessages
API は、既に削除されたスレッドの履歴を返すことはできません。 チャット スレッドから削除されたユーザーは、削除される前のメッセージ履歴を参照できますが、新しいメッセージは送信することも受信することもできません。 誤ってメッセージが削除された場合、システムがそのメッセージを復元することはできません。 Azure Communication Services のチャット サービスに保存されるデータの詳細については、利用可能なリージョンとデータの保存場所を参照してください。
仮想予定を使用しているお客様については、Teams 会議でのチャット メッセージの保存に関する Teams の相互運用性 ユーザー プライバシー を参照してください。
サービスの制限
- チャット スレッドで許可される参加者の最大数は 250 人です。
- 許可されている最大メッセージ サイズは約 28 KB です。
- 20 名を超える参加者がいるチャット スレッドの場合は、開封確認メッセージと入力インジケーターの機能はサポートされません。
- Teams 相互運用シナリオにおいて入力インジケーター機能をサポートするには、Teams ユーザーではなく Azure Communication Services ユーザーの数が 20 未満である必要があります。
- チャット スレッドの作成時には、30 日から 90 日までの範囲でアイテム保持ポリシーを設定できます。
- さらに、Teams 相互運用シナリオでは、次の制限があります。
- 入力インジケーター イベント上の Teams ユーザーの表示名は空白です。
- 開封確認はサポートされていません。
- ボット ユーザー、Skype ユーザー、エンタープライズ以外のユーザーなど、一部の ID はサポートされていません。
チャットのアーキテクチャ
チャット アーキテクチャは、1) 信頼されたサービス、2) クライアント アプリケーションという 2 つの主要部分で構成されます。
- 信頼されたサービス: チャット セッションを適切に管理するには、リソース接続文字列を使用して Communication Services に接続できるようにするサービスが必要です。 このサービスには、チャット スレッドの作成、参加者の追加と削除、ユーザーへのアクセス トークンの発行を行う役割があります。 詳細については、「クイック スタート: アクセス トークンを作成して管理する」を参照してください。
- クライアント アプリケーション: クライアント アプリケーションは、信頼されたサービスに接続してアクセス トークンを受け取ります。このトークンは、ユーザーが Communication Services に直接接続する際に必要となります。 ユーザーがチャット スレッドを作成し、参加者を追加すると、参加者は、クライアント アプリケーションを使用してチャット スレッドに接続し、メッセージを送信できるようになります。 参加者は、クライアント アプリケーションのリアルタイム通知を使用して、他の参加者からのメッセージやスレッドの更新情報をサブスクライブできます。
AI を活用したインテリジェントなチャット エクスペリエンスを構築する
Azure AI サービスとチャット サービスは、以下のようなユース ケースの構築に利用できます。
- サポート エージェントがチケットの優先順位を設定するために、顧客から受信したメッセージから否定的なセンチメントを検出できるように支援する。
- 会話の終了時に要約を生成し、顧客にメールで以後の段取りや後日のフォローアップを送信する。
- Azure ボットとリレー ボットを使って、Azure Communication Services Chat チャネルにエージェントを追加する。
- 1 つのボットを構成し、チャット チャネルと 1 つまたは複数のソーシャル チャネルを並行して運営させる。
メッセージの種類
チャットでは、メッセージの履歴の一部として、ユーザーによって生成されたメッセージとシステムによって生成されたメッセージが共有されます。
システムメッセージは以下の場合に生成されます。
- チャット スレッドが更新されたとき
- 参加者が追加または削除されたとき
- チャットスレッドのトピックが更新されました。
チャット スレッド上で List Messages
または Get Messages
を呼び出すと、その結果には、両方の種類のメッセージが時系列順に表示されます。 ユーザーによって生成されたメッセージの場合、チャット スレッドにメッセージを送信する際に SendMessageOptions
でメッセージの種類を設定できます。 値が指定されていない場合、Communication Services の既定値である text
型になります。 HTML を送信する場合、この値の設定は重要です。
html
を指定すると、Communication Services は、クライアント デバイス上でのレンダリングが安全に行われるようにコンテンツをサニタイズします。
-
text
: チャット スレッドの一部としてユーザーが作成および送信するプレーンテキスト メッセージ。 -
html
: チャット スレッドの一部としてユーザーが作成および送信する、HTML を使用して書式設定されたメッセージ。
システム メッセージの種類は次のとおりです。
-
participantAdded
: 1 人または複数の参加者がチャット スレッドに参加していることを示すシステム メッセージ。 -
participantRemoved
: 参加者がチャット スレッドから削除されたことを示すシステム メッセージ。 -
topicUpdated
: スレッド トピックが更新されたことを示すシステム メッセージ。
リアルタイム通知
JavaScript Chat SDK では、リアルタイム通知がサポートされています。 これにより、クライアントは API をポーリングしなくても、Communication Services のチャット スレッドに対する更新情報や受信メッセージをリアルタイムでリッスンできます。
クライアント アプリは、次のイベントをサブスクライブできます。
-
chatMessageReceived
- 参加者によってチャット スレッドに新しいメッセージが送信されたとき。 -
chatMessageEdited
- チャット スレッドでメッセージが編集されたとき。 -
chatMessageDeleted
- チャット スレッドでメッセージが削除されたとき。 -
typingIndicatorReceived
- 別の参加者によってチャット スレッドに入力インジケーターが送信されたとき。 -
readReceiptReceived
- 別の参加者が読み取ったメッセージの開封確認メッセージを送信する場合。 -
chatThreadCreated
- Communication Services ユーザーがチャット スレッドを作成したとき。 -
chatThreadDeleted
- Communication Services ユーザーがチャット スレッドを削除したとき。 -
chatThreadPropertiesUpdated
- チャット スレッドのプロパティが更新されたとき。現在は、スレッドのトピックの更新のみがサポートされています。 -
participantsAdded
- ユーザーがチャット スレッドの参加者として追加されたとき。 -
participantsRemoved
- 既存の参加者がチャット スレッドから削除されたとき。 -
realTimeNotificationConnected
- リアルタイム通知が接続されているとき。 -
realTimeNotificationDisconnected
- リアルタイム通知が切断されているとき。
注
サーバー アプリケーションでリアルタイム通知を使用しないでください。
サーバー イベント
この機能を使用すると、サーバー アプリケーションは、メッセージが送信されたときや、参加者がチャットに参加したり離れたりしたときなどにイベントをリッスンできます。 サーバー アプリケーションは、これらのイベントに対応し、チャットへの参加者の追加/削除、チャットのアーカイブ、分析の実行、オーケストレーションのためのその他の多くのシナリオを実行できます。 開発者が利用できるチャットイベントを確認するには、Azure Event Grid ソースとしての Azure Communication Services を参照してください。
プッシュ通知
Android および iOS の Chat SDK では、プッシュ通知がサポートされます。 参加者の離席中に見逃されたメッセージについてプッシュ通知を送るには、Communication Services リソースに通知ハブ リソースを接続してプッシュ通知を送信するようにします。 これにより、モバイル アプリがフォアグラウンドで実行されていないとき、チャットやメッセージの着信についての通知がアプリケーション参加者に送られます。
IOS および Android SDK では、次のイベントがサポートされます。
-
chatMessageReceived
- チャット スレッドに参加者からの新しいメッセージが送られたとき。
Android SDK では、次のイベントが追加でサポートされます。
-
chatMessageEdited
- チャット スレッドのメッセージが参加者によって編集されたとき。 -
chatMessageDeleted
- チャット スレッドのメッセージが参加者によって削除されたとき。 -
chatThreadCreated
- Communication Services ユーザーがチャット スレッドを作成したとき。 -
chatThreadDeleted
- Communication Services ユーザーがチャット スレッドを削除したとき。 -
chatThreadPropertiesUpdated
- チャット スレッドのプロパティが更新されたとき。現在はスレッドのトピックの更新のみがサポートされています。 -
participantsAdded
- チャット スレッドに参加者が追加されたとき。 -
participantsRemoved
- チャット スレッドから既存の参加者が削除されたとき。
詳細については、プッシュ通知に関するページを参照してください。
注
現在、Notification Hub でのチャット プッシュ通知の送信は、Android バージョン 1.1.0 および iOS バージョン 1.3.0 で一般提供されています。