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

このページでは、Google Chat アプリが Google Chat アプリを Google Chat アプリとも呼ばれる インタラクション イベント

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

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

前提条件

インタラクティブ機能を有効にする Google Chat アプリ。新しい 次のいずれかのクイックスタートを完了してください。 使用するアプリ アーキテクチャ:

インタラクション イベントの仕組み

Google Chat のアプリ操作イベントは、ユーザーが Google Chat で Chat 用アプリの呼び出しや操作を行うためにユーザーが 名前リンクを付けたり、Chat 用アプリを 選択します。ユーザーが Chat 用アプリを操作すると、 Google Chat から Chat アプリにインタラクション イベントが送信されます。 Chat アプリはこのイベントを使用して、 レスポンスを作成します。

たとえば、Chat 用アプリは、インタラクション イベントを使用して 次のとおりです。

インタラクション イベントの例 Chat アプリからの一般的な回答
ユーザーが Chat 用アプリを 名前リンクを使用できます。 「 Chat アプリはメッセージの指示内容を処理します メッセージを作成します。たとえば、Chat 用アプリは /about コマンドに、実行するタスクを説明するメッセージ 確認しましょう。
ユーザーが Chat 用アプリを追加すると、 削除することもできます。 Chat アプリがオンボーディング スペースの機能とスペース内のユーザーによる操作方法を説明したメッセージ できます。
ユーザーが Chat アプリを開いたら、 「 すべての着信通知が Chat アプリから削除される そのスペースに行った設定(例: スペースに Webhook など)を使用して、 内部ストレージです
ユーザーが送信したカードまたはダイアログのボタンを Chat アプリ。 Chat アプリでは、 別のカードやダイアログを返す場合もあります。

ユーザー操作の種類ごとに、Google Chat から送信される やり取りイベントに基づいて、チャット アプリが個々の イベントタイプを指定します。たとえば、Google Chat では ADDED_TO_SPACE: ユーザーが スペースに自動で移動できるため、 Chat アプリは、メッセージの投稿などの応答を処理できます。 スペースへのウェルカム メッセージが表示されます。サポートされているすべてのインタラクション イベントを確認するには、 EventType リファレンス ドキュメントをご覧ください

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

このセクションでは、 Chat アプリ。

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

すべての Chat アプリが対話型であるわけではありません。たとえば 受信 Webhook は送信メッセージと ユーザーに返信できませんインタラクティブな 使用するエンドポイントを選択して、 Chat アプリでのやり取りの受信、処理、応答 できます。Chat 用アプリの設計について詳しくは、以下をご覧ください。 チャットアプリの実装アーキテクチャ

作成するインタラクティブ機能ごとに、 Chat API で構成を管理して、Google Chat が 関連するインタラクション イベントを Chat 用アプリに追加できます。

  1. Google Cloud コンソールで [Chat API] ページに移動し、 [構成] ページ:

    [Chat API の構成] ページに移動

  2. [インタラクティブ機能] で設定を確認し、以下に基づいて更新します。 次のような特徴を備えています。

    フィールド 説明
    機能 必須。Chat 用アプリでユーザーとやり取りする方法を決定する一連のフィールド:
    • 1 対 1 のメッセージの受信: Google Chat で直接 Chat 用アプリを見つけてメッセージを送信できます。
    • スペースやグループの会話に参加する: スペースやグループの会話に Chat アプリを追加できます。
    接続設定 必須。Chat アプリのエンドポイント。次のいずれかです。
    • アプリの URL: Chat 用アプリの実装をホストする HTTPS エンドポイント。
    • Apps Script プロジェクト: Chat 用アプリを実装する Apps Script プロジェクトのデプロイ ID。
    • Cloud Pub/Sub トピック名: Chat アプリがエンドポイントとしてサブスクライブする Pub/Sub トピック。
    • Dialogflow: Dialogflow とのインテグレーションに Chat アプリを登録します。詳細については、自然言語を理解する Dialogflow Google Chat アプリを構築するをご覧ください。
    スラッシュ コマンド 省略可。Google Chat 内でユーザーに提示できるコマンド。ユーザーは Google Chat 内で Chat 用アプリの主要なアクションを確認し、操作したい特定のアクションを選択できます。詳細については、Chat 用アプリとしてスラッシュ コマンドに応答するをご覧ください。
    リンク プレビュー 省略可。ユーザーがリンクを送信したときに Chat アプリが認識して追加のコンテンツを提供する URL パターン。詳細については、プレビュー リンクをご覧ください。
    公開設定 省略可。Chat 用アプリを表示してインストールできる最大 5 人または 1 つ以上の Google グループ。このフィールドを使用して Chat 用アプリをテストしたり、Chat 用アプリをチームと共有したりできます。詳細については、インタラクティブ機能をテストするをご覧ください。
  3. [保存] をクリックします。Chat 用アプリの保存時 構成すると、Chat 用アプリは Google Workspace 組織内の特定のユーザーと共有できます。

Chat アプリがインタラクションを受け取るように構成されました Google Chat で管理できます。

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

サービスへの HTTPS リクエストが失敗した場合(タイムアウト、一時的なネットワーク 2xx 以外の HTTPS ステータス コードが返された場合、Google Chat は配信を 呼び出されることがあります(ただし、実現は保証されません)。その結果 Chat アプリは、同じメッセージを何度か受信することがあります。 特定することですリクエストが正常に完了したにもかかわらず、 Google Chat はリクエストを再試行しません。

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

このセクションでは、Google Chat アプリでの処理と応答の仕組みについて説明します。 作成できます。

Chat 用アプリが ゲストはさまざまな方法で応答できます。多くの場合、インタラクティブな Chat アプリは、ユーザーにメッセージで返信します。 Google Chat アプリは、Google Chat のメッセージ履歴から インタラクション イベント情報を記録したりできます。 この処理動作によって、インフラストラクチャの Google Chat アプリ。

同期的に応答するには、Chat 用アプリが 投稿する必要があります。また、投稿されたスペースに インタラクションが発生したことを示します。それ以外の場合、Chat アプリは 非同期で応答できます。

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

次の図に 通常、Google Chat アプリはさまざまな種類のデータを インタラクション イベント:

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

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

インタラクション イベントを使用すると、Chat アプリがリアルタイムで応答できます。 同期的に実行されます。同期応答の場合は 認証

スペースへの参加に対する応答

この例では、Chat 用アプリがテキスト メッセージを作成して送信し、 メッセージがスペースに追加されたときに通知されます。ベスト プラクティスについては、 オンボーディング、 ユーザーに Chat 用アプリを紹介します

ユーザーが Chat 用アプリを追加したときにテキスト メッセージを送信するには Chat 用アプリでスペースに ADDED_TO_SPACE に応答する 操作イベント。次のように回答します。 ADDED_TO_SPACE インタラクション イベントをテキスト メッセージと併用するには、次のコードを使用します。

Node.js

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} req The event object from Chat API.
 * @param {Object} res The response object from the Chat app. An onboarding message that
 * introduces the app and helps people get started with it.
 */
exports.onMessage = function onMessage(req, res) {
  if (req.method === 'GET' || !req.body.message) {
    res.send(
      'Hello! This function is meant to be used in a Google Chat space.');
  }

  // Send an onboarding message when added to a Chat space
  if (req.body.type === 'ADDED_TO_SPACE') {
    res.json({
      'text': 'Hi, Cymbal at your service. I help you manage your calendar
      from Google Chat. Take a look at your schedule today by typing
      `/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To
      learn what else I can do, type `/help`.'
    });
  }
};

Apps Script

/**
 * Sends an onboarding message when the Chat app is added to a space.
 *
 * @param {Object} event The event object from Chat API.
 * @return {Object} Response from the Chat app. An onboarding message that
 * introduces the app and helps people get started with it.
 */
function onAddToSpace(event) {

  return {
    'text': 'Hi, Cymbal at your service. I help you manage your calendar
    from Google Chat. Take a look at your schedule today by typing
    `/checkCalendar`, or schedule a meeting with `/scheduleMeeting`. To learn
    what else I can do, type `/help`.'
  }
}

このコードサンプルは、次のテキスト メッセージを返します。

オンボーディング メッセージの例。

やり取りへのその他の応答例

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

非同期で応答する

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

Chat API を使用してメッセージを作成するには、以下をご覧ください。 メッセージを作成します。Google Cloud のリソースを使用して Chat API メソッドについて詳しくは、 Chat API の概要