このページでは、Google Chat アプリとしてプライベート メッセージを作成して送信する方法について説明します。
プライベート メッセージは、指定した Chat ユーザーにのみ表示される Chat アプリ メッセージです。複数のユーザーがいるスペースでプライベート メッセージを使用すると、各ユーザーは非公開で Chat アプリを操作できます。たとえば、Chat アプリでは、メッセージを非公開で送信して次のことができます。
- スラッシュ コマンドに応答します。たとえば、ユーザーがスペースで Chat アプリの
/about
スラッシュ コマンドを呼び出すと、Chat アプリは、そのアプリの機能と使い方を説明するプライベート メッセージで返信できます。 - 1 人のユーザーのみに関連する情報を通知または送信します。たとえば、タスクが割り当てられたことをユーザーに通知したり、タスクの完了を通知したりできます。
- エラー メッセージを送信します。たとえば、ユーザーがスラッシュ コマンドに必要な引数テキストを省略した場合、Chat アプリは、プライベート メッセージを送信してエラーを説明し、ユーザーがコマンドをフォーマットできるようサポートできます。
Chat アプリがプライベート メッセージを送信すると、メッセージは自分にしか表示されないことをユーザーに通知するラベルがメッセージに表示されます。
前提条件
Node.js
- Google Chat API が有効で構成された Google Cloud プロジェクト。手順については、Google Chat アプリを作成するをご覧ください。
- スラッシュ コマンドに非公開で応答するには、Chat アプリ用に構成されたスラッシュ コマンドを作成します。ビルドするには、スラッシュ コマンドに応答するをご覧ください。
messages.create()
メソッドを使用してプライベート メッセージを送信するには、アプリ認証を使用する必要があります。
注: このガイドの Node.js コードサンプルは、Google Cloud Functions として実行するように作成されています。
Python
- Google Chat API が有効で構成された Google Cloud プロジェクト。手順については、Google Chat アプリを作成するをご覧ください。
- スラッシュ コマンドに非公開で応答するには、Chat アプリ用に構成されたスラッシュ コマンドを作成します。ビルドするには、スラッシュ コマンドに応答するをご覧ください。
messages.create()
メソッドを使用してプライベート メッセージを送信するには、アプリ認証を使用する必要があります。
注: このガイドの Python コードサンプルは、Python 3.10 を使用して Google Cloud Functions として実行するように作成されています。
Apps Script
- Chat アプリ。Chat アプリを作成するには、このquickstartに従ってください。
- スラッシュ コマンドに非公開で応答するには、Chat アプリ用に構成されたスラッシュ コマンドを作成します。ビルドするには、スラッシュ コマンドに応答するをご覧ください。
messages.create()
メソッドを使用してプライベート メッセージを送信するには、アプリ認証を使用する必要があります。
プライベート メッセージの送信機能
Chat アプリとして非公開でメッセージを送信するには、メッセージの作成時に privateMessageViewer
フィールドを指定します。プライベート メッセージは、メッセージの作成と同じように、ユーザー操作に応答するか、Message
リソースで Google Chat API の create()
メソッドを呼び出して非同期で作成します。テキスト メッセージまたはカード メッセージを送信する手順については、メッセージを送信するをご覧ください。
次の例は、Hello private world!
という非公開テキスト メッセージの JSON を示しています。
{
"text": "Hello private world!",
"privateMessageViewer": "USER"
}
この例の USER
は、メッセージを User
リソース形式で表示できる Chat ユーザーを表します。ユーザー操作に応答する場合は、操作イベントから User
オブジェクトを指定できます。例については、次のスラッシュ コマンドに非公開で応答するをご覧ください。
それ以外の場合は、プライベート メッセージの閲覧者を指定するには、User
リソースの name
フィールドを使用します。
{
"text": "Hello private world!",
"privateMessageViewer": {
"name": "users/USER_ID"
}
}
この例では、name
フィールドを使用して、Google Chat で閲覧者の User
リソース名を指定しています。USER_ID
は、ユーザーの一意の ID(12345678987654321
や hao@cymbalgroup.com
など)に置き換えます。
ユーザーの指定の詳細については、Google Chat ユーザーの識別と指定をご覧ください。
スラッシュ コマンドに非公開で応答する
次のコードは、スラッシュ コマンドにプライベート メッセージで応答する Chat アプリの例を示しています。
Chat アプリは MESSAGE
インタラクション イベントを処理し、使用方法を説明するプライベート テキスト メッセージで /help
スラッシュ コマンドに応答します。
Node.js
/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {!Object} req Request sent from Google Chat app
* @param {!Object} res Response to send back
*
* @return {!Object} respond to slash command
*/
exports.onMessage = function onMessage(req, res) {
if (req.method === 'GET' || !req.body.message) {
return res.send('Hello! This function is meant to be used in Google Chat app.');
}
const event = req.body;
// Checks for the presence of event.message.slashCommand.
// If the slash command is "/help", responds with a private text message.
if (event.message.slashCommand) {
switch (event.message.slashCommand.commandId) {
case '1': // /help
return res.json({
privateMessageViewer: event.user,
text: 'This Chat app was created by Cymbal Labs. To get help with this app, <https://cymbalgroup.com/docs|see our documentation> or <https://cymbalgroup.com/support|contact our support team>.'
});
}
}
// If the Chat app doesn't detect a slash command, it responds
// with a private text message
return res.json({
privateMessageViewer: event.user,
text: 'Try a slash command.'
});
};
Apps Script
/**
* Responds to a MESSAGE event in Google Chat.
*
* @param {Object} event the event object from Google Chat
*/
function onMessage(event) {
if (event.message.slashCommand) {
switch (event.message.slashCommand.commandId) {
case 1: // Responds to /help
return {
"privateMessageViewer": event.user,
"text": "This Chat app was created by Cymbal Labs. To get help with this app, <https://cymbalgroup.com/docs|see our documentation> or <https://cymbalgroup.com/support|contact our support team>."
};
}
}
else {
return { "text": "Try a slash command.", "privateMessageViewer": event.user };
}
}
Python
from typing import Any, Mapping
import flask
import functions_framework
@functions_framework.http
def main(req: flask.Request) -> Mapping[str, Any]:
"""Responds to a MESSAGE event in Google Chat.
Args:
req (flask.Request): the event object from Chat API.
Returns:
Mapping[str, Any]: open a Dialog in response to a card's button click.
"""
if req.method == 'GET':
return 'Hello! This function must be called from Google Chat.'
request = req.get_json(silent=True)
# Checks for the presence of event.message.slashCommand.
# If the slash command is "/help", responds with a private text message.
if request.get('message', {}).get('slashCommand'):
command_id = request.get('message', {}).get('slashCommand').get('commandId')
if command_id == '1': # /help
return {
'privateMessageViewer': request.get('user'),
'text': (
'This Chat app was created by Cymbal Labs. To get help with this'
' app, <https://cymbalgroup.com/docs|see our documentation> or'
' <https://cymbalgroup.com/support|contact our support team>.'
),
}
return {
'privateMessageViewer': request.get('user'),
'text': 'Try a slash command.',
}
制限事項
プライベート メッセージを送信する場合、メッセージに次の要素を含めたり、使用したりすることはできません。
- 添付ファイル。
- アクセサリの操作:
- 部分的に非公開のメッセージ。たとえば、Chat アプリでは、テキストを含むメッセージを送信できません。また、テキストは 1 人のユーザーにのみ表示され、カードはスペース内の全員が表示できるカードは送信できません。
- ユーザー認証。プライベート メッセージを送信できるのは Chat アプリのみです。そのため、Chat アプリは、メッセージを非公開で送信するためのユーザーとして認証できません。
プライベート メッセージを更新または削除する
Google Chat メッセージを更新または削除するには、Chat API を呼び出す必要があります。非公開メッセージの閲覧者の変更や、メッセージの公開はできません。したがって、プライベート メッセージを更新する場合は、API 呼び出しの privateMessageViewer
フィールドを省略する必要があります(このフィールドは出力のみ)。
プライベート メッセージを更新するには、メッセージを更新するをご覧ください。プライベート メッセージを削除するには、メッセージを削除するをご覧ください。