برای یک برنامه Google Chat پیام کارت خانه برنامه ارسال کنید

این صفحه نحوه ایجاد و ارسال پیام کارت اصلی برنامه برای برنامه چت را توضیح می دهد. App home یک پیام کارت قابل تنظیم است که یک برنامه Chat هنگامی که کاربر یک پیام مستقیم را با برنامه Chat باز می کند برای آن ارسال می کند.

کارت خانه برنامه با دو پیام.

برای مثال، می‌توانید پیام کارت صفحه اصلی برنامه را طوری پیکربندی کنید که نکاتی برای تعامل با برنامه Chat با استفاده از دستورات اسلش داشته باشد. برای کاربران نهایی، صفحه اصلی برنامه تنها در صورتی در پیام مستقیم برنامه چت در دسترس است که توسعه‌دهنده برنامه این ویژگی را فعال کرده باشد.


از Card Builder برای طراحی و پیش نمایش پیام های کارت JSON برای برنامه های Chat استفاده کنید:

کارت ساز را باز کنید

پیش نیازها

پایتون

اسکریپت برنامه ها

در کنسول Google Cloud پیکربندی کنید

پایتون

  1. در کنسول Google Cloud، به منو > محصولات بیشتر > Google Workspace > کتابخانه محصول > Google Chat API بروید.

    به Google Chat API بروید

  2. روی Manage کلیک کنید و سپس روی تب Configuration کلیک کنید.

  3. صفحه اصلی برنامه پشتیبانی را فعال کنید.

  4. کادر تأیید Home App App را انتخاب کنید.

  5. در قسمت URL صفحه اصلی برنامه ، یک URL اضافه کنید. این مقدار معمولاً همان URL با URL برنامه است. این URL برای رویدادهای APP_HOME فراخوانی می شود.

  6. روی ذخیره کلیک کنید.

اسکریپت برنامه ها

  1. در کنسول Google Cloud، به منو > محصولات بیشتر > Google Workspace > کتابخانه محصول > Google Chat API بروید.

    به Google Chat API بروید

  2. روی Manage کلیک کنید و سپس روی تب Configuration کلیک کنید.

  3. کادر تأیید Home App App را انتخاب کنید.

  4. روی ذخیره کلیک کنید.

برنامه چت خود را پیکربندی کنید

برنامه چت خود را برای ارسال پیام کارت جدید برای صفحه اصلی برنامه پیکربندی کنید.

پایتون

وقتی کاربر یک پیام مستقیم از یک برنامه چت باز می کند، یک رویداد APP_HOME به برنامه چت شما ارسال می شود. وقتی یک برنامه چت این رویداد را دریافت می‌کند، یک نمونه JSON از RenderActions با پیمایش pushCard برگردانده می‌شود.

@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"
                            }
                          }
                        }
                      ]
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }

اسکریپت برنامه ها

این مثال با برگرداندن کارت JSON یک پیام کارت ارسال می کند. همچنین می‌توانید از سرویس کارت برنامه‌های اسکریپت استفاده کنید.

یک تابع onAppHome را برای بازگرداندن نمونه JSON از RenderActions با پیمایش pushCard پیاده سازی کنید:

// "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"
                    }
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  };
}

پیام کارت خانه برنامه را به روز کنید

هنگامی که کاربر اطلاعاتی را در پیام کارت ارسال می کند یا یک گفتگو را می بندد، پیام کارت خانه برنامه را می توان به روز کرد. به عنوان مثال، پیام کارت خانه برنامه اولیه یک پیام خوش آمدگویی است که از کاربر می‌خواهد فرمی را با اطلاعات پر کند. پس از تکمیل فرم توسط کاربر، پیام کارت خانه برنامه به روز شده ارسال می شود. به‌روزرسانی باید با نمونه‌ای از RenderActions که حاوی یک پیمایش updateCard است، بازگردانده شود.

پایتون

برای برنامه‌های 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"
                                      }
                                  },
                              }]
                          }
                      }]
                  }]
              }
          }]
      }
  }

اسکریپت برنامه ها

این مثال با برگرداندن کارت JSON یک پیام کارت ارسال می کند. همچنین می‌توانید از سرویس کارت برنامه‌های اسکریپت استفاده کنید.

// 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 برای برنامه‌های چت در دسترس نیست. شما نمی توانید یک پشته کارت را برگردانید. فقط pushCard (برای پاسخ اولیه) و updateCard (برای به‌روزرسانی) برای برنامه‌های چت در دسترس هستند.