ユーザーの操作を受信して応答する

このページでは、Google Chat アプリがユーザー操作(Google Chat アプリの操作イベントとも呼ばれます)を受信して応答する方法について説明します。

Google Chat アプリの操作イベントは、Chat 用アプリへの名前リンクやスペースへの追加など、ユーザーが Chat 用アプリを呼び出したり操作したりするアクションを表します。ユーザーが Chat 用アプリを操作すると、Google Chat から Chat 用アプリに操作イベントが送信されます。Chat アプリは、このイベントを使用してインタラクションを処理し、レスポンスを作成できます。

たとえば、Chat アプリは、インタラクション イベントを使用して次のいずれかを行います。

インタラクション イベントの例 Chat アプリからの一般的な回答
ユーザーは、名前リンクを付けるかスラッシュ コマンドを使用して、Chat アプリを呼び出します。 Chat アプリは、メッセージの内容を処理してメッセージを作成します。たとえば、Chat 用アプリは、/about コマンドに対して、Chat 用アプリで実行できるタスクを説明するメッセージで応答します。
ユーザーがスペースに Chat 用アプリを追加します。 Chat アプリは、その機能とスペース内のユーザーによる操作方法を説明するオンボーディング メッセージを送信します。
ユーザーがスペースから Chat 用アプリを削除します。 Chat アプリは、スペース用に構成されている受信通知(Webhook の削除など)をすべて削除し、内部ストレージを消去します。
Chat アプリから送信されたカードまたはダイアログのボタンをユーザーがクリックする。 Chat アプリは、ユーザーが送信したデータを処理して保存するか、別のカードまたはダイアログを返します。

Google Chat は、ユーザー操作の種類ごとに異なるタイプの操作イベントを送信します。これにより、Chat アプリは各イベントタイプを適切に処理できます。たとえば、Google Chat は、ユーザーが Chat アプリをスペースに追加するすべてのインタラクションにイベントタイプ ADDED_TO_SPACE を使用します。これにより、Chat アプリは、スペースへのウェルカム メッセージの投稿などのレスポンスを処理できます。サポートされているすべてのインタラクション イベントについては、EventType リファレンス ドキュメントをご覧ください。

このページでは、次の操作を行う方法について説明します。

  • イベントを受信するように Chat アプリを構成します。
  • インフラストラクチャでインタラクション イベントを処理します。
  • 必要に応じて、インタラクション イベントに応答します。

Chat アプリのインタラクション イベントを受信する

このセクションでは、Chat 用アプリのインタラクション イベントを受信して処理する方法について説明します。

操作イベントを受信するように Chat アプリを構成する

すべての Chat アプリが対話型であるわけではありません。たとえば、受信 Webhook は送信メッセージのみ送信でき、ユーザーに応答することはできません。インタラクティブな Chat アプリを作成する場合は、Chat アプリがインタラクション イベントを受信、処理、応答できるようにするエンドポイントを選択する必要があります。Chat アプリの設計の詳細については、Chat アプリの実装アーキテクチャをご覧ください。

インタラクティブな Chat アプリを作成した場合は、Google Chat がインタラクション イベントを送信できるように Google Chat API を構成する必要があります。

  1. Google Cloud コンソールで、Google Chat API ページを開きます。

    Google Chat API ページに移動

  2. [構成] タブをクリックします。
  3. [インタラクティブ機能] セクションで、[インタラクティブ機能を有効にする] をクリックしてオンにします。
  4. [機能] で、次のチェックボックスのいずれかまたは両方をオンにします。
    1. 1 対 1 のメッセージを受信する: ユーザーがダイレクト メッセージ(DM)スペースで Chat 用アプリとやり取りできるようにします。ユーザーが DM スペースでメッセージを送信すると、Chat アプリはインタラクション イベントを受信します。
    2. スペースとグループ会話に参加する: 複数のユーザーが使用するスペースで、ユーザーが Chat 用アプリを追加および削除できます。Chat アプリは、スペースで追加または削除が行われたときや、ユーザーがスペースで名前リンクを付けたりスラッシュ コマンドを使用したりするたびに、インタラクション イベントを受け取ります。
  5. [接続設定] で、Google Chat が Chat 用アプリの操作イベントを送信する場所を指定します。
  6. 省略可: [スラッシュ コマンド] で、1 つ以上のスラッシュ コマンドを追加して構成します。詳細については、スラッシュ コマンドを設定するをご覧ください。
  7. 省略可: [リンク プレビュー] で、Chat 用アプリでプレビューする URL パターンを 1 つ以上追加して構成します。詳細については、プレビュー リンクをご覧ください。
  8. [保存] をクリックします。

これで、Google Chat からインタラクション イベントを受信するように Chat アプリが構成されました。

サービスへの HTTP 呼び出しの再試行を処理する

サービスへの HTTPS リクエストが失敗した場合(タイムアウト、一時的なネットワーク障害、2xx 以外の HTTPS ステータス コードなど)、Google Chat は数分以内に配信を数回再試行することがあります(ただし、配信を保証するものではありません)。その結果、特定の状況では Chat アプリが同じメッセージを数回受信することがあります。リクエストが正常に完了しても無効なメッセージ ペイロードが返された場合、Google Chat はリクエストを再試行しません。

インタラクション イベントを処理または応答する

このセクションでは、Google Chat アプリでインタラクション イベントを処理し、応答する方法について説明します。

Chat アプリは、Google Chat からインタラクション イベントを受信すると、さまざまな方法で応答できます。多くの場合、インタラクティブな Chat アプリは、ユーザーにメッセージで応答します。Google Chat アプリは、データソースからの情報の参照、インタラクション イベント情報の記録などを行うこともできます。この処理の動作が、Google Chat アプリの定義の根本的な部分です。

Chat アプリは、インタラクション イベントごとにリクエスト本文を受け取ります。これは、イベントを表す JSON ペイロードです。この情報を使用してレスポンスを処理できます。イベント ペイロードの例については、Chat 用アプリの操作イベントの種類をご覧ください。

次の図は、Google Chat アプリがさまざまな種類のインタラクション イベントをどのように処理または応答するかを示しています。

Google Chat アプリがインタラクション イベントを処理する方法のアーキテクチャ。

リアルタイムで回答を表示

インタラクション イベントを使用すると、Chat アプリはリアルタイムで、または同期的に応答できます。同期レスポンスでは認証は不要です。

操作イベントに対する同期レスポンスを作成するには、以下のガイドをご覧ください。

同期的に応答するには、Chat アプリが 30 秒以内に応答し、インタラクションが発生したスペースにそのレスポンスを送信する必要があります。それ以外の場合、Chat アプリは非同期で応答できます。

非同期で応答する

Chat アプリは、30 秒後にインタラクション イベントに応答することや、インタラクション イベントが生成されたスペースの外部でタスクを実行しなければならない場合があります。たとえば、Chat 用アプリは、長時間実行タスクを完了した後にユーザーへの応答が必要になることがあります。この場合、Chat アプリは Google Chat API を呼び出して非同期で応答できます。

Chat API を使用してメッセージを作成するには、メッセージを作成するをご覧ください。その他の Chat API メソッドの使用方法については、Chat API の概要をご覧ください。