このページでは、Chat アプリのアプリのホームカード メッセージを作成して送信する方法について説明します。アプリのホームは、ユーザーが Chat アプリでダイレクト メッセージを開いたときに、Chat アプリから送信されるカスタマイズ可能なカード メッセージです。
たとえば、スラッシュ コマンドを使用して Chat アプリを操作するためのヒントが含まれるように、アプリのホームカード メッセージを構成できます。エンドユーザーに対しては、アプリ デベロッパーがこの機能を有効にした場合にのみ、Chat アプリのダイレクト メッセージでアプリホームを使用できます。
カードビルダーを使用して、Chat アプリ用の JSON カード メッセージを設計し、プレビューします。
カードビルダーを開く前提条件
Python
- Google Chat へのアクセス権を持つ Google Workspace アカウント。
- 公開されている Chat アプリ。Chat アプリを作成するには、このquickstartをご覧ください。
- インタラクティビティ用に構成された Google Chat アプリ。詳細については、インタラクション イベントを受信するように Google Chat アプリを構成するをご覧ください。
Apps Script
- Google Chat へのアクセス権を持つ Google Workspace アカウント。
- 公開されている Chat アプリ。Chat アプリを作成するには、このquickstartの手順に沿ってください。
- インタラクティビティ用に構成された Google Chat アプリ。詳細については、インタラクション イベントを受信するように Google Chat アプリを構成するをご覧ください。
Google Cloud コンソールで構成する
Python
Google Cloud コンソールで、メニュー アイコン > [その他のプロダクト] > [Google Workspace] > [プロダクト ライブラリ] > [Google Chat API] に移動します。
[Manage] をクリックし、[Configuration] タブをクリックします。
[Support App Home] を有効にします。
[Support App Home] チェックボックスをオンにします。
[App Home URL] フィールドに URL を追加します。この値は通常、[アプリの URL] と同じ URL です。この URL は
APP_HOME
イベントで呼び出されます。[保存] をクリックします。
Apps Script
Google Cloud コンソールで、メニュー アイコン > [その他のプロダクト] > [Google Workspace] > [プロダクト ライブラリ] > [Google Chat API] に移動します。
[Manage] をクリックし、[Configuration] タブをクリックします。
[Support App Home] チェックボックスをオンにします。
[保存] をクリックします。
チャットアプリを構成する
アプリのホームに新しいカード メッセージを送信するように Chat アプリを構成します。
Python
ユーザーが Chat アプリからダイレクト メッセージを開くと、APP_HOME
イベントが Chat アプリに送信されます。Chat アプリがこのイベントを受信すると、pushCard
ナビゲーションとともに RenderActions
の JSON インスタンスが返されます。
@app.route('/', methods=['POST'])
def on_event():
event = request.get_json()
chat = event.get('chat')
if chat is not None:
return handle_chat_event(event)
def handle_chat_event(event):
if event['chat'].get('type') == 'APP_HOME':
return get_app_home_card()
def get_app_home_card():
return {
"action": {
"navigations": [
{
"pushCard": {
"sections": [
{
"widgets": [
{
"buttonList": {
"buttons": [
{
"text": "Open documentation",
"onClick": {
"openLink": {
"url": "https://developers.google.com/chat"
}
}
}
]
}
}
]
}
]
}
}
]
}
}
Apps Script
この例では、カード JSON を返してカード メッセージを送信します。Apps Script カードサービスを使用することもできます。
pushCard
ナビゲーションを使用して RenderActions
の JSON インスタンスを返す onAppHome
関数を実装します。
// "onAppHome" is the pre-defined name of the callback that the Chat servers
// execute.
function onAppHome() {
return {
action: {
navigations: [
{
pushCard: getCard()
}
]
}
};
}
function getCard() {
return {
sections: [
{
widgets: [
{
buttonList: {
buttons: [
{
text: "Open documentation",
onClick: {
openLink: {
url: "https://developers.google.com/chat"
}
}
}
]
}
}
]
}
]
};
}
アプリのホームカード メッセージを更新する
アプリのホームカード メッセージは、ユーザーがカード メッセージで情報を送信したとき、またはダイアログを閉じたときに更新できます。たとえば、アプリの最初のホームカード メッセージは、ユーザーにフォームに記入するよう求めるウェルカム メッセージです。ユーザーがフォームに入力すると、更新されたアプリのホームカード メッセージが送信されます。アップデートは、updateCard
ナビゲーションを含む RenderActions
のインスタンスとともに返す必要があります。
Python
HTTP アプリの場合、アプリのホームカード メッセージの更新はユーザーが入力したプロセス情報と似ていますが、RenderActions
を返す必要があります。invokedFunction
は、Card
ウィジェットに関連付けられている、呼び出される関数の名前を表します。詳細については、CommonEventObject
をご覧ください。次の例の submitForm
は、ユーザーがフォームデータを送信したことを示しています。
@app.route('/', methods=['POST'])
def on_event():
event = request.get_json()
chat = event.get('chat')
if chat is not None:
return handle_chat_event(event)
def handle_chat_event(event):
if event['chat'].get('type') == 'SUBMIT_FORM':
event_object = event.get('commonEventObject')
if event_object is not None:
// Forms
if 'submitForm' == event_object.get('invokedFunction'):
return {
'render_actions': {
'action': {
'navigations': [{
'updateCard': get_update_card()
}]
}
}
}
def get_update_card():
return {
"action": {
"navigations": [{
"pushCard": {
"sections": [{
"widgets": [{
"buttonList": {
"buttons": [{
"text": "Open documentation",
"onClick": {
"openLink": {
"url": "https://developers.google.com/chat"
}
},
}]
}
}]
}]
}
}]
}
}
Apps Script
この例では、カード JSON を返してカード メッセージを送信します。Apps Script カードサービスを使用することもできます。
// Called from elsewhere (i.e. on button press).
function updateAppHomeCard(event) {
return {
render_actions: {
action: {
navigations: [
{
updateCard: getCard()
}
]
}
}
}
}
function getCard() {
return {
sections: [
{
widgets: [
{
buttonList: {
buttons: [
{
text: "Open documentation",
onClick: {
openLink: {
url: "https://developers.google.com/chat"
}
}
}
]
}
}
]
}
]
};
}
制限事項
一般に、navigation
は Chat アプリでは使用できません。積み重なったカードを返却することはできません。
Chat アプリでは、pushCard
(初回レスポンス用)と updateCard
(アップデート用)のみを使用できます。
関連トピック
ダイアログを開くには、
OPEN_DIALOG
インタラクションを使用します。詳細については、アプリのホームカード メッセージに応じてダイアログを開くをご覧ください。ダイアログを閉じるには、
CLOSE_DIALOG
インタラクションを使用してダイアログを閉じて、アプリのホームカード メッセージに戻るか、CLOSE_DIALOG_EXECUTE
インタラクションを使用してダイアログを閉じて、アプリのホームカード メッセージを更新します。詳細については、アプリのホームカード メッセージのダイアログに応答するをご覧ください。アプリのホームカード メッセージを作成して送信する方法の例については、Codelab の Gemini を使用して Google Chat 用のアプリを作成するの問題管理チャットアプリをご覧ください。