ユーザーが Google Chat でリンクを共有する際にコンテキストの切り替えが発生しないように、 Chat アプリは、メッセージに カードを添付してリンクを プレビューできます。カードには詳細情報が表示され、ユーザーは Google Chat から直接操作できます。
たとえば、会社のカスタマー サービス エージェント全員と Case-y という名前の Chat アプリが含まれる Google Chat スペースがあるとします。エージェントは Chat スペースでカスタマー サービスケースへのリンクを頻繁に共有しますが、そのたびに同僚はケースのリンクを開いて、担当者、ステータス、件名などの詳細を確認する必要があります。同様に、ケースの所有権を取得したり、ステータスを変更したりする場合は、リンクを開く必要があります。
リンクのプレビューを使用すると、スペースの常駐 Chat アプリである Case-y は、ケースのリンクが共有されるたびに、割り当て先、ステータス、件名を示すカードを添付できます。カードのボタンを使用すると、エージェントはチャット ストリームから直接ケースの所有権を取得し、ステータスを変更できます。
リンクのプレビューの仕組み
ユーザーがメッセージにリンクを追加すると、Chat アプリがリンクをプレビューする可能性があることを示すチップが表示されます。

メッセージを送信すると、リンクが Chat アプリに送信され、アプリが カードを生成してユーザーのメッセージに添付します。

カードには、リンクとともに、ボタンなどのインタラクティブな要素を含むリンクに関する追加情報が表示されます。Chat アプリは、ボタンのクリックなどのユーザー操作に応じて、添付されたカードを更新できます。
Chat アプリがメッセージにカードを添付してリンクをプレビューしないようにするには、プレビュー チップの をクリックしてプレビューを無効にします。添付されたカードは、[プレビューを削除] をクリックしていつでも削除できます。
前提条件
Node.js
インタラクション イベントを受信して応答する Google Chat アプリ。HTTP サービスを使用してインタラクティブな Chat アプリを作成するには、この クイックスタートを完了してください。
Python
インタラクション イベントを受信して応答する Google Chat アプリ。HTTP サービスを使用してインタラクティブな Chat アプリを作成するには、この クイックスタートを完了してください。
Java
インタラクション イベントを受信して応答する Google Chat アプリ。HTTP サービスを使用してインタラクティブな Chat アプリを作成するには、この クイックスタートを完了してください。
Apps Script
インタラクション イベントを受信して応答する Google Chat アプリ。Apps Script でインタラクティブな Chat アプリを作成するには、このクイックスタートを完了してください。
リンクのプレビューを構成する
Google Cloud コンソールの Chat アプリの構成ページで、example.com、support.example.com、
support.example.com/cases/
などの特定のリンクを URL パターンとして登録すると、
Chat アプリでプレビューできます。

- Google Cloud コンソールを開きます。
- [Google Cloud] の横にある下矢印 をクリックして、Chat アプリのプロジェクトを開きます。
- 検索フィールドに「
Google Chat API」と入力し、[Google Chat API] をクリックします。 - [管理 > 構成] をクリックします。
- [リンクのプレビュー] で、URL パターンを追加または編集します。
- 新しい URL パターンのリンク プレビューを構成するには、[URL パターンを追加] をクリックします。
- 既存の URL パターンの構成を編集するには、下矢印 をクリックします。
[ホストパターン] フィールドに、URL パターンのドメインを入力します。Chat アプリは、このドメインへのリンクをプレビューします。
Chat アプリで
subdomain.example.comなどの特定のサブドメインのリンクをプレビューするには、サブドメインを含めます。Chat アプリでドメイン全体のリンクをプレビューするには、サブドメインとしてアスタリスク(*)のワイルドカード文字を指定します。 たとえば、
*.example.comはsubdomain.example.comとany.number.of.subdomains.example.comに一致します。[パスの接頭辞] フィールドに、ホストパターン ドメインに追加するパスを入力します。
ホストパターン ドメイン内のすべての URL に一致させるには、[パスの接頭辞] を空白のままにします。
たとえば、ホストパターンが
support.example.comの場合、support.example.com/cases/でホストされているケースの URL に一致させるには、「cases/」と入力します。[完了] をクリックします。
[保存] をクリックします。
これで、Chat アプリを含む Chat スペースのメッセージに、リンク プレビュー URL パターンに一致するリンクが含まれると、アプリがリンクをプレビューします。
リンクをプレビューする
特定のリンクのリンク プレビューを構成すると、Chat アプリはリンクを認識してプレビューし、詳細情報を添付できます。
Chat アプリを含む Chat スペース内で、ユーザーのメッセージにリンク プレビュー URL パターンに一致するリンクが含まれている場合、Chat アプリは
MESSAGE インタラクション イベントを受信します。インタラクション イベントの JSON ペイロードには、matchedUrl
フィールドが含まれます。
JSON
message: {
matchedUrl: {
url: "https://support.example.com/cases/case123"
},
... // other message attributes redacted
}
Chat アプリは、MESSAGE イベント ペイロードで matchedUrl
フィールドの有無を確認することで、プレビューされたリンクを含むメッセージに情報を追加できます。Chat
アプリは、基本的なテキスト メッセージで返信するか、カードを添付できます。
テキスト メッセージで返信する
基本的なレスポンスの場合、Chat アプリはリンク にシンプルなテキスト メッセージ で返信することで、リンクをプレビューできます。この例では、リンク プレビュー URL パターンに一致するリンク URL を繰り返すメッセージを添付します。
Node.js
Python
Java
Apps Script
リンクをプレビューするカードを添付する
プレビューされたリンクにカードを添付するには、タイプ UPDATE_USER_MESSAGE_CARDS の
ActionResponse
を返します。この例では、基本的なカードを添付します。

Node.js
Python
Java
Apps Script
この例では、 カードの JSON を返すことでカード メッセージを送信します。 Apps Script カード サービスを使用することもできます。
リンク プレビュー カードを更新する
Chat アプリは、ユーザーがリンク プレビュー カードを操作したとき(カードのボタンをクリックしたときなど)に、リンク プレビュー カードを更新できます。
カードを更新するには、Chat アプリ
で CARD_CLICKED
インタラクション イベントを処理し、
actionResponse
を返す必要があります。リンク プレビューを含むメッセージを送信したユーザーに基づいて、
- ユーザーがメッセージを送信した場合は、
actionResponse.typeをUPDATE_USER_MESSAGE_CARDSに設定します。 - Chat アプリがメッセージを送信した場合は、
actionResponse.typeをUPDATE_MESSAGEに設定します。
メッセージを送信したユーザーを特定するには、インタラクション イベントの message.sender.type
フィールドを使用して、送信者が HUMAN ユーザーか BOT かを確認します。
次の例では、ユーザーが [自分に割り当てる] ボタンをクリックするたびに、Chat アプリがカードの [担当者] フィールドを更新してボタンを無効にすることで、リンク プレビューを更新する方法を示します。

Node.js
Python
Java
Apps Script
この例では、 カードの JSON を返すことでカード メッセージを送信します。 Apps Script カード サービスを使用することもできます。
制限事項と考慮事項
Chat アプリのリンク プレビューを構成する際は、次の制限事項と考慮事項に注意してください。
- 各 Chat アプリは、最大 5 つの URL パターンのリンク プレビューをサポートしています。
- Chat アプリは、メッセージごとに 1 つのリンクをプレビューします。1 つのメッセージに複数のプレビュー可能なリンクがある場合は、最初のプレビュー可能なリンクのみがプレビューされます。
- Chat アプリは
https://で始まるリンクのみをプレビューします。したがって、https://support.example.com/cases/はプレビューされますが、support.example.com/cases/はプレビューされません。 - メッセージにスラッシュ コマンドなど、Chat アプリに送信される他の情報が含まれていない限り、リンク プレビューによって Chat アプリに送信されるのはリンク URL のみです。
- ユーザーがリンクを投稿した場合、Chat アプリは、ユーザーがカードを操作したとき(ボタンをクリックしたときなど)にのみ、リンク プレビュー カードを更新できます。
Messageリソースで Chat API のupdate()メソッドを呼び出して、ユーザーのメッセージを非同期で更新することはできません。 - Chat アプリはスペース内のすべてのユーザーのリンクをプレビューする必要があるため、
メッセージには
privateMessageViewerフィールドを含めないでください。
リンクのプレビューをデバッグする
リンク プレビューを実装する際に、アプリのログを読み取って Chat アプリをデバッグする必要が生じることがあります。ログを読み取るには、 Google Cloud コンソールのログ エクスプローラにアクセスします。