แปลงแอป Google Chat แบบอินเทอร์แอกทีฟเป็นส่วนเสริม Google Workspace

หากคุณสร้างและเผยแพร่แอป Google Chat ที่ใช้เหตุการณ์การโต้ตอบของ Google Chat API เช่น เหตุการณ์ที่อิงตามการเริ่มต้นใช้งานแอป Google Chat อย่างรวดเร็ว หน้านี้จะแสดงวิธีแปลงแอปดังกล่าวเป็นส่วนเสริมของ Google Workspace ที่ขยาย Google Chat

การแปลงจะช่วยให้แอป Google Chat ใช้เฟรมเวิร์กส่วนเสริมของ Google Workspace ได้ ซึ่งจะเปิดโอกาสใหม่ๆ ในการผสานรวมและฟีเจอร์ต่างๆ ภายใน Google Chat และทั่วทั้ง Google Workspace ตัวอย่างเช่น คุณสามารถเผยแพร่ส่วนเสริม Google Workspace รายการเดียว ผ่าน Google Workspace Marketplace ซึ่งขยายแอป Chat ควบคู่ไปกับแอปพลิเคชันโฮสต์อื่นๆ ของ Google Workspace เช่น Gmail, ปฏิทิน และเอกสาร

ข้อจำกัด

ก่อนเริ่มการแปลง โปรดอ่านข้อจำกัดของส่วนเสริม Google Workspace ที่ขยาย Google Chat เพื่อให้มั่นใจว่าแอป Google Chat จะแปลงได้โดยไม่สูญเสียฟังก์ชันการทำงานที่สำคัญ

ขั้นตอนที่ 1: คัดลอกโค้ดแอป Google Chat ที่มีอยู่

กระบวนการ Conversion ต้องมีการเปลี่ยนแปลงโค้ด หากไม่ต้องการให้แอป Google Chat ที่ใช้งานจริงได้รับผลกระทบ ให้สร้างและทำงานกับสำเนาของโค้ด

Apps Script

  1. เปิดโปรเจ็กต์ Google Apps Script ของแอป Google Chat ที่มีอยู่
  2. คลิกภาพรวม ทางด้านซ้าย
  3. คลิกทำสำเนา ทางด้านขวา
  4. คลิกการตั้งค่าโปรเจ็กต์ ทางด้านซ้าย
  5. ในส่วนโปรเจ็กต์ Google Cloud ให้คลิกเปลี่ยนโปรเจ็กต์
  6. ป้อนหมายเลขโปรเจ็กต์เดียวกันที่เชื่อมโยงกับโปรเจ็กต์แอป Google Chat ที่มีอยู่
  7. คลิกตั้งค่าโปรเจ็กต์

HTTP

สร้างฟอร์กหรือสำเนาของฐานของโค้ดที่มีอยู่ แล้วทำให้ใช้งานได้เป็นบริการใหม่ แยกจากแอป Google Chat ที่ใช้งานจริง

หากแอปของคุณได้รับการติดตั้งใช้งานใน Google Cloud และใช้ฟีเจอร์ที่เชื่อมโยงกับ โปรเจ็กต์ที่อยู่ในระบบคลาวด์ (เช่น ข้อมูลประจำตัว App Engine เริ่มต้น) คุณควรติดตั้งใช้งานโค้ดใหม่ในบริการที่เชื่อมโยงกับ โปรเจ็กต์แอป Google Chat ที่มีอยู่

ขั้นตอนที่ 2: แก้ไขโค้ดที่คัดลอก

ส่วนเสริมของ Google Workspace ที่ขยายการใช้งาน Google Chat จะใช้โครงสร้างคำขอและ การตอบกลับที่แตกต่างจากแอป Google Chat ที่สร้างขึ้นด้วย เหตุการณ์การโต้ตอบของ Chat API คุณต้อง อัปเดตโค้ดเพื่อใช้ส่วนเสริม Google Workspace EventObject แทนEvent ของ Google Chat API สำหรับคำขอและการตอบกลับ ใช้คู่มือการแปลงโค้ดเพื่อแก้ไขโค้ด

ขั้นตอนที่ 3: เปิดใช้การกำหนดค่าส่วนเสริมของ Google Workspace สำหรับผู้ใช้ทดสอบ

ใช้คอนโซล Google Cloud เพื่อกำหนดค่าการตั้งค่าส่วนเสริม Google Workspace สำหรับแอป Google Chat ของคุณ

  1. ไปที่หน้าการกำหนดค่า Google Chat API ในคอนโซล Google Cloud

    ไปที่หน้าการกำหนดค่า Google Chat API

  2. ในส่วนฟีเจอร์แบบอินเทอร์แอกทีฟ ให้เปิดเปิดใช้ฟีเจอร์แบบอินเทอร์แอกทีฟ

  3. ในส่วนแปลงเป็นส่วนเสริมของ Google Workspace ให้คลิกแปลงเป็นส่วนเสริม

  4. เปิดใช้เปิดการตั้งค่าการกำหนดค่าส่วนเสริม

  5. ในส่วนระดับการเข้าถึง ให้เพิ่มอีเมลของผู้ใช้ทดสอบ

  6. หากจำเป็น ให้อัปเดตการตั้งค่าการเชื่อมต่อด้วย URL ของปลายทางการทำให้ใช้งานได้หรือรหัสการทำให้ใช้งานได้ของ Apps Script ของโค้ดแอป Google Chat ที่คัดลอกและแก้ไขจากขั้นตอนที่ 2

  7. คลิกบันทึกและทดสอบ

ขั้นตอนที่ 4: ทดสอบแอปที่แปลงแล้ว

ทดสอบฟังก์ชันการทำงานของส่วนเสริม Google Workspace อย่างละเอียดโดยใช้บัญชีผู้ใช้ทดสอบที่กำหนดค่าไว้ในขั้นตอนที่ 3 ยืนยันฟีเจอร์และการโต้ตอบทั้งหมด

ขั้นตอนที่ 5: ทำ Conversion ให้เสร็จสมบูรณ์สำหรับผู้ใช้ทั้งหมด

หลังจากยืนยันว่าส่วนเสริม Google Workspace ที่แปลงแล้วทำงานได้อย่างถูกต้อง คุณก็ทำให้ส่วนเสริมพร้อมให้บริการแก่ผู้ใช้ทุกคนได้

  1. ไปที่หน้าการกำหนดค่า Google Chat API ในคอนโซล Google Cloud

    ไปที่หน้าการกำหนดค่า Google Chat API

  2. คลิกแปลงเป็นส่วนเสริมในส่วนฟีเจอร์แบบอินเทอร์แอกทีฟ แผงด้านข้างจะเปิดขึ้น

  3. คลิกแปลงเป็นส่วนเสริมในแผงด้านข้าง

  4. พิมพ์รหัสโปรเจ็กต์ แล้วคลิกแปลง

ตอนนี้แอป Google Chat ของคุณเป็นส่วนเสริมของ Google Workspace ที่ขยาย Google Chat

ไม่บังคับ: ล้างข้อมูลหรือปล่อยทรัพยากร Google Cloud ที่ไม่ได้ใช้

ไม่บังคับ: หลังจากแปลงแอป Google Chat เป็นส่วนเสริมของ Google Workspace แล้ว หากต้องการหลีกเลี่ยงการเรียกเก็บเงินจากบัญชี Google Cloud สำหรับทรัพยากรที่แอป Google Chat ใช้ซึ่งไม่ได้ใช้งานแล้ว ให้พิจารณาปิดทรัพยากรเหล่านั้น

คู่มือการแปลงโค้ด

ส่วนนี้จะอธิบายรายละเอียดการแมประหว่างรูปแบบการโต้ตอบของ Google Chat API Event กับรูปแบบของส่วนเสริม Google Workspace EventObject

การแมปคำขอ

ตารางต่อไปนี้แสดงวิธีที่ฟิลด์ใน Google Chat API Event แมปกับฟิลด์ที่เกี่ยวข้องในส่วนเสริม Google Workspace EventObject

ฟิลด์การโต้ตอบของ Google Chat API Event ฟิลด์EventObject ส่วนเสริมของ Google Workspace หมายเหตุ
action.actionMethodName ไม่มี สำหรับการโต้ตอบกับบัตร คุณสามารถส่งชื่อเมธอดเป็นพารามิเตอร์ใน commonEventObject.parameters ได้ ดูเปิดกล่องโต้ตอบเริ่มต้น
action.parameters commonEventObject.parameters
appCommandMetadata chat.appCommandPayload.appCommandMetadata
common commonEventObject
configCompleteRedirectUrl
  • chat.appCommandPayload.configCompleteRedirectUri
  • chat.addedToSpacePayload.configCompleteRedirectUri
  • chat.messagePayload.configCompleteRedirectUri
พร้อมใช้งานในเพย์โหลดต่างๆ โดยขึ้นอยู่กับประเภทเหตุการณ์
dialogEventType
  • chat.appCommandPayload.dialogEventType
  • chat.buttonClickedPayload.dialogEventType
พร้อมใช้งานในเพย์โหลดต่างๆ โดยขึ้นอยู่กับประเภทเหตุการณ์
eventTime chat.eventTime
isDialogEvent
  • chat.appCommandPayload.isDialogEvent
  • chat.buttonClickedPayload.isDialogEvent
พร้อมใช้งานในเพย์โหลดต่างๆ โดยขึ้นอยู่กับประเภทเหตุการณ์
message
  • chat.messagePayload.message
  • chat.buttonClickedPayload.message
  • chat.appCommandPayload.message
พร้อมใช้งานในเพย์โหลดต่างๆ โดยขึ้นอยู่กับประเภทเหตุการณ์
space
  • chat.messagePayload.space
  • chat.addedToSpacePayload.space
  • chat.removedFromSpacePayload.space
  • chat.buttonClickedPayload.space
  • chat.widgetUpdatedPayload.space
  • chat.appCommandPayload.space
thread
  • chat.messagePayload.message.thread
  • chat.buttonClickedPayload.message.thread
  • chat.appCommandPayload.message.thread
พร้อมใช้งานในเพย์โหลดต่างๆ โดยขึ้นอยู่กับประเภทเหตุการณ์
threadKey
  • chat.messagePayload.message.thread.threadKey
  • chat.buttonClickedPayload.message.thread.threadKey
  • chat.appCommandPayload.message.threadKey
พร้อมใช้งานในเพย์โหลดต่างๆ โดยขึ้นอยู่กับประเภทเหตุการณ์
token ไม่มี การยืนยันจะได้รับการจัดการแตกต่างกัน โปรดดูขอการยืนยันสำหรับแอป HTTP
type ไม่มี ระบบจะอนุมานประเภทเหตุการณ์จากทริกเกอร์
user chat.user

ขอการแมปตามกรณีการใช้งาน

ตารางต่อไปนี้แสดงความแตกต่างในเพย์โหลดคำขอสำหรับกรณีการใช้งานทั่วไป ระหว่างแอป Google Chat ที่สร้างขึ้นด้วยเหตุการณ์การโต้ตอบของ Chat API กับส่วนเสริมของ Google Workspace ที่ขยาย Google Chat

กรณีการใช้งาน Event เพย์โหลดการโต้ตอบของ Chat API เพย์โหลดของส่วนเสริม Google Workspace EventObject
เพิ่มแอปไปยังพื้นที่ทำงานแล้ว
{
  "type": "ADDED_TO_SPACE",
  "space": { ... }
}
{
  "chat": {
    "addedToSpacePayload": {
      "space": { ... }
    }
  }
}
นำแอปออกจากพื้นที่ทำงาน
{
  "type": "REMOVED_FROM_SPACE",
  "space": { ... }
}
{
  "chat": {
    "removedFromSpacePayload": {
      "space": { ... }
    }
  }
}
ผู้ใช้ @พูดถึงแอป
{
  "type": "MESSAGE",
  "message": { ... },
  "space": { ... },
  "configCompleteRedirectUrl": "..."
}
{
  "chat": {
    "messagePayload": {
      "message": { ... },
      "space": { ... },
      "configCompleteRedirectUri": "..."
    }
  }
}
ผู้ใช้ใช้การกล่าวถึงแอปด้วย @ เพื่อเพิ่มแอปไปยังพื้นที่ทำงาน คุณต้องจัดการคำขอจาก Google Chat 1 รายการ ดังนี้
{
  "type": "ADDED_TO_SPACE",
  "space": { ... },
  "message": { ... }
}
คุณต้องจัดการคำขอ 2 รายการจาก Google Chat

คำขอแรก
{
  "chat": {
    "addedToSpacePayload": {
      "space": { ... },
      "interactionAdd": true
    }
  }
}

คำขอที่ 2:
{
  "chat": {
    "messagePayload": {
      "message": { ... },
      "space": { ... }
    }
  }
}
คำสั่งเครื่องหมายทับ
{
  "type": "MESSAGE",
  "message": { "slashCommand": { ... } },
  "space": { ... }
}
{
  "chat": {
    "appCommandPayload": {
      "message": { ... },
      "space": { ... },
      "appCommandMetadata": { ... }
    }
  }
}
คำสั่งเครื่องหมายทับเพื่อเพิ่มแอปไปยังพื้นที่ทำงาน คุณต้องจัดการคำขอจาก Google Chat 1 รายการ ดังนี้
{
  "type": "ADDED_TO_SPACE",
  "space": { ... },
  "message": { "slashCommand": { ... } }
}
คุณต้องจัดการคำขอ 2 รายการจาก Google Chat

คำขอแรก
{
  "chat": {
    "addedToSpacePayload": {
      "space": { ... },
      "interactionAdd": true
    }
  }
}

คำขอที่ 2:
{
  "chat": {
    "appCommandPayload": {
      "message": { ... },
      "space": { ... },
      "appCommandMetadata": { ... }
    }
  }
}
ผู้ใช้คลิกปุ่มในการ์ดหรือกล่องโต้ตอบ
{
  "type": "CARD_CLICKED",
  "common": { ... },
  "space": { ... },
  "message": { ... },
  "isDialogEvent": "...",
  "dialogEventType": "..."
}

สําหรับเหตุการณ์กล่องโต้ตอบ common.formInputs จะมีค่าของวิดเจ็ต ตัวอย่าง Google Apps Script

{
  "type": "CARD_CLICKED",
  "common": {
   "formInputs": {
    "contactName": {
      "": { "stringInputs": { "value": ["Kai 0"] }}
    }
  }
  },
  "space": { ... },
  "message": { ... },
  "isDialogEvent": true,
  "dialogEventType": "..."
}
{
  "commonEventObject": { ... },
  "chat": {
    "buttonClickedPayload": {
      "message": { ... },
      "space": { ... },
      "isDialogEvent": "...",
      "dialogEventType": "..."
    }
  }
}

สําหรับเหตุการณ์กล่องโต้ตอบ commonEventObject.formInputs จะมีค่าของวิดเจ็ต ตัวอย่าง Google Apps Script

{
  "commonEventObject": {
     "formInputs": {
      "contactName": {
        "stringInputs": {
          "value": ["Kai 0"]
        }
      }
    }
  },
  "chat": {
    "buttonClickedPayload": {
      "message": { ... },
      "space": { ... },
      "isDialogEvent": "true",
      "dialogEventType": "..."
    }
  }
}
ผู้ใช้ส่งข้อมูลในการ์ดหน้าแรกของแอป
{
  "type": "SUBMIT_FORM",
  "common": { ... },
  "space": { ... },
  "message": { ... },
  "isDialogEvent": "...",
  "dialogEventType": "..."
}
{
  "commonEventObject": { ... },
  "chat": {
    "buttonClickedPayload": {
      "message": { ... },
      "space": { ... },
      "isDialogEvent": "...",
      "dialogEventType": "SUBMIT_DIALOG"
    }
  }
}
ผู้ใช้เรียกใช้คำสั่งแอปโดยใช้คำสั่งด่วน
{
  "type": "APP_COMMAND",
  "space": { ... },
  "isDialogEvent": "...",
  "dialogEventType": "..."
}
{
  "chat": {
    "appCommandPayload": {
      "message": { ... },
      "space": { ... },
      "appCommandMetadata": { ... }
    }
  }
}
หน้าตัวอย่างลิงก์
{
  "type": "MESSAGE",
  "message": {
    "matchedUrl": "..."
  },
  "space": { ... }
}
{
  "chat": {
    "messagePayload": {
      "message": {
        "matchedUrl": "..."
      },
      "space": { ... }
    }
  }
}
ผู้ใช้อัปเดตวิดเจ็ตในข้อความการ์ดหรือกล่องโต้ตอบ
{
  "type": "WIDGET_UPDATED",
  "space": { ... },
  "common": { ... }
}
{
  "commonEventObject": { ... },
  "chat": {
    "widgetUpdatedPayload": {
      "space": { ... }
    }
  }
}

การแมปคำตอบตามกรณีการใช้งาน

ส่วนเสริมของ Google Workspace ที่ขยาย Google Chat จะแสดงผลการดำเนินการแทนออบเจ็กต์ Message ตารางต่อไปนี้จะแมปประเภทการตอบกลับMessageของ Google Chat API กับการดำเนินการที่เทียบเท่าในส่วนเสริม Google Workspace

กรณีการใช้งาน การตอบกลับของ Google Chat API Message การตอบกลับการดำเนินการใน Chat ของส่วนเสริม Google Workspace
สร้างข้อความในพื้นที่ทำงานที่เรียกใช้
{
  "actionResponse": {
    "type": "NEW_MESSAGE"
  },
  "text": "..."
}

คุณจะระบุ actionResponse หรือไม่ก็ได้ ดูข้อมูลเพิ่มเติมได้ที่ตอบกลับคำสั่งเครื่องหมายทับ

{
  "hostAppDataAction": {
    "chatDataAction": {
      "createMessageAction": {
        "message": {
          "text": "..."
         }
       }
    }
  }
}

ดูข้อมูลเพิ่มเติมได้ที่ส่งข้อความ

อัปเดตข้อความ
{
 "actionResponse": {
  "type": "UPDATE_MESSAGE"
  },
 "text": "..."
}

ดูข้อมูลเพิ่มเติมได้ที่อัปเดตข้อความ (Chat)

{
  "hostAppDataAction": {
    "chatDataAction": {
      "updateMessageAction": {
        "message": {
          "text": "..."
         }
       }
    }
  }
}

ดูข้อมูลเพิ่มเติมได้ที่อัปเดตข้อความ (ส่วนเสริม)

หน้าตัวอย่างลิงก์
{
  "actionResponse": {
    "type": "UPDATE_USER_MESSAGE_CARDS"
  },
  "cardsV2": [{ ... }]
}

ดูข้อมูลเพิ่มเติมได้ที่แสดงตัวอย่างลิงก์ (Chat)

{
  "hostAppDataAction": {
    "chatDataAction": {
      "updateInlinePreviewAction": {
        "cardsV2": [{ ... }]
      }
    }
  }
}

ดูข้อมูลเพิ่มเติมได้ที่แสดงตัวอย่างลิงก์(ส่วนเสริม)

เปิดกล่องโต้ตอบเริ่มต้น
{
  "actionResponse": {
    "type": "DIALOG",
    "dialogAction": {
      "dialog": {
        "body": { /* Card object */ }
      }
    }
  }
}

ดูข้อมูลเพิ่มเติมได้ที่เปิดกล่องโต้ตอบ (Chat)

{
  "action": {
    "navigations": [{
      "pushCard": { /* Card object */ }
     }]
   }
}

การ์ดที่คุณพุชจะมีวิดเจ็ตที่มีonClickการดำเนินการได้ สำหรับส่วนเสริมของ Google Workspace ที่ใช้ HTTP ให้กำหนดค่าการดำเนินการต่อไปนี้เพื่อเรียกปลายทางของฟังก์ชัน
{
  "onClick": {
    "action": {
      "function": "https://...",
      "parameters": [{
        "key": "clickedButton",
        "value": "submit"
      }]
    }
  }
}

ดูข้อมูลเพิ่มเติมได้ที่เปิดกล่องโต้ตอบ (ส่วนเสริม)

ปิดกล่องโต้ตอบ
{
  "actionResponse": {
    "type": "DIALOG",
    "dialogAction": {
      "actionStatus": {
        "userFacingMessage": "..."
      }
    }
  }
}

ดูข้อมูลเพิ่มเติมได้ที่ปิดกล่องโต้ตอบ (Chat)

{
  "action": {
    "navigations": [{
      "endNavigation": "CLOSE_DIALOG"
    }],
    "notification": { "text": "..."}
  }
}

ดูข้อมูลเพิ่มเติมได้ที่ปิดกล่องโต้ตอบ (ส่วนเสริม)

เชื่อมต่อกับระบบภายนอก (กำหนดค่าคำขอ)
{
  "actionResponse": {
    "type": "REQUEST_CONFIG",
    "url": "..."
  }
}

ดูข้อมูลเพิ่มเติมได้ที่เชื่อมต่อกับระบบภายนอก

{
  "basic_authorization_prompt": {
    "authorization_url": "...",
    "resource": "..."
  }
}

ดูข้อมูลเพิ่มเติมได้ที่เชื่อมต่อส่วนเสริมของ Google Workspace กับบริการของบุคคลที่สาม

รายการเติมข้อความอัตโนมัติในวิดเจ็ตแบบอินเทอร์แอกทีฟ
{
  "actionResponse": {
    "type": "UPDATE_WIDGET",
    "updatedWidget": {
      "suggestions": {
        "items": ["..."]
      },
      "widget": "widget_id"
    }
  }
}

ดูข้อมูลเพิ่มเติมได้ที่เพิ่มเมนูแบบเลือกหลายรายการ

{
  "action": {
    "modifyOperations": [{
      "updateWidget": {
        "widgetId": "widget_id",
        "selectionInputWidgetSuggestions": {
          "suggestions": ["..."]
        }
      }
    }]
  }
}

ดูข้อมูลเพิ่มเติมได้ที่รวบรวมและประมวลผลข้อมูลจากผู้ใช้ Google Chat

จัดการการโต้ตอบกับการ์ดในข้อความที่สร้างขึ้นก่อน Conversion

เมื่อแปลงแอป Google Chat ที่ใช้ HTTP เป็น ส่วนเสริมของ Google Workspace การโต้ตอบกับการ์ดในข้อความที่สร้างขึ้นก่อน การแปลงจะต้องมีการจัดการเป็นพิเศษ ส่วนเสริมจะใช้ URL แบบ HTTP แบบเต็ม สำหรับ action.function ของการ์ด ขณะที่แอป Chat ที่สร้างขึ้นด้วย เหตุการณ์การโต้ตอบของ Google Chat API จะใช้ชื่อฟังก์ชัน ตารางต่อไปนี้ สรุปความแตกต่างเหล่านี้

แอป Google Chat ที่สร้างขึ้นด้วยเหตุการณ์การโต้ตอบของ Google Chat API ส่วนเสริมของ Google Workspace ที่ขยาย Google Chat
การกำหนดค่า คุณกำหนดค่าปลายทางเดียวสำหรับเหตุการณ์ทั้งหมดในคอนโซล Google Cloud เมื่อติดตั้งใช้งานการโต้ตอบของบัตร action ของบัตรจะมีเฉพาะชื่อของฟังก์ชันที่จะดำเนินการ ระบบจะเรียกใช้ปลายทาง HTTP ทั่วไปสำหรับเหตุการณ์การคลิกการ์ด

ดูข้อมูลเพิ่มเติมได้ที่เปิดกล่องโต้ตอบ (Chat)



{
  "onClick": {
    "action": {
      "function": "submit"
    }
  }
}
คุณสามารถกำหนดค่าปลายทางต่อเหตุการณ์ในคอนโซล Google Cloud ได้ แต่การดำเนินการนี้จะไม่รวมเหตุการณ์การคลิกการ์ด เมื่อใช้การโต้ตอบกับการ์ด actionของการ์ดต้องมี URL แบบเต็มของปลายทาง HTTP ที่จะเรียกใช้ คุณตั้งค่าปลายทาง HTTP ที่ไม่ซ้ำกันต่อปุ่ม หรือใช้ปลายทางทั่วไปและส่งการดำเนินการเป็นพารามิเตอร์ใน action.parameters ก็ได้

ดูข้อมูลเพิ่มเติมได้ที่เปิดกล่องโต้ตอบ (ส่วนเสริม)



{
  "onClick": {
    "action": {
      "function": "https://...",
      "parameters": [{
        "key": "method",
        "value": "submit"
      }]
    }
  }
}

หากต้องการให้การโต้ตอบกับการ์ดทํางานได้สําหรับข้อความที่สร้างขึ้นก่อน Conversion ให้กําหนดค่า URL การโต้ตอบกับการ์ดในหน้าการกําหนดค่า Google Chat API

URL นี้ใช้สําหรับการโต้ตอบในข้อความที่สร้างขึ้นก่อนที่คุณจะทําการแปลงแอปเท่านั้น เมื่อผู้ใช้โต้ตอบกับข้อความใดข้อความหนึ่ง ระบบจะส่งค่า action.function เดิมเป็นพารามิเตอร์ที่ชื่อ __action_method_name__

ตัวอย่าง: การคลิกการ์ด

หากคุณกำหนดค่า URL การโต้ตอบกับการ์ดเป็น https://.../card-interaction-handler และผู้ใช้คลิกการ์ดในข้อความที่ผ่านมาพร้อมการดำเนินการต่อไปนี้

{
  "onClick": {
    "action": {
     "function": "submit"
    }
  }
}

ระบบจะส่งเหตุการณ์ไปยัง Card Interaction URL ที่กำหนดค่าไว้ในรูปแบบต่อไปนี้

{
  "commonEventObject": {
    "parameters": {
      "__action_method_name__": "submit"
    }
  },
  "chat": {
    "buttonClickedPayload": { ... }
  }
}

ตัวอย่าง: เมนูสำหรับเลือกหลายรายการ

หากผู้ใช้โต้ตอบกับเมนูแบบหลายตัวเลือกที่มีแหล่งข้อมูลภายนอก

{
  "selectionInput": {
    "name": "contacts",
    "type": "MULTI_SELECT",
    "externalDataSource": {
      "function": "getContacts"
    }
  }
}

ระบบจะส่งเหตุการณ์ไปยัง Card Interaction URL ที่กำหนดค่าไว้ในรูปแบบต่อไปนี้

{
  "commonEventObject": {
    "parameters": {
      "__action_method_name__": "getContacts",
    }
  },
  "chat": {
    "widgetUpdatedPayload": { ... }
  }
}

หากเปิดใช้ URL ปลายทาง HTTP ทั่วไปสำหรับทริกเกอร์ทั้งหมดสำหรับทริกเกอร์ HTTP ระบบจะใช้ URL ทั่วไปสำหรับเหตุการณ์คลิกปุ่มด้วย

ยืนยันคำขอสำหรับส่วนเสริม Google Workspace ของ HTTP ที่ขยาย Chat

สำหรับแอป Google Chat ที่ใช้ HTTP คุณจะต้องอัปเดตตรรกะเพื่อยืนยันว่าคำขอมาจาก Google เมื่อแปลงเป็นส่วนเสริมของ Google Workspace

ความแตกต่างที่สำคัญในการยืนยันคำขอมีดังนี้

ประเภทแอป กลุ่มเป้าหมายที่รองรับ อีเมลบัญชีบริการ
แอป Google Chat ที่สร้างขึ้นด้วยเหตุการณ์การโต้ตอบของ Google Chat API หมายเลขโปรเจ็กต์ chat@system.gserviceaccount.com
ส่วนเสริม Google Workspace ที่ขยาย Google Chat ปลายทาง HTTP เท่านั้น อีเมลของบัญชีบริการต่อโปรเจ็กต์

คุณดูอีเมลของบัญชีบริการที่ไม่ซ้ำกันสำหรับส่วนเสริม Google Workspace ได้ในส่วนแปลงเป็นส่วนเสริม Google Workspace ในหน้าการกำหนดค่า Google Chat API ในคอนโซล Google Cloud

วิธียืนยันคำขอในส่วนเสริม Google Workspace ที่อัปเกรดแล้ว

  1. หากใช้ฟังก์ชัน Cloud Run ให้มอบบทบาท roles/cloudfunctions.invoker ให้กับบัญชีบริการของแต่ละส่วนเสริม ดูให้สิทธิ์เข้าถึงด้วย IAM
  2. อัปเดตรหัสยืนยันโทเค็นเพื่อใช้อีเมลของบัญชีบริการส่วนเสริมของ Google Workspace เพื่อยืนยันลายเซ็นของโทเค็นสำหรับผู้ถือ ดูตรวจสอบคำขอจาก Google