このページでは、Google Chat アプリとしてコマンドを設定して応答する方法について説明します。
コマンドは、ユーザーが Chat アプリの主要な機能を発見して使用できるようにします。コマンドのコンテンツを表示できるのは Chat アプリのみです。たとえば、ユーザーがスラッシュ コマンドを使用してメッセージを送信した場合、そのメッセージはユーザーと Chat アプリにのみ表示されます。
コマンドを作成するかどうかを判断し、ユーザー インタラクションを設計する方法については、すべてのユーザー ジャーニーを定義するをご覧ください。
Chat アプリコマンドの種類
Chat アプリのコマンドは、スラッシュ コマンドまたはクイック コマンドとして作成できます。各タイプのコマンドを見つけて使用するには、次の操作を行います。-
スラッシュ コマンド: ユーザーはスラッシュ(
/
)と、事前定義されたテキスト(/about
など)を入力して、コマンドをメッセージとして送信します。チャットアプリでは、スラッシュ コマンドの引数テキストが必須になることもあります。たとえば、スラッシュ コマンド/search
では、検索クエリに使用する引数テキストが必要になる場合があります。 -
クイック コマンド: ユーザーは、Chat メッセージの返信欄からメニューを開いてコマンドを使用します。コマンドを使用するには、[追加]
をクリックし、メニューからコマンドを選択します。
-
図 1: ユーザーは、返信欄にスラッシュ /
とコマンド名を入力して、スラッシュ コマンドを見つけて使用します。 -
図 2. ユーザーは、Chat メッセージの返信欄にあるメニューからクイック コマンドを見つけて使用します。
前提条件
- Google Chat へのアクセス権を持つ Business または Enterprise の Google Workspace アカウント。
- Google Cloud プロジェクトを作成します。
- OAuth 同意画面を構成する
- 次の Google Workspace API を有効にする。
- Google Chat API
- Google Workspace アドオン API
- Chat アプリのサービス アーキテクチャをホストする HTTP エンドポイント。
- Google Chat へのアクセス権を持つ Business または Enterprise の Google Workspace アカウント。
- Google Cloud プロジェクトを作成します。
- OAuth 同意画面を構成する
- Google Chat API を有効にする。
- スタンドアロンの Apps Script プロジェクトを作成し、Advanced Chat Service を有効にします。
addons.chat
オブジェクトと必要なスコープ(oauthScopes
)または HTTPS URL 接頭辞(urlFetchWhitelist
)を追加して、マニフェストで Chat を構成します。
コマンドを設定する
このセクションでは、次の手順でコマンドを設定する方法について説明します。
コマンドの名前と説明を入力します
コマンドの名前は、ユーザーが Chat アプリを起動するために入力または選択するものです。名前の下に簡単な説明も表示され、コマンドの使用方法についてユーザーに提示します。

コマンドの名前と説明を選択する際は、次の推奨事項を検討してください。
コマンドに名前を付けるには:
- 短く、説明的で、実行可能な単語やフレーズを使用して、ユーザーにコマンドを明確に伝えます。たとえば、名前
Create a reminder
の代わりにRemind me
を使用します。 - コマンドに一意の名前または共通の名前を使用することを検討してください。コマンドが一般的な操作や機能を表す場合は、ユーザーが認識し、期待する一般的な名前(
Settings
やFeedback
など)を使用できます。それ以外の場合は、一意のコマンド名を使用することをおすすめします。コマンド名が他の Chat アプリと同じである場合、ユーザーは類似のコマンドをフィルタしてコマンドを見つけて使用する必要があります。
コマンドの説明を取得するには:
- コマンドを使用する際にユーザーが期待できることを把握できるように、説明は簡潔でわかりやすいものにします。
- コマンドに書式設定の要件がある場合は、ユーザーに伝えます。たとえば、引数テキストを必要とするスラッシュ コマンドを作成する場合は、説明を
Remind me to do [something] at [time]
などに設定します。 - Chat アプリがスペース内の全員に返信するか、コマンドを呼び出したユーザーに非公開で返信するかをユーザーに伝えます。たとえば、クイック コマンド
About
はLearn about this app (Only visible to you)
と記述できます。
Google Cloud コンソールでコマンドを構成する
スラッシュ コマンドまたはクイックコマンドを作成するには、Google Chat API 用に Chat アプリの構成でコマンドに関する情報を指定します。
Google Chat API でコマンドを構成するには、次の手順を行います。Google Chat API でスラッシュ コマンドを構成するには、次の手順を行います。
Google Cloud コンソールで、メニュー > [API とサービス] > [有効な API とサービス] > [Google Chat API] をクリックします。
[構成] をクリックします。
[詳細設定] の [トリガー] に移動し、[アプリ コマンド] フィールドに HTTP エンドポイントや Apps Script 関数などのトリガーが含まれていることを確認します。次のセクションでこのトリガーを使用して、コマンドに応答する必要があります。
[コマンド] で [コマンドを追加] をクリックします。
コマンドに関する次の情報を入力します。
- コマンド ID: Chat アプリがコマンドの認識とレスポンスの返信に使用する 1 ~ 1,000 の数字。
- コマンドの種類: [クイック コマンド] または [スラッシュ コマンド] を選択します。
- スラッシュ コマンドを構成する場合は、[スラッシュ コマンド名] フィールドに値を入力して、ユーザーがコマンドを呼び出すために入力する内容を指定します。先頭はスラッシュにする必要があります。テキストのみを含めることができ、最大 50 文字です。例:
/remindMe
- 名前: コマンドのわかりやすい名前。名前は 50 文字までで、特殊文字を含めることができます。
- 説明: コマンドの使用方法と形式を説明するテキスト。説明の最大文字数は 50 文字です。
省略可: Chat アプリがコマンドにダイアログで応答する場合は、[ダイアログを開く] チェックボックスをオンにします。
[保存] をクリックします。
これで、Chat アプリ用にコマンドが構成されました。
コマンドに応答する
ユーザーがコマンドを使用すると、Chat アプリはイベント オブジェクトを受け取ります。イベント ペイロードには、呼び出されたコマンドに関する詳細(コマンド ID やコマンド タイプなど)を含む appCommandPayload
オブジェクトが含まれるため、適切なレスポンスを返すことができます。イベント オブジェクトは、アプリ コマンド トリガーを構成したときに指定した HTTP エンドポイントまたは Apps Script 関数に送信されます。

/help
に非公開で応答し、サポートを受ける方法を説明します。次のコードは、スラッシュ コマンド /about
にテキスト メッセージで返信する Chat アプリの例を示しています。スラッシュ コマンドに応答するため、Chat アプリは アプリコマンド トリガーのイベント オブジェクトを処理します。イベント オブジェクトのペイロードにスラッシュ コマンド ID が含まれている場合、Chat アプリは createMessageAction
オブジェクトとともにアクション DataActions
を返します。
// The ID of the slash command "/about".
// It's not enabled by default, set to the actual ID to enable it. You must
// use the same ID as set in the Google Chat API configuration.
const ABOUT_COMMAND_ID = 0;
/**
* Google Cloud Function that responds to events sent from a
* Google Chat space.
*
* @param {Object} req Request sent from Google Chat space
* @param {Object} res Response to send back
*/
exports.avatarApp = function avatarApp(req, res) {
if (req.method === 'GET' || !req.body.chat) {
return res.send('Hello! This function is meant to be used ' +
'in a Google Chat Space.');
}
// Stores the Google Chat event as a variable.
const chatEvent = req.body.chat;
// Handles events that contain payloads about commands
if (chatEvent.appCommandPayload) {
// Stores the Google Chat app command metadata as a variable.
const appCommandMetadata = chatEvent.appCommandPayload.appCommandMetadata;
// Executes the slash command logic based on its ID.
// Slash command IDs are set in the Google Chat API configuration.
switch (appCommandMetadata.appCommandId) {
case ABOUT_COMMAND_ID :
return res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'The Avatar app replies to Google Chat messages.'
}}}}});
}
// Handles MESSAGE events
} else if (chatEvent.messagePayload) {
// Stores the Google Chat event as a variable.
const chatMessage = chatEvent.messagePayload.message;
// Replies with the sender's avatar in a card otherwise.
const displayName = chatMessage.sender.displayName;
const avatarUrl = chatMessage.sender.avatarUrl;
res.send({ hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Here\'s your avatar',
cardsV2: [{
cardId: 'avatarCard',
card: {
name: 'Avatar Card',
header: {
title: `Hello ${displayName}!`,
},
sections: [{
widgets: [{
textParagraph: { text: 'Your avatar picture: ' }
}, {
image: { imageUrl: avatarUrl }
}]
}]
}
}]
}}}}});
}
};
// The ID of the slash command "/about".
// It's not enabled by default, set to the actual ID to enable it. You must
// use the same ID as set in the Google Chat API configuration.
const ABOUT_COMMAND_ID = 0;
/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {Object} event the event object from Google Chat
*/
function onMessage(event) {
// Stores the Google Chat event as a variable.
const chatMessage = event.chat.messagePayload.message;
// Replies with the sender's avatar in a card otherwise.
const displayName = chatMessage.sender.displayName;
const avatarUrl = chatMessage.sender.avatarUrl;
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'Here\'s your avatar',
cardsV2: [{
cardId: 'avatarCard',
card: {
name: 'Avatar Card',
header: {
title: `Hello ${displayName}!`,
},
sections: [{
widgets: [{
textParagraph: { text: 'Your avatar picture: ' }
}, {
image: { imageUrl: avatarUrl }
}]
}]
}
}]
}}}}};
}
/**
* Responds to an APP_COMMAND event in Google Chat.
*
* @param {Object} event the event object from Google Chat
*/
function onAppCommand(event) {
// Stores the Google Chat app command metadata as a variable.
const appCommandMetadata = event.chat.appCommandPayload.appCommandMetadata;
// Executes the slash command logic based on its ID.
// Slash command IDs are set in the Google Chat API configuration.
switch (appCommandMetadata.appCommandId) {
case ABOUT_COMMAND_ID :
return { hostAppDataAction: { chatDataAction: { createMessageAction: { message: {
text: 'The Avatar app replies to Google Chat messages.'
}}}}};
}
}
このコードサンプルを使用するには、ABOUT_COMMAND_ID
を、Chat API でコマンドを構成したときに指定したコマンド ID に置き換えてください。
コマンドをテストする
コマンドとコードをテストするには、Google Chat アプリのインタラクティブ機能をテストするをご覧ください。
Chat UI でコマンドをテストして使用する方法については、Google Chat ヘルプ ドキュメントの Google Chat でアプリを使用するをご覧ください。
関連トピック
- コマンドを使用する Chat アプリのサンプルを表示する
- メッセージを送信する
- インタラクティブ ダイアログを開く