ประเภทของเหตุการณ์การโต้ตอบกับแอป Google Chat

หน้านี้อธิบายประเภทของเหตุการณ์การโต้ตอบที่แอป Google Chat สามารถรับจาก Google Chat

หากต้องการกำหนดค่าแอป Chat ให้รับเหตุการณ์การโต้ตอบ โปรดดูรับและตอบกลับการโต้ตอบกับแอป Chat

รูปแบบของเหตุการณ์การโต้ตอบ

ผู้ใช้จะโต้ตอบกับแอปใน Chat ได้หลายวิธี สำหรับการโต้ตอบแต่ละประเภท Google Chat จะส่งเหตุการณ์การโต้ตอบประเภทต่างๆ ดังนี้

  • ข้อความ: ผู้ใช้ส่งข้อความในแอป Chat หรือเรียกใช้แอป Chat ในพื้นที่ทำงาน
  • เพิ่มไปยังพื้นที่ทำงานแล้ว: ผู้ใช้เพิ่มแอป Chat ในพื้นที่ทำงาน
  • นำออกจากพื้นที่ทำงานแล้ว: ผู้ใช้นำ แอป Chat ของคุณออกจากพื้นที่ทำงาน
  • การ์ดที่คลิก: ผู้ใช้คลิกการ์ดแบบอินเทอร์แอกทีฟหรือกล่องโต้ตอบ ที่ส่งมาจากแอป Chat ของคุณ

ทุกครั้งที่ผู้ใช้โต้ตอบกับแอป Chat ของคุณ Google Chat จะส่งเหตุการณ์การโต้ตอบที่มีเนื้อหาคำขอ ซึ่งเป็นเพย์โหลด JSON ที่แสดงการโต้ตอบ เพย์โหลดเหตุการณ์นี้มีองค์ประกอบที่เหมือนกับเหตุการณ์การโต้ตอบทุกประเภท รวมถึงองค์ประกอบที่เจาะจงสำหรับประเภทเหตุการณ์นั้นๆ

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับช่องในเหตุการณ์การโต้ตอบ โปรดดูเอกสารประกอบอ้างอิง Event ของ Google Chat API

ฟิลด์ที่ใช้ร่วมกัน

จะมีช่องต่อไปนี้อยู่ในเพย์โหลดของเหตุการณ์การโต้ตอบเสมอ

ฟิลด์ คำอธิบาย
type ประเภทของเหตุการณ์ที่แอป Chat ได้รับ เช่น MESSAGE หรือ ADDED_TO_SPACE
eventTime การประทับเวลาที่ระบุเวลาที่จัดส่งเหตุการณ์
common แสดงข้อมูลเกี่ยวกับไคลเอ็นต์ของผู้ใช้ เช่น ภาษาหรือแพลตฟอร์ม

ช่องตามประเภทเหตุการณ์การโต้ตอบ

เพย์โหลดอาจมีช่องเพิ่มเติมต่อไปนี้ ทั้งนี้ขึ้นอยู่กับประเภทของเหตุการณ์

ฟิลด์ คำอธิบาย ประเภทเหตุการณ์
message ข้อความที่เกี่ยวข้องกับเหตุการณ์ MESSAGE, ADDED_TO_SPACE, CARD_CLICKED
space พื้นที่ที่เกี่ยวข้องกับกิจกรรม MESSAGE, ADDED_TO_SPACE, REMOVED_FROM_SPACE, CARD_CLICKED
user ผู้ใช้ที่เกี่ยวข้องกับเหตุการณ์ โดยผู้ใช้จะเป็นบุคคลเสมอ (ไม่ใช่แอป Chat) MESSAGE, ADDED_TO_SPACE, REMOVED_FROM_SPACE, CARD_CLICKED
action ฟังก์ชันที่ผู้ใช้เรียกใช้เมื่อคลิกการ์ดหรือกล่องโต้ตอบแบบอินเทอร์แอกทีฟ CARD_CLICKED.

ตัวอย่างเพย์โหลดของเหตุการณ์

ส่วนนี้จะอธิบายสิ่งที่ทริกเกอร์เหตุการณ์การโต้ตอบ และแสดงตัวอย่างเพย์โหลด JSON สำหรับเหตุการณ์แต่ละประเภทต่อไปนี้

ข้อความ

เหตุการณ์การโต้ตอบนี้จะแสดงเมื่อผู้ใช้ส่งข้อความถึงแอป Chat เช่น

  • ข้อความในพื้นที่ข้อความส่วนตัว (DM) ที่มีแอป Chat
  • ข้อความในพื้นที่สำหรับหลายคนที่มีบุคคล @พูดถึงแอป Chat หรือใช้คำสั่งเครื่องหมายทับอย่างใดอย่างหนึ่ง
  • หากคุณกำหนดค่าตัวอย่างลิงก์สำหรับแอป Chat แล้ว ผู้ใช้จะโพสต์ข้อความที่มีลิงก์ที่ตรงกับรูปแบบ URL ที่กำหนดค่าไว้

ตัวอย่าง JSON ต่อไปนี้แสดงเหตุการณ์การโต้ตอบ MESSAGE ที่ผู้ใช้ @พูดถึงแอป Chat ในพื้นที่ทำงานที่มีหลายคน

{
  "type": "MESSAGE",
  "eventTime": {
      "seconds": 1691187414,
      "nanos": 93489000
  },
  "space": {
    "name": "spaces/AAAAAAAAAAA",
    "displayName": "Customer Support Superstars",
    "spaceType": "SPACE"
  },
  "message": {
    "name": "spaces/AAAAAAAAAAA/messages/CCCCCCCCCCC",
    "sender": {
      "name": "users/12345678901234567890",
      "displayName": "Izumi",
      "avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
      "email": "izumi@example.com"
    },
    "createTime": {
      "seconds": 1691187386,
      "nanos": 954319000
    },
    "text": "@TestBot Create ticket.",
    "argumentText": " Create ticket.",
    "thread": {
      "name": "spaces/AAAAAAAAAAA/threads/BBBBBBBBBBB",
      "threadKey": "custom-thread-ID"
    },
    "annotations": [
      {
        "length": 8,
        "startIndex": 0,
        "userMention": {
          "type": "MENTION",
          "user": {
            "avatarUrl": "https://.../avatar.png",
            "displayName": "TestBot",
            "name": "users/1234567890987654321",
            "type": "BOT"
          }
        },
        "type": "USER_MENTION"
      }
    ],
    "attachment": [
      {
        "name": "spaces/5o6pDgAAAAE/messages/Ohu1LlUVcS8.Ohu1LlUVcS8/attachments/AATUf-Iz7d8kySEdRRZd-dznqBk3",
        "content_name": "solar.png",
        "content_type": "image/png",
        "drive_data_ref": {
          "drive_file_id": "H1HqaqRuH2Pfd_TOa1fF2_ltwDlV_yKRrr"
        },
        "source": "DRIVE_FILE"
      }
    ]
  },
  "user": {
    "name": "users/12345678901234567890",
    "displayName": "Izumi",
    "avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
    "email": "izumi@example.com"
  }
}

เพิ่มไปยังพื้นที่ทำงานแล้ว

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

ตัวอย่าง JSON ต่อไปนี้แสดงเนื้อหาคำขอสำหรับเหตุการณ์การโต้ตอบ ADDED_TO_SPACE เมื่อผู้ใช้เพิ่มแอป Chat ในพื้นที่ทำงาน

{
  "type": "ADDED_TO_SPACE",
  "eventTime": {
    "seconds": 1691187414,
    "nanos": 93489000
  },
  "space": {
    "name": "spaces/AAAAAAAAAAA",
    "displayName": "Customer Support Superstars",
    "spaceType": "SPACE",
    "adminInstalled": "false"
  },
  "user": {
    "name": "users/12345678901234567890",
    "displayName": "Izumi",
    "avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
    "email": "izumi@example.com"
  }
}

ติดตั้งโดยผู้ดูแลระบบ Google Workspace

เหตุการณ์การโต้ตอบ ADDED_TO_SPACE ยังระบุได้ด้วยว่าผู้ดูแลระบบ Google Workspace ได้ติดตั้งแอป Chat ของคุณให้ผู้ใช้ในองค์กร

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

ตัวอย่าง JSON ต่อไปนี้แสดงเนื้อหาคำขอสำหรับกิจกรรมการโต้ตอบ ADDED_TO_SPACE เมื่อผู้ดูแลระบบ Google Workspace ติดตั้งแอป Chat สำหรับผู้ใช้ เนื่องจากผู้ดูแลระบบติดตั้งแอป Chat แล้ว การตั้งค่า adminInstalled จึงเป็น true

{
  "type": "ADDED_TO_SPACE",
  "eventTime": {
    "seconds": 1691187414,
    "nanos": 93489000
  },
  "space": {
    "name": "spaces/AAAAAAAAAAA",
    "displayName": "Customer Support Superstars",
    "spaceType": "DIRECT_MESSAGE",
    "adminInstalled": "true"
  },
  "user": {
    "name": "users/12345678901234567890",
    "displayName": "Izumi",
    "avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
    "email": "izumi@example.com"
  }
}

นำออกจากพื้นที่ทำงานแล้ว

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

ตัวอย่าง JSON ต่อไปนี้แสดงเนื้อหาคำขอสำหรับเหตุการณ์การโต้ตอบ REMOVED_FROM_SPACE เมื่อผู้ใช้นำแอป Chat ออกจากพื้นที่ทำงาน

{
  "type": "REMOVED_FROM_SPACE",
  "eventTime": {
    "seconds": 1691187414,
    "nanos": 93489000
  },
  "space": {
    "name": "spaces/AAAAAAAAAAA",
    "spaceType": "SPACE",
    "adminInstalled": "false"
  },
  "user": {
    "name": "users/12345678901234567890",
    "displayName": "Izumi",
    "avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
    "email": "izumi@example.com"
  }
}

ถอนการติดตั้งโดยผู้ดูแลระบบ Google Workspace

เหตุการณ์การโต้ตอบ REMOVED_FROM_SPACE ยังระบุได้ด้วยว่าผู้ดูแลระบบ Google Workspace ถอนการติดตั้งแอป Chat ของคุณให้กับผู้ใช้ในองค์กรแล้ว เมื่อถอนการติดตั้ง แอป Chat จะไม่ปรากฏในแผงข้อความส่วนตัวของผู้ใช้อีกต่อไป

หากผู้ใช้ติดตั้งแอป Chat ก่อนผู้ดูแลระบบ แอป Chat จะยังคงติดตั้งให้ผู้ใช้ต่อไป ในกรณีนี้ เนื่องจากยังคงมีการติดตั้งแอป Chat อยู่ แอป Chat จึงไม่ได้รับเหตุการณ์การโต้ตอบ REMOVED_FROM_SPACE

ตัวอย่าง JSON ต่อไปนี้แสดงเนื้อหาคำขอสำหรับกิจกรรมการโต้ตอบ REMOVED_FROM_SPACE เมื่อผู้ดูแลระบบ Google Workspace ถอนการติดตั้งแอป Chat ให้กับผู้ใช้ เนื่องจากผู้ดูแลระบบถอนการติดตั้งแอป Chat แล้ว การตั้งค่า adminInstalled จึงเป็น true

{
  "type": "REMOVED_FROM_SPACE",
  "eventTime": {
    "seconds": 1691187414,
    "nanos": 93489000
  },
  "space": {
    "name": "spaces/AAAAAAAAAAA",
    "spaceType": "DIRECT_MESSAGE",
    "adminInstalled": "true"
  },
  "user": {
    "name": "users/12345678901234567890",
    "displayName": "Izumi",
    "avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
    "email": "izumi@example.com"
  }
}

คลิกการ์ดแล้ว

เหตุการณ์การโต้ตอบนี้ระบุว่าผู้ใช้คลิกปุ่มในข้อความการ์ดหรือกล่องโต้ตอบ

หากต้องการรับเหตุการณ์การโต้ตอบ ปุ่มจะต้องทริกเกอร์การโต้ตอบอีกรายการกับแอป Chat ตัวอย่างเช่น แอป Chat จะไม่ได้รับเหตุการณ์การโต้ตอบ CARD_CLICKED หากผู้ใช้คลิกปุ่มที่เปิดลิงก์ไปยังเว็บไซต์ แต่ได้รับเหตุการณ์การโต้ตอบในตัวอย่างต่อไปนี้

  • ผู้ใช้คลิกปุ่ม Send feedback บนการ์ด ซึ่งจะเปิดกล่องโต้ตอบเพื่อให้ผู้ใช้ป้อนข้อมูล
  • ผู้ใช้คลิกปุ่ม Submit หลังจากป้อนข้อมูลลงในการ์ดหรือกล่องโต้ตอบ

ตัวอย่าง JSON ต่อไปนี้แสดงส่วนเนื้อหาคำขอสำหรับเหตุการณ์การโต้ตอบ CARD_CLICKED เมื่อผู้ใช้คลิกปุ่มในข้อความการ์ดที่ระบุตั๋วสนับสนุนขาเข้าให้กับผู้ใช้

{
  "type": "CARD_CLICKED",
  "eventTime": {
    "seconds": 1691187414,
    "nanos": 93489000
  },
  "common": {
    "userLocale": "en",
    "hostApp": "CHAT",
    "invokedFunction": "doAssignTicket",
    "timeZone": {
      "offset": -25200000,
      "id": "America/Los_Angeles"
    }
  },
  "action": {
    "actionMethodName": "doAssignTicket"
  },
  "message": {
    "cards": [
      {
        "header": {
          "title": "Incoming support ticket."
        },
        "sections": [
          {
            "widgets": [
              {
                "textParagraph": {
                  "text": "Incoming support ticket #12345 is unassigned and needs your attention."
                }
              },
              {
                "buttons": [
                  {
                    "textButton": {
                      "onClick": {
                        "action": {
                          "actionMethodName": "doAssignTicket"
                        }
                      },
                      "text": "Assign to me"
                    }
                  }
                ]
              }
            ]
          }
        ]
      }
    ],
    "sender": {
      "avatarUrl": "https://www.example.com/images/chat-app-icon.png",
      "displayName": "Support Chat app",
      "name": "users/98765432109876543210",
      "type": "BOT"
    },
    "createTime": {
      "seconds": 1691187386,
      "nanos": 954319000
    },
    "retentionSettings": {
      "state": "PERMANENT"
    },
    "name": "spaces/AAAAAAAAAAA/messages/CCCCCCCCCCC",
    "thread": {
      "retentionSettings": {
        "state": "PERMANENT"
      },
      "name": "spaces/AAAAAAAAAAA/threads/BBBBBBBBBBB"
    },
    "messageHistoryState": "HISTORY_ON",
    "space": {
      "spaceThreadingState": "GROUPED_MESSAGES",
      "spaceType": "SPACE",
      "displayName": "Customer Support Superstars",
      "name": "spaces/AAAAAAAAAAA",
      "spaceHistoryState": "HISTORY_ON",
      "type": "ROOM",
      "threaded": true
    }
  },
  "user": {
    "avatarUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
    "displayName": "Izumi",
    "name": "users/12345678901234567890",
    "type": "HUMAN",
    "email": "izumi@example.com",
    "domainId": "ABCDEFG"
  },
  "space": {
    "spaceThreadingState": "GROUPED_MESSAGES",
    "spaceType": "SPACE",
    "displayName": "Customer Support Superstars",
    "name": "spaces/AAAAAAAAAAA",
    "spaceHistoryState": "HISTORY_ON",
    "type": "ROOM",
    "threaded": true
  }
}

การคลิกการ์ดสำหรับกล่องโต้ตอบ

เมื่อผู้ใช้โต้ตอบกับกล่องโต้ตอบ เพย์โหลดสำหรับเหตุการณ์การโต้ตอบ CARD_CLICKED จะมีช่องเพิ่มเติมต่อไปนี้

  • isDialogEvent: ตั้งค่าเป็น true สำหรับเหตุการณ์การโต้ตอบที่เกี่ยวข้องกับกล่องโต้ตอบ
  • DialogEventType: ประเภทของการโต้ตอบกับกล่องโต้ตอบ ซึ่งรวมถึงกรณีที่ผู้ใช้เปิด ส่ง หรือยกเลิกกล่องโต้ตอบ

ตัวอย่าง JSON ต่อไปนี้แสดงส่วนหนึ่งของเนื้อหาคำขอสำหรับเหตุการณ์การโต้ตอบ CARD_CLICKED ในตัวอย่างนี้ ผู้ใช้ได้คลิกปุ่มในกล่องโต้ตอบที่ส่งข้อมูลไปยังแอป Chat

{
  "type": "CARD_CLICKED",
  ...
  "isDialogEvent": true,
  "dialogEventType": "SUBMIT_DIALOG",
}

หากต้องการดูวิธีประมวลผลเพย์โหลดของเหตุการณ์การโต้ตอบและแสดงผลการตอบกลับ โปรดดูคำแนะนำต่อไปนี้