สร้างแอปสำหรับ Google Chat ด้วย Gemini

1. ก่อนเริ่มต้น

แอป Google Chat ที่มี Gemini คืออะไร

แอป Google Chat ที่มี Gemini จะทำสิ่งต่อไปนี้

  • นําบริการและทรัพยากรมาไว้ใน Google Chat ซึ่งจะช่วยให้ผู้ใช้ได้รับข้อมูลและดําเนินการได้โดยไม่ต้องออกจากการสนทนา
  • ผสานรวมกับโมเดล Generative AI ของ Gemini เพื่อให้สร้างหรือค้นหาข้อมูล เช่น ข้อความหรือรูปภาพในเวลาที่เจาะจงเพื่อปรับปรุงเวิร์กโฟลว์ได้

เหตุใดจึงควรผสานรวมแอป Google Chat กับ Gemini

กรณีการใช้งานทั่วไปของโมเดล Generative AI เช่น Gemini จะจัดอยู่ในหมวดหมู่ต่อไปนี้

  • การสร้างและการเพิ่มประสิทธิภาพเนื้อหา สร้างเนื้อหาทางการตลาด สร้างโพสต์โซเชียลมีเดีย สร้างรูปภาพที่สมจริง แต่งเพลง หรือช่วยในการสร้างเนื้อหาวิดีโอ
  • การค้นหาข้อมูล ดึงข้อมูลเชิงลึกที่สำคัญจากฐานความรู้ที่ไม่มีโครงสร้าง สรุปข้อความที่ยาว จำแนกเนื้อหา หรือแปลภาษาด้วยความแม่นยำและความเร็วที่ได้รับการปรับปรุง
  • การสนทนา สนทนาอย่างเป็นธรรมชาติ ให้ข้อมูล และสร้างสรรค์

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

ข้อกำหนดเบื้องต้น

สิ่งที่คุณสร้าง

ใน Codelab นี้ คุณจะสร้างแอป Google Chat ที่มี Gemini ขึ้นมา 3 แอปเพื่อให้ครอบคลุมกรณีการใช้งาน 3 ประเภทที่พูดถึงในส่วนก่อนหน้า

แอปการจัดการปัญหา (การสร้างและเพิ่มประสิทธิภาพเนื้อหา)

แอปนี้ทำสิ่งต่อไปนี้

  • จัดการปัญหาตั้งแต่การสร้างไปจนถึงการปิดด้วยการโต้ตอบพื้นฐาน หน้าแรกของแอป และการตรวจสอบสิทธิ์แอป
  • ตรวจสอบข้อความและให้ความช่วยเหลือแบบไม่แบ่งแยกด้วยกิจกรรมและวิดเจ็ตอุปกรณ์เสริม

คุณใช้ Gemini เพื่อดำเนินการต่อไปนี้ได้

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

เทคโนโลยีหลักที่ใช้ ได้แก่ Vertex AI, Gemini, Apps Script และ Google Workspace API (ผู้ดูแลระบบ, Chat, เอกสาร, กิจกรรม)

22efdecff4601417.png

2d127c63518673b2.png

9aea694937f2f3ed.png

แอปนี้อาศัย Gemini ในการทำความเข้าใจและตอบคำถามด้วยภาษาธรรมชาติและเพื่อแสดงผลการอ้างอิงแหล่งที่มาจากข้อมูลที่ไม่มีโครงสร้าง

เทคโนโลยีหลักที่ใช้ ได้แก่ Agent พื้นที่เก็บข้อมูล Dialogflow CX, เว็บฮุค Dialogflow CX, Google Cloud Functions และ Gemini

9468866bfe848bb8.png

แอปแสดงความคิดเห็น (การสนทนา)

แอปนี้อาศัย Gemini เพื่อรวบรวมและจัดเก็บรีวิวที่มีการสนทนาด้วยภาษาง่ายๆ

เทคโนโลยีหลักที่ใช้ ได้แก่ Agent ของ Dialogflow,, เครื่องมือ Dialogflow CX, OpenAPI, Google Cloud Functions และ Gemini

99a7a0295f122f31.png

สิ่งที่เรียนรู้

  • วิธีผสานรวมแอป Google Chat กับ Gemini ผ่าน Vertex AI
  • วิธีผสานรวมแอป Google Chat กับตัวแทน Dialogflow CX
  • วิธีใช้ฟีเจอร์ล่าสุดของ Google Chat ได้แก่ หน้าแรกของแอป, กิจกรรมใน Google Chat และวิดเจ็ตอุปกรณ์เสริม

สิ่งที่ต้องมี

2. ตั้งค่า

เริ่มต้นทรัพยากร

ในส่วนนี้ คุณจะเข้าถึงและกำหนดค่าทรัพยากรต่อไปนี้ได้จากเว็บเบราว์เซอร์ที่ต้องการ

โปรเจ็กต์ Apps Script

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Apps Script

  1. คลิกการตั้งค่า จากนั้นเปิดใช้ Google Apps Script API

ea06c593b347b9d1.png

  1. เลือกโปรเจ็กต์
  2. คลิกการตั้งค่าโปรเจ็กต์
  3. เลือกช่องทำเครื่องหมายแสดงไฟล์ Manifest "appsscript.json" ในตัวแก้ไข
  4. เปลี่ยนชื่อโปรเจ็กต์เป็น Chat Apps Gemini

12c1485bd248b766.png

โปรเจ็กต์ Google Cloud

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. เลือกโปรเจ็กต์
  2. คลิกเมนู ⋮ > API และบริการ > หน้าจอขอความยินยอม OAuth > แก้ไขแอป แล้วตั้งค่าชื่อแอปเป็น Chat Apps Gemini

  1. ไปที่การกำหนดค่า Google Chat API จากนั้นตั้งค่าชื่อแอปและคำอธิบายเป็น Chat Apps Gemini

a71f040755da3b8b.png

Google Chat

ทำตามขั้นตอนต่อไปนี้ใน Google Chat

  1. หากจำเป็น ให้เริ่มแชทกับแอป Google Chat
  2. ส่งข้อความเช่น Hello เพื่อให้แน่ใจว่าใช้งานได้

9625418251528ae9.png

ดาวน์โหลดซอร์สโค้ดและทรัพยากรในเครื่อง

  1. ดาวน์โหลดที่เก็บ GitHub นี้

  1. ในสภาพแวดล้อมการพัฒนาที่ต้องการ ให้เปิดไดเรกทอรี apps-script/chat-apps-gemini จากนั้นไปที่ไดเรกทอรีเดียวกันในเทอร์มินัล

da9478df97c99194.png

ติดตั้งและกำหนดค่า clasp

เราใช้ clasp เพื่อแก้ไขและส่งซอร์สโค้ดเวอร์ชันจากสภาพแวดล้อมในเครื่องไปยังโปรเจ็กต์ Apps Script ได้อย่างง่ายดาย

  1. ในสภาพแวดล้อมในระบบของคุณ ให้ติดตั้ง node, npm และ clasp เวอร์ชันล่าสุด
npm install -g @google/clasp
  1. เข้าสู่ระบบด้วยบัญชีของคุณ:
clasp login

8bc2434e6dc6f22a.png

หากดำเนินการสำเร็จ คุณจะเห็นหน้าจอการยืนยันพื้นฐานในเว็บเบราว์เซอร์ และไฟล์ .clasprc.json ที่มีข้อมูลเข้าสู่ระบบของไคลเอ็นต์ของคุณจะได้รับการอัปเดต คุณดูได้ว่าบัตรตั้งอยู่ที่ใดในเทอร์มินัล

e1d833eb4d5b3a8f.png

3. แอป 1: สร้าง

ตรวจสอบแนวคิด

Vertex AI

Vertex AI มีทุกสิ่งที่คุณต้องการในการสร้างและใช้ Generative AI ไม่ว่าจะเป็นโซลูชัน AI, เครื่องมือสร้างตัวแทน, โมเดลพื้นฐานกว่า 130 รายการ และแพลตฟอร์ม AI แบบรวม

c9e9c7a1945b22ac.png

Gemini

Gemini เป็น LLM หลายรูปแบบจาก Google ที่เข้าถึงได้ผ่าน Vertex AI ซึ่งช่วยปลดล็อกศักยภาพของมนุษย์เพื่อเสริมจินตนาการ ขยายความอยากรู้อยากเห็น และปรับปรุงประสิทธิภาพการทำงาน

บริการ Chat ขั้นสูง

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

ตรวจสอบสถาปัตยกรรม

8c9c7b7328a69ea6.png

แอป Google Chat นี้สร้างขึ้นด้วย Apps Script โดยมีการทำงานดังนี้

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

ขั้นตอนการตรวจสอบ

สร้างปัญหา

7ca0e8ba3c8255bb.png

แก้ปัญหาจากพื้นที่ทำงานเฉพาะ

51b47714c378a24b.png

ปิดปัญหาจากพื้นที่ทำงานเฉพาะ

89e50228deeab0f9.png

ตรวจสอบซอร์สโค้ด

โปรเจ็กต์ Apps Script มีสคริปต์ต่อไปนี้

  • Configuration: ค่าคงที่ที่ต้องแก้ไขตามสภาพแวดล้อม
  • ChatApp: จัดการเหตุการณ์การโต้ตอบกับ Google Chat ซึ่งรวมถึงข้อความ การคลิกการ์ด คำสั่งเครื่องหมายทับ และกล่องโต้ตอบ
  • Storage: ฟังก์ชันยูทิลิตีที่อาศัยบริการของพร็อพเพอร์ตี้
  • ChatAppAuth: ฟังก์ชันยูทิลิตีที่ต้องอาศัยการตรวจสอบสิทธิ์แอป Google Chat
  • Docs: ฟังก์ชันยูทิลิตีที่ใช้ Google เอกสาร
  • VertexAi: ฟังก์ชันยูทิลิตีที่ใช้ Vertex AI

ต่อไปนี้เป็นส่วนต่างๆ ที่มักมีการใช้งานเมื่อสร้างเอกสารรายงานที่มี Gemini และประวัติพื้นที่ใน Chat

appsscript.json

// Enables the Admin SDK Directory and Chat services, which you need to retrieve
// messages and usernames.

"enabledAdvancedServices": [
  ...
  {
    "userSymbol": "AdminDirectory",
    "version": "directory_v1",
    "serviceId": "admin"
  },
  {
    "userSymbol": "Chat",
    "version": "v1",
    "serviceId": "chat"
  }
  ...
]
// Includes the OAuth scopes to request the Admin SDK Directory, Google Chat,
// Google Docs, and Vertex AI APIs.

"oauthScopes": [
  ...
  "https://www.googleapis.com/auth/admin.directory.user.readonly",
  "https://www.googleapis.com/auth/chat.messages.readonly",
  "https://www.googleapis.com/auth/documents",
  "https://www.googleapis.com/auth/cloud-platform",
  ...
]

Configuration.js

// Relies on two constants: the first one is the Google Cloud project ID and the
// second one is the Vertex AI location to be used.

...
const PROJECT_ID = 'replace-with-gcp-project-id';
const VERTEX_AI_LOCATION_ID = 'us-central1';
...

ChatApp.js

// The slash command process function retrieves history, generates content, and passes
// it to the report generator.

function processSlashCommand(event) {
  ...
  if (event.message.slashCommand.commandId == CLOSE_COMMAND_ID
    && event.message.space.type !== "DM") {
    ...
    const history = exportSpaceHistory(spaceId);
    const summary = summarizeSpace(history);
    const docUrl = createReport(
      issue.title, issue.description, resolution, history, summary
    );
    ...
  }
  ...
}
/**
 * Fetches and concatenates the 100 first space messages by using the Google Chat API.
 *
 * Messages with slash commands are filtered (app command invocations).
 *
 * @return {string} concatenate space messages in the format "Sender's name: Message"
 */
function exportSpaceHistory(spaceName) {
  const messages = Chat.Spaces.Messages.list(spaceName, { 'pageSize': 100 }).messages;
  // Returns results after fetching message sender display names.
  let users = new Map();
  return messages
    .filter(message => message.slashCommand === undefined)
    .map(message =>
      `${getUserDisplayName(users, message.sender.name)}: ${message.text}`
    ).join('\n');
}
/**
 * Fetches a user's display name by using the Admin Directory API.
 *
 * A cache is used to only call the API once per user.
 *
 * @param {Map} cache the map containing users previously fetched
 * @param {string} userId the user ID to fetch
 * @return {string} the user's display name
 */
function getUserDisplayName(cache, userId) {
  if (cache.has(userId)) {
    return cache.get(userId);
  }
  let displayName = 'Unknown User';
  try {
    const user = AdminDirectory.Users.get(
      userId.replace("users/", ""),
      { projection: 'BASIC', viewType: 'domain_public' });
    displayName = user.name.displayName ? user.name.displayName : user.name.fullName;
  } catch (e) {
    // Ignores errors, uses 'Unknown User' by default.
  }
  cache.set(userId, displayName);
  return displayName;
}

VertexAi.js

/**
 * Summarizes a Google Chat space history with the Gemini Pro model using
 * Vertex AI API.
 *
 * @param {string} history the history
 * @return {string} the summary
 */
function summarizeSpace(history) {
  const url = `https://${VERTEX_AI_LOCATION_ID}-aiplatform.googleapis.com/v1`
    + `/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION_ID}`
    + "/publishers/google/models/gemini-1.0-pro:generateContent";
  const options = {
    method: "POST",
    headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
    contentType: "application/json",
    payload: JSON.stringify({
      contents: {
        role: "user",
        parts: {
          text: "Summarize the following conversation between engineers resolving"
              + " an issue in a few sentences.\n\n" + history
        }
      },
      safetySettings: {
        category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        threshold: "BLOCK_LOW_AND_ABOVE"
      },
      generationConfig: {
        temperature: 0.2,
        topP: 0.8,
        topK: 40
      }
    })
  };

  return JSON.parse(UrlFetchApp.fetch(url, options).getContentText())
    .candidates[0].content.parts[0].text;
}

Docs.js

// The report generator function adds two sections: the first one is for the summary and the second one is for history.
function createReport(..., history, summary) {
  ...
  body.appendParagraph("Summary").setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(summary);
  body.appendParagraph("History").setHeading(DocumentApp.ParagraphHeading.HEADING1);
  body.appendParagraph(history);
  ...
}

อัปเดตโปรเจ็กต์ Google Cloud

เปิดใช้ API

  1. ในคอนโซล Google Cloud ให้เปิดใช้ API ของ Google เอกสาร, Google Admin SDK และ Vertex AI

  1. คลิกเมนู ⋮ > API และบริการ > API และบริการที่เปิดใช้ จากนั้นยืนยันว่าเปิดใช้ API แล้ว

เริ่มใช้บัญชีบริการ

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ⋮ > IAM และผู้ดูแลระบบ > บัญชีบริการ > + สร้างบัญชีบริการ

74cf57426419f39.png

  1. ตั้งชื่อบัญชีบริการเป็น chat-app
  2. ตั้งค่าคำอธิบายบัญชีบริการเป็น Chat app auth
  3. คลิกสร้างและต่อไป
  4. คลิกเสร็จ ระบบจะเปลี่ยนเส้นทางคุณไปยังหน้าบัญชีบริการ และคุณจะเห็นบัญชีบริการที่คุณสร้างขึ้น

ca0468f1f93990f9.png

  1. เลือกบัญชีบริการที่สร้างใหม่
  2. เลือกแท็บคีย์
  3. คลิกเพิ่มคีย์
  4. คลิกสร้างคีย์ใหม่
  5. เลือก JSON
  6. คลิกสร้าง

9f7e6ea020978ab0.png

กล่องโต้ตอบจะปิดลง และระบบจะดาวน์โหลดคู่คีย์สาธารณะ/ส่วนตัวที่สร้างใหม่ไปยังสภาพแวดล้อมในเครื่องของคุณเป็นไฟล์ JSON โดยอัตโนมัติ คุณจะใช้เนื้อหาในภายหลังเมื่อแก้ไขซอร์สโค้ดของโปรเจ็กต์ Apps Script

อัปเดตการกำหนดค่า Google Chat API

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. เพิ่มคำสั่งเครื่องหมายทับ
  2. ตั้งชื่อเป็น /create
  3. ตั้งค่ารหัสคำสั่งเป็น 1
  4. ตั้งค่าคำอธิบายเป็น Create a new issue
  5. เลือกช่องทำเครื่องหมายเปิดกล่องโต้ตอบ
  6. เพิ่มคำสั่งเครื่องหมายทับอื่น
  7. ตั้งชื่อเป็น /close
  8. ตั้งค่ารหัสคำสั่งเป็น 2
  9. ตั้งค่าคำอธิบายเป็น Close an issue
  10. คลิกบันทึก

bee2e7b63659ab33.png

อัปเดตโปรเจ็กต์ Apps Script

  • เปลี่ยนไดเรกทอรีปัจจุบันในเทอร์มินัลในเครื่องเป็น issue-management/1-baseline ซึ่งมีซอร์สโค้ด ก่อนพุชซอร์สโค้ดไปยังโปรเจ็กต์ Apps Script คุณต้องกำหนดค่าบางสิ่งก่อน

กำหนดค่าซอร์สโค้ด

  1. ตั้งค่าคงที่ JSON ที่ชื่อ CHAT_CREDENTIALS ในไฟล์ Configuration.js เป็นเนื้อหาไฟล์คีย์ส่วนตัวที่คุณดาวน์โหลดไว้ก่อนหน้านี้

d721f6bff73c5304.png

  1. ในคอนโซล Google Cloud ให้คลิกเมนู ⋮ > IAM และผู้ดูแลระบบ > การตั้งค่า

  1. คัดลอกรหัสโปรเจ็กต์

82592fa0bd113469.png

  1. ตั้งค่าค่าคงที่สตริงที่ชื่อ PROJECT_ID ในไฟล์ Configuration.js เป็นรหัสโปรเจ็กต์

383cee561130ceba.png

กำหนดการตั้งค่า clasp

หากต้องการเริ่มต้นการตั้งค่า clasp เพื่อพุชซอร์สโค้ดไปยังโปรเจ็กต์ Apps Script ที่ถูกต้อง ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกโปรเจ็กต์ในคอนโซล Apps Script
  2. เลือกการตั้งค่าโปรเจ็กต์
  3. ในส่วนรหัส ให้คลิกคัดลอก

20ea033b6de882c6.png

  1. สร้างไฟล์ .clasp.json ในไดเรกทอรีปัจจุบัน
  2. แทนที่ <your-script-id> ด้วยรหัสที่คัดลอก
  3. คัดลอกผลลัพธ์ไปยังไฟล์ .clasp.json
  4. บันทึกไฟล์ .clasp.json
{
  "scriptId": "<your-script-id>"
}

พุชซอร์สโค้ด

  • เรียกใช้คำสั่งต่อไปนี้
$clasp push
? Manifest file has been updated. Do you want to push and overwrite? Yes
└─ appsscript.json
└─ ChatApp.js
└─ ChatAppAuth.js
└─ Configuration.js
└─ Docs.js
└─ Storage.js
└─ VertexAi.js
Pushed 7 files.

ลองใช้ it

  1. ใน Google Chat ให้ส่ง Hello! ในข้อความส่วนตัวถึงแอป แอปจะไม่ตอบกลับ แต่จะมีข้อความแจ้งการกําหนดค่า

4c1fc68121dcffed.png

  1. คลิกกำหนดค่า
  2. เลือกบัญชี Google
  3. ตรวจสอบสิทธิ์
  4. ตรวจสอบและอนุญาตให้เข้าถึงแอป

4a2fd7ac5918bf1a.png

หากสำเร็จ คุณจะเห็นหน้าจอการยืนยันเบื้องต้นบนหน้าเว็บและการตอบสนองจริงจากแอปต่อข้อความต้นฉบับของคุณ

acb9065568fe47d2.png

2d6ef9c62f47e082.png

  1. ส่งข้อความส่วนตัวไปยังแอปอีกครั้ง แต่ด้วยคำสั่งเครื่องหมายทับ /create

be3f3c6eb0f929c1.png

  1. ในกล่องโต้ตอบ ให้ตั้งค่าชื่อเป็น Issue Title 1
  2. ตั้งค่าคำอธิบายเป็นปัญหา Description 1
  3. คลิกสร้าง

22efdecff4601417.png

แอปจะดำเนินการต่อไปนี้

  1. ปิดกล่องโต้ตอบ
  2. สร้างพื้นที่ทำงานเฉพาะสำหรับปัญหาที่สร้างขึ้นใหม่ซึ่งมีชื่อเดียวกัน
  3. เข้าร่วมพื้นที่ทำงานที่สร้างขึ้นใหม่
  4. ส่งข้อความที่มีคำอธิบายปัญหาในพื้นที่ทำงานที่สร้างขึ้นใหม่
  5. ส่งข้อความส่วนตัวถึงคุณพร้อมลิงก์ไปยังพื้นที่ทำงานที่สร้างขึ้นใหม่

3253cec2392e281f.png

  1. ในพื้นที่ทำงานที่สร้างขึ้นใหม่ ให้ส่งข้อความด้วยคำสั่งเครื่องหมายทับ /close และความละเอียด เช่น Not reproducible

132cc4acfc10b98c.png

แอปจะดำเนินการต่อไปนี้

  1. สร้างเอกสารรายงานใน Google เอกสาร
  2. ส่งข้อความไปยังพื้นที่ทำงานที่เกี่ยวกับปัญหาดังกล่าวพร้อมลิงก์ไปยังเอกสารรายงานที่สร้างขึ้นใหม่

2d127c63518673b2.png

  1. เปิดเอกสารรายงาน ซึ่งประกอบด้วยข้อมูลพื้นฐาน ประวัติ และข้อมูลสรุป

9aea694937f2f3ed.png

4. ไม่บังคับ: แอปที่ 1: เพิ่มหน้าแรกของแอป

ตรวจสอบแนวคิด

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

65f56f70f67a32e4.png

ขั้นตอนการตรวจสอบ

จัดการปัญหา

10663f5fc107fb3f.png

ตรวจสอบซอร์สโค้ด

ต้องแก้ไขโปรเจ็กต์ Apps Script

ChatApp.js

/**
 * Handles app home requests in Google Chat.
 * 
 * Displays the latest status of all issues.
 */
function onAppHome() {
  // Generates one card section per issue.
  var sections = [];
  for (var issueKey in appProperties.getProperties()) {
    const issue = JSON.parse(appProperties.getProperty(issueKey));
    if (issue.spaceId) {
      sections.push({
        header: `${issue.status} - ${issue.title}`,
        widgets: [{ textParagraph: {
            text: `Description: ${issue.description}`
          }}, { textParagraph: {
            text: `Resolution: ${issue.resolution}`
          }}, { buttonList: { buttons: [{
              text: "Open space",
              onClick: { openLink: {
                url: `https://mail.google.com/mail/u/0/#chat/space/${issue.spaceId}`
              }}
            }, {
              text: "Open report",
              onClick: { openLink: {
                url: issue.reportUrl !== "" ? issue.reportUrl : "docs.new"
              }},
              disabled: issue.reportUrl === ""
          }]}
        }]
      });
    }
  }

  return { action: { navigations: [{ push_card: {
    sections: sections
  }}]}};
}

อัปเดตโปรเจ็กต์ Google Cloud

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. ภายใต้ส่วนฟีเจอร์แบบอินเทอร์แอกทีฟ ให้เลือกช่องทำเครื่องหมายหน้าแรกของแอปการสนับสนุน

97159c1c69ca8303.png

ในสภาพแวดล้อมท้องถิ่น ให้ทำตามขั้นตอนต่อไปนี้

  1. เปลี่ยนไดเรกทอรีปัจจุบันในเทอร์มินัลเป็น issue-management/2-app-home ซึ่งมีซอร์สโค้ดที่คุณจำเป็นต้องใช้
  2. คัดลอกไฟล์ issue-management/1-baseline/.clasp.json ไปยังไดเรกทอรีปัจจุบัน
  3. คัดลอกไฟล์ issue-management/1-baseline/Configuration.js ไปยังไดเรกทอรีปัจจุบันเพื่อแทนที่ไฟล์ที่มีอยู่
  4. เรียกใช้คำสั่งต่อไปนี้
clasp push

ลองใช้

ทำตามขั้นตอนต่อไปนี้ใน Google Chat

  1. ส่งข้อความส่วนตัวด้วยคำสั่งเครื่องหมายทับ /create ไปยังแอป แอปจะเปิดกล่องโต้ตอบ
  2. ตั้งค่าชื่อเป็น Issue Title 2
  3. ตั้งค่าคำอธิบายเป็นปัญหา Description 2
  4. คลิกสร้าง

3b2a8690e758f965.png

  1. เลือกแท็บหน้าแรกจากพื้นที่ทำงานด้วยแอป Google Chat คุณจะเห็นรายละเอียดของปัญหาที่สร้างขึ้น

ed8e32da0e6f2ac6.png

5. ไม่บังคับ: แอป 1: เพิ่มการตรวจสอบพื้นที่ทำงาน

ตรวจสอบแนวคิด

Pub/Sub

Pub/Sub เป็นบริการรับส่งข้อความแบบไม่พร้อมกันและรองรับการปรับขนาดซึ่งแยกบริการที่สร้างข้อความจากบริการที่ประมวลผลข้อความเหล่านั้น Pub/Sub ช่วยให้คุณสร้างระบบผู้ผลิตและผู้บริโภคเหตุการณ์ที่เรียกว่า publishers และสมาชิกได้ ผู้เผยแพร่เนื้อหาสื่อสารกับสมาชิกแบบไม่พร้อมกันโดยการออกอากาศกิจกรรมแทนการเรียกใช้โพรซีเยอร์ระยะไกล (RPC) แบบพร้อมกัน

ผู้เผยแพร่โฆษณาจะส่งเหตุการณ์ไปยังบริการ Pub/Sub โดยไม่คำนึงถึงวิธีหรือเวลาที่จะได้รับการประมวลผลเหตุการณ์เหล่านี้ จากนั้น Pub/Sub จะส่งเหตุการณ์ไปยังบริการทั้งหมดที่ตอบสนองต่อเหตุการณ์เหล่านั้น ในระบบที่สื่อสารผ่าน RPC ผู้เผยแพร่โฆษณาต้องรอให้ผู้สมัครใช้บริการได้รับข้อมูล อย่างไรก็ตาม การผสานรวมแบบไม่พร้อมกันใน Pub/Sub จะเพิ่มความยืดหยุ่นและประสิทธิภาพของระบบโดยรวม

หัวข้อ: ทรัพยากรที่มีชื่อซึ่งแสดงถึงฟีดข้อความ คุณต้องสร้างหัวข้อก่อนจึงจะเผยแพร่หรือสมัครรับข้อมูลได้

การสมัครรับข้อมูล: หากต้องการรับข้อความที่เผยแพร่ไปยังหัวข้อ คุณต้องสร้างการสมัครรับข้อมูลในหัวข้อนั้น ไคลเอ็นต์ที่สมัครใช้บริการจะได้รับและประมวลผลข้อความที่เผยแพร่ไปยังหัวข้อ หัวข้อต่างๆ สามารถสมัครรับข้อมูลได้หลายรายการ แต่การสมัครรับข้อมูลหนึ่งๆ จะเป็นของหัวข้อเดียว

กิจกรรมของ Google Workspace

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

7816e477b112bfb6.png

ต่อไปนี้เป็นวิธีที่ Google Workspace Events API ส่งเหตุการณ์ไปยังแอปผ่านการสมัครใช้บริการ

  1. แอปจะสมัครใช้บริการทรัพยากรในแอป Google Workspace เช่น พื้นที่ทำงาน
  2. ทรัพยากรที่แอปสมัครรับข้อมูลการเปลี่ยนแปลง
  3. แอป Google Workspace จะส่งเหตุการณ์ไปยังหัวข้อใน Pub/Sub ซึ่งทำหน้าที่เป็นปลายทางการแจ้งเตือนสำหรับการสมัครใช้บริการ Google Workspace ของแอป โดยเหตุการณ์ประกอบด้วยข้อมูลเกี่ยวกับสิ่งที่เปลี่ยนแปลงในทรัพยากร
  4. แอปจะประมวลผลข้อความ Pub/Sub ที่มีเหตุการณ์และดำเนินการ หากจำเป็น

ขั้นตอนการตรวจสอบ

สร้างปัญหา (อัปเดต)

6d7a9d7a68666a80.png

แก้ปัญหาจากพื้นที่ทำงานเฉพาะ (อัปเดต)

17e60f052f222456.png

ปิดปัญหาจากพื้นที่ทำงานเฉพาะ (อัปเดต)

742d490ea0b6fe3a.png

ดำเนินการสมัครใช้บริการ

de3017100dec6401.png

ตรวจสอบซอร์สโค้ด

ต้องแก้ไขโปรเจ็กต์ Apps Script

appsscript.json

// Enables the Workspace Events service.

"enabledAdvancedServices": [
  ...
  {
    "userSymbol": "WorkspaceEvents",
    "version": "v1",
    "serviceId": "workspaceevents"
  }
  ...
]

Configuration.js

// Adds two constants: the first one is the Pub/Sub topic ID and the second one
// is the Pub/Sub subscription ID to be used to retrieve Google Workspace events.

...
const GWS_PUBSUB_TOPIC_ID = `projects/${PROJECT_ID}/topics/workspace-events`;
const GWS_PUBSUB_SUBSCRIPTION_ID =
  `projects/${PROJECT_ID}/subscriptions/workspace-events-sub`;
...

ChatApp.js

// Edits the function to delete the subscription at issue closure.

function processSlashCommand(event) {
  ...
  if (event.message.slashCommand.commandId == CLOSE_COMMAND_ID
    && event.message.space.type !== "DM") {
    ...
    deleteSubscription(issue.subscriptionId);
    ...
  }
  ...
}
// Edits the function to create the subscription.

function createIssue(event) {
  ...
  const subscriptionId = createSpaceSubscription(spaceUrl);
  const createdIssue = saveCreatedIssue(..., subscriptionId);
  ...
}
// Edits the function to delete the subscription.

function onRemoveFromSpace(event) {
  ...
  deleteSubscription(issue.subscriptionId);
  ...
}

Storage.js

// Edits the function to keep track of the subscription ID.

function saveCreatedIssue(..., spaceId, subscriptionId) {
  ...
  appProperties.setProperty(spaceId, JSON.stringify({
    ...
    subscriptionId: subscriptionId,
    ...
  }));
  ...
}

WorkspaceEvent.js

/**
 * Creates a new subscription to Google Workspace Events associated to a
 * Google Chat space.
 * 
 * The subscription scope includes message creation events and resources.
 * 
 * @param {string} spaceId the space ID to create a subscription for
 * @return the ID of the newly created subscription
 */
function createSpaceSubscription(spaceId) {
  const operation = WorkspaceEvents.Subscriptions.create({
    targetResource: `//chat.googleapis.com/${spaceId}`,
    eventTypes: ["google.workspace.chat.message.v1.created"],
    notificationEndpoint: { pubsubTopic: GWS_PUBSUB_TOPIC_ID },
    payloadOptions: { includeResource: true },
  });

  return operation.response.name;
}
/**
 * Processes events from subscription by using the Google Cloud PubSub API.
 * 
 * It pulls and acknowledges each event.
 */
function processSubscription() {
  const response = UrlFetchApp.fetch(
    `https://pubsub.googleapis.com/v1/${GWS_PUBSUB_SUBSCRIPTION_ID}:pull`,
    {
      method: "POST",
      contentType: "application/json",
      headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
      payload: JSON.stringify({ maxMessages: 10 })
    }
  );

  const messages = JSON.parse(response.getContentText()).receivedMessages;
  for (var messageIndex in messages) {
    const message = messages[messageIndex];
    const ceType = message.message.attributes["ce-type"];
    const dataStr = Utilities.newBlob(Utilities.base64Decode(message.message.data))
      .getDataAsString();
    if (ceType === "google.workspace.events.subscription.v1.expirationReminder") {
      // Renews subscription.
      renewSubscription(JSON.parse(dataStr).subscription.name);
    } else if (ceType === "google.workspace.chat.message.v1.created") {
      // Processes the message text when it's sent in a space.
      const chatMessage = JSON.parse(dataStr).message;
      if (chatMessage.sender.type !== "BOT") {
        console.log("Message was processed.");
      }
    }
    // Acknowledges successful processing to avoid getting it again next time.
    ackSubscription(message.ackId);
  }
}
/**
 * Acknowledges a subscription event by using the Google Cloud PubSub API.
 * 
 * @param {string} ackId the ID of the event acknowledgment to send
 */
function ackSubscription(ackId) {
  UrlFetchApp.fetch(
    `https://pubsub.googleapis.com/v1/${GWS_PUBSUB_SUBSCRIPTION_ID}:acknowledge`,
    {
      method: "POST",
      contentType: "application/json",
      headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
      payload: JSON.stringify({
        ackIds: [ackId]
      })
    }
  );
}
/**
 * Renews a subscription to Google Workspace Events.
 * 
 * The default time to live option is used.
 * 
 * @param {string} subscriptionId the ID of the subscription to renew
 */
function renewSubscription(subscriptionId) {
  WorkspaceEvents.Subscriptions.patch({ttl: '0s'}, subscriptionId);
}
/**
 * Deletes a subscription to Google Workspace Events.
 * 
 * @param {string} subscriptionId the ID of the subscription to delete
 */
function deleteSubscription(subscriptionId) {
  WorkspaceEvents.Subscriptions.remove(subscriptionId);
}

อัปเดตโปรเจ็กต์ Google Cloud

เปิดใช้ API

  1. ในคอนโซล Google Cloud ให้เปิดใช้ Google Workspace Events และ PubSub

  1. คลิกเมนู ⋮ > API และบริการ > API และบริการที่เปิดใช้ จากนั้นยืนยันว่าเปิดใช้ทั้ง 2 รายการแล้ว

เริ่มการสมัครใช้บริการ

คุณต้องสร้างและสมัครรับข้อมูลหัวข้อ Pub/Sub เพื่อให้เหตุการณ์ในพื้นที่ทำงานทั้งหมดโพสต์

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. ไปที่เมนู ⋮ > Pub/Sub > หัวข้อ

  1. คลิกสร้างหัวข้อ
  2. ตั้งค่ารหัสหัวข้อเป็น workspace-events
  3. เลือกช่องทำเครื่องหมายเพิ่มการสมัครใช้บริการเริ่มต้น
  4. คลิกสร้าง

b39f9a0aec7c9939.png

หากต้องการมอบสิทธิ์เข้าถึงในการเผยแพร่ข้อความ Pub/Sub ไปยังหัวข้อที่สร้างขึ้นใหม่จาก Google Chat ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกหัวข้อจากรายการ
  2. เลือกแท็บสิทธิ์
  3. เพิ่ม chat-api-push@system.gserviceaccount.com ไปยังผู้ใช้หลักใหม่
  4. เลือกผู้เผยแพร่โฆษณา Pub/Sub สำหรับบทบาท
  5. คลิกบันทึก

8d4016c37532503.png

อัปเดตโปรเจ็กต์ Apps Script

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. ไปที่เมนู ☰ > IAM และผู้ดูแลระบบ > การตั้งค่า

  1. คัดลอกรหัสโปรเจ็กต์

82592fa0bd113469.png

ในสภาพแวดล้อมท้องถิ่น ให้ทำตามขั้นตอนต่อไปนี้

  1. เปลี่ยนไดเรกทอรีปัจจุบันในเทอร์มินัลเป็น issue-management/3-message-monitoring ซึ่งมีซอร์สโค้ดที่คุณต้องการ
  2. ตั้งค่าค่าคงที่สตริงที่ชื่อ PROJECT_ID ในไฟล์ Configuration.js เป็นรหัสโปรเจ็กต์ที่คัดลอก
  3. ตั้งค่าคงที่ JSON ที่ชื่อ CHAT_CREDENTIALS ในไฟล์ Configuration.js เป็นเนื้อหาไฟล์คีย์ส่วนตัวที่คุณดาวน์โหลดไว้ก่อนหน้านี้
  4. คัดลอกไฟล์ issue-management/2-app-home/.clasp.json ไปยังไดเรกทอรีปัจจุบัน
  5. เรียกใช้คำสั่งต่อไปนี้
clasp push

ลองใช้

ทำตามขั้นตอนต่อไปนี้ใน Google Chat

  1. ส่งข้อความส่วนตัวด้วยคำสั่งเครื่องหมายทับ /create ไปยังแอป แอปจะเปิดกล่องโต้ตอบ
  2. ตั้งค่าชื่อเป็น Issue Title 3
  3. ตั้งค่าคำอธิบายเป็นปัญหา Description 3
  4. คลิกสร้าง
  5. ในพื้นที่ทำงานที่สร้างขึ้นใหม่ ให้ส่งข้อความ 2-3 ข้อความที่กล่าวถึงปัญหา
  6. ส่งข้อความด้วยคำสั่งเครื่องหมายทับ /close และความละเอียด เช่น Fixed

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. ไปที่เมนู ⋮ > Pub/Sub > การสมัครใช้บริการ

  1. เลือกการสมัครใช้บริการ workspace-events-sub
  2. เลือกแท็บข้อความ
  3. คลิกดึง ตารางจะแสดงข้อความที่เกี่ยวข้องกับสิ่งที่คุณส่งไปยังพื้นที่ทำงานที่สร้างขึ้นใหม่

82631c9792d83889.png

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Apps Script

  1. เลือกโปรเจ็กต์
  2. เลือกโปรแกรมตัดต่อ
  3. เลือกไฟล์ WorkspaceEvent.gs
  4. เลือก processSubscription ในส่วน Run
  5. คลิก Run คุณจะเห็นจากบันทึกการดำเนินการว่าข้อความได้รับการประมวลผลแล้ว

c612e8fa2bd0a163.png

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. ไปที่เมนู ⋮ > Pub/Sub > การสมัครใช้บริการ

  1. เลือกการสมัครใช้บริการ workspace-events-sub
  2. เลือกแท็บข้อความ
  3. คลิกดึง ตารางจะไม่แสดงข้อความที่เกี่ยวข้องกับสิ่งที่คุณส่งไปยังพื้นที่ทำงานที่สร้างขึ้นใหม่อีกต่อไป

e185454cac862a7b.png

  • ใน Google Chat ในพื้นที่ทำงานที่อุทิศให้กับปัญหาที่ 3 ซึ่งคุณสร้างขึ้นด้วยคำสั่งเครื่องหมายทับ /create ให้ส่งข้อความเพิ่มเติมอีก 2-3 ข้อความที่กล่าวถึงปัญหาดังกล่าว

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. ไปที่เมนู ⋮ > Pub/Sub > การสมัครใช้บริการ

  1. เลือกการสมัครใช้บริการ workspace-events-sub
  2. เลือกแท็บข้อความ
  3. คลิกดึง ตารางจะไม่แสดงข้อความที่เกี่ยวข้องกับสิ่งที่คุณส่งไปยังพื้นที่ทำงานที่สร้างขึ้นใหม่

6. ไม่บังคับ: แอป 1: เพิ่มความช่วยเหลือเกี่ยวกับการไม่แบ่งแยก

ตรวจสอบแนวคิด

ข้อความแจ้งเกี่ยวกับ Gen AI เป็นศิลปะในการสร้างวิธีการหรือคำถามเพื่อเป็นแนวทางให้กับโมเดล Generative AI เกี่ยวกับประเภทเอาต์พุตที่ต้องการที่ต้องการ แนวทางปฏิบัติทั่วไปคือให้กำหนดคำตอบโดยเพิ่มกฎและเงื่อนไขในพรอมต์ ซึ่งจะช่วยให้ผลลัพธ์ปลอดภัย เกี่ยวข้อง สม่ำเสมอ และสอดคล้องกับความคาดหวัง

ขั้นตอนการตรวจสอบ

ดำเนินการสมัครใช้บริการ (อัปเดต)

780d0802f77dd180.png

ตรวจสอบซอร์สโค้ด

ต้องแก้ไขโปรเจ็กต์ Apps Script

WorkspaceEvent.js

// Edits the function to replace logging by an actual card message.

function processSubscription() {
  ...
  for (var messageIndex in messages) {
    ...
    } else if (ceType === "google.workspace.chat.message.v1.created") {
      ...
      const inclusivityCheck = getInclusivityFeedback(chatMessage.text);
      if (inclusivityCheck !== "It's inclusive!") {
        createAppMessageUsingChatService({
          cardsV2: [{ cardId: "1", card: { header: {
              title: "Inclusivity",
              subtitle: `The following words are not inclusive: ${inclusivityCheck}`
          }}}]
        },
        chatMessage.space.name);
      }
      ...
    }
    ...
  }
  ...
}

VertexAi.js

/**
 * Gets feedback on inclusivity for a text with the Gemini Pro model using
 * Vertex AI API.
 * 
 * Returns "It's inclusive!" when it is otherwise a list of word(s) that might not
 * be optimal.
 *
 * @param {string} text the text
 * @return {string} the feedback
 */
function getInclusivityFeedback(text) {
  const url = `https://${VERTEX_AI_LOCATION_ID}-aiplatform.googleapis.com/v1`
    + `/projects/${PROJECT_ID}/locations/${VERTEX_AI_LOCATION_ID}`
    + "/publishers/google/models/gemini-1.0-pro:generateContent";
  const options =  {
    method: "POST",
    headers: { Authorization: "Bearer " + ScriptApp.getOAuthToken() },
    contentType: "application/json",
    payload: JSON.stringify({
      contents: {
        role: "user",
        parts: {
          text: "Are there any words that obviously go against inclusivity "
            + "in this text:"
            + `\n\n----------\n${text}\n----------\n\n`
            + "If there are not, answer \"It's inclusive!\" "
            + "otherwise answer by listing them separated by commas. "
            + "Do not answer with any explanation."
        }
      },
      safetySettings: {
        category: "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        threshold: "BLOCK_LOW_AND_ABOVE"
      },
      generationConfig: {
        temperature: 0.2,
        topP: 0.8,
        topK: 40
      }
    })
  };

  return JSON.parse(UrlFetchApp.fetch(url, options).getContentText())
    .candidates[0].content.parts[0].text;
}

อัปเดตโปรเจ็กต์ Apps Script

ในสภาพแวดล้อมท้องถิ่น ให้ทำตามขั้นตอนต่อไปนี้

  1. เปลี่ยนไดเรกทอรีปัจจุบันในเทอร์มินัลเป็น issue-management/4-inclusivity-help ซึ่งมีซอร์สโค้ดที่คุณต้องการ
  2. คัดลอกไฟล์ issue-management/3-message-monitoring/.clasp.json ไปยังไดเรกทอรีปัจจุบัน
  3. คัดลอกไฟล์ issue-management/3-message-monitoring/Configuration.js ไปยังไดเรกทอรีปัจจุบันเพื่อแทนที่ไฟล์ที่มีอยู่
  4. เรียกใช้คำสั่งต่อไปนี้
clasp push

ลองใช้

ทำตามขั้นตอนต่อไปนี้ใน Google Chat

  1. ส่งข้อความส่วนตัวด้วยคำสั่งเครื่องหมายทับ /create ไปยังแอป แอปจะเปิดกล่องโต้ตอบ
  2. ตั้งค่าชื่อเป็น Issue Title 4
  3. ตั้งค่าคำอธิบายเป็นปัญหา Description 4
  4. คลิกสร้าง
  5. ส่ง It happened to me last week as well ในพื้นที่ทำงานที่สร้างขึ้นใหม่

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Apps Script

  1. เลือกโปรเจ็กต์
  2. เลือกโปรแกรมตัดต่อ
  3. เลือกไฟล์ WorkspaceEvent.gs
  4. เลือก processSubscription ในส่วน Run
  5. คลิกเรียกใช้ คุณจะดูได้จากบันทึกการดำเนินการว่าข้อความได้รับการประมวลผลแล้ว

ทำตามขั้นตอนต่อไปนี้ใน Google Chat

  1. โปรดสังเกตว่าแอปไม่ได้ส่งความช่วยเหลือเกี่ยวกับการไม่แบ่งแยกใดๆ ในพื้นที่ทำงานที่สร้างขึ้นใหม่
  2. ส่งข้อความ I had to add myself from the master to fix it ในพื้นที่ทำงานที่สร้างขึ้นใหม่

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Apps Script

  1. เลือกโปรเจ็กต์
  2. เลือกโปรแกรมตัดต่อ
  3. เลือกไฟล์ WorkspaceEvent.gs
  4. เลือก processSubscription ในส่วน Run
  5. คลิกเรียกใช้ คุณจะดูได้จากบันทึกการดำเนินการว่าข้อความได้รับการประมวลผลแล้ว ใน Google Chat แอปได้ส่งข้อความช่วยเหลือเกี่ยวกับการไม่แบ่งแยกในพื้นที่ทำงานที่สร้างขึ้นใหม่

7936342847acbe2d.png

7. ไม่บังคับ: แอปที่ 1: เพิ่มค่ากำหนด

.

ตรวจสอบแนวคิด

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

eebe88238f6b13f.png

ขั้นตอนการตรวจสอบ

ปิดใช้ความช่วยเหลือเกี่ยวกับการไม่แบ่งแยก

1bb7a8592ee6221e.png

ตรวจสอบซอร์สโค้ด

ต้องแก้ไขโปรเจ็กต์ Apps Script

ChatApp.js

// Edits the function to handle the inclusivity help disablement action for a
// given space.

function onCardClick(event) {
  ...
  if (event.action.actionMethodName === "disableInclusivityHelp") {
    disableInclusivityHelp(event.common.parameters.spaceId);
  }
}

Storage.js

// Edits the function to keep track of the inclusivity help setting.

function saveCreatedIssue(title, description, spaceId, subscriptionId) {
  appProperties.setProperty(spaceId, JSON.stringify({
    ...
    inclusivityHelp: true,
    ...
  }));
  ...
}
/**
 * Disables inclusivity help in a space.
 * 
 * @param {string} spaceId the ID of dedicated space of the issue
 */
function disableInclusivityHelp(spaceId) {
  var issue = JSON.parse(appProperties.getProperty(spaceId));
  issue.inclusivityHelp = false;
  appProperties.setProperty(spaceId, JSON.stringify(issue));
}
/**
 * Checks whether the app should help with inclusivity in a given space.
 * 
 * @param {string} spaceId the ID of dedicated space of the issue
 * @return whether the app should help with inclusivity
 */
function shouldHelpWithInclusivity(spaceId) {
  return JSON.parse(appProperties.getProperty(spaceId)).inclusivityHelp;
}

WorkspaceEvent.js

// Edits the function to display the accessory widget to the existing card message.

function processSubscription() {
  ...
  for (var messageIndex in messages) {
    ...
    } else if (ceType === "google.workspace.chat.message.v1.created") {
      ...
      if (... && shouldHelpWithInclusivity(chatMessage.space.name)) {
        createAppMessageUsingChatService({
          ...
          accessoryWidgets: [{ buttonList: { buttons: [{
            altText: "Disable inclusivity help",
            icon: {
              iconUrl: "https://upload.wikimedia.org/.../Stop_hand_rugen.png"
            },
            onClick: { action: {
              function: "disableInclusivityHelp",
              parameters: [{
                key: "spaceId",
                value: chatMessage.space.name
              }]
            }}
          }]}}]
        }, ...);
        ...
      }
      ...
    }
    ...
  }
  ...
}

อัปเดตโปรเจ็กต์ Apps Script

ในสภาพแวดล้อมท้องถิ่น ให้ทำตามขั้นตอนต่อไปนี้

  1. เปลี่ยนไดเรกทอรีปัจจุบันในเทอร์มินัลเป็น issue-management/5-disable-help ซึ่งมีซอร์สโค้ดที่คุณต้องการ
  2. คัดลอกไฟล์ issue-management/4-inclusivity-help/.clasp.json ไปยังไดเรกทอรีปัจจุบัน
  3. คัดลอกไฟล์ issue-management/4-inclusivity-help/Configuration.js ไปยังไดเรกทอรีปัจจุบันเพื่อแทนที่ไฟล์ที่มีอยู่
  4. เรียกใช้คำสั่งต่อไปนี้
clasp push

ลองใช้

ปิดใช้ความช่วยเหลือ

  • ใน Google Chat ในพื้นที่ทำงานที่อุทิศให้กับปัญหาที่ 4 ที่คุณสร้างขึ้นด้วยคำสั่งเครื่องหมายทับ /create ให้ส่งข้อความ I had to add myself from the master to fix

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Apps Script

  1. เลือกโปรเจ็กต์
  2. เลือกโปรแกรมตัดต่อ
  3. เลือกไฟล์ WorkspaceEvent.gs
  4. เลือก processSubscription ในส่วน Run
  5. คลิกเรียกใช้ คุณจะดูได้จากบันทึกการดำเนินการว่าข้อความได้รับการประมวลผลแล้ว

ทำตามขั้นตอนต่อไปนี้ใน Google Chat

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

de722cff1928dec9.png

การตรวจสอบการปิดใช้

  • ใน Google Chat ในพื้นที่ทำงานที่อุทิศให้กับปัญหาที่ 4 ที่คุณสร้างขึ้นด้วยคำสั่งเครื่องหมายทับ /create ให้ส่งข้อความ I had to add myself from the master to fix

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Apps Script

  1. เลือกโปรเจ็กต์
  2. เลือกโปรแกรมตัดต่อ
  3. เลือกไฟล์ WorkspaceEvent.gs
  4. เลือก processSubscription ในส่วน Run
  5. คลิกเรียกใช้ คุณจะดูได้จากบันทึกการดำเนินการว่าข้อความได้รับการประมวลผลแล้ว ใน Google Chat แอปไม่ได้ส่งข้อความพร้อมความช่วยเหลือเกี่ยวกับการไม่แบ่งแยกไปยังพื้นที่ทำงานที่ให้ความสำคัญเนื่องจากปิดใช้แอปไว้

347d659db53b73e9.png

8. แอป 2: สร้าง

ตรวจสอบแนวคิด

การเริ่มต้นใช้งาน Gen AI

แต่เป็นการทำให้โมเดล AI เป็นข้อเท็จจริงและน่าเชื่อถือยิ่งขึ้นโดยการเชื่อมต่อกับแหล่งความรู้ที่ยืนยันได้ เทคนิคนี้ช่วยป้องกันไม่ให้ AI คิดค้นข้อมูลขึ้นมาและช่วยให้คำตอบมีความเกี่ยวข้องตามบริบทและลดความลำเอียงน้อยลง

ภาษาธรรมชาติ

ภาษาที่มนุษย์พูดหรือเขียนเพื่อการสื่อสารในชีวิตประจำวัน ตรงข้ามกับภาษาที่สร้างขึ้นโดยใช้คอมพิวเตอร์

พื้นที่เก็บข้อมูลระบบคลาวด์

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

พื้นที่เก็บข้อมูล Dialogflow CX

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

ตรวจสอบสถาปัตยกรรม

9d3342d12f3b4dda.png

แอป Google Chat นี้สร้างขึ้นด้วย Dialogflow CX และทํางานดังนี้

  1. ผู้ใช้ส่งข้อความไปยังแอป ไม่ว่าจะในข้อความส่วนตัวหรือในพื้นที่ทำงาน
  2. แอปซึ่งเป็น Agent ของ Dialogflow CX และเชื่อมโยงกับโปรเจ็กต์ Google Cloud จะประมวลผลข้อความ
  3. แอปผสานรวมกับที่เก็บข้อมูลที่อยู่ใน Cloud Storage
  4. แอปจะส่งการตอบกลับพร้อมกันทั้งในข้อความส่วนตัวหรือในพื้นที่ทำงานเดิม

ขั้นตอนการตรวจสอบ

ตอบคำถาม

aad9fb5a7ca48956.png

ตรวจสอบซอร์สโค้ด

แหล่งข้อมูลเดียวที่คุณต้องใช้ไม่ใช่โค้ด แต่เป็นข้อมูลที่คุณใช้เพื่อวางระบบ

google-chat-overview.pdf

มีข้อมูลที่ไม่มีโครงสร้างของแอป Google Chat ซึ่งเป็นหน้าเว็บเวอร์ชันพิมพ์จากเว็บไซต์นักพัฒนาแอป Google Workspace

e9b91c4587b1a3a0.png

อัปเดตโปรเจ็กต์ Google Cloud

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Google Cloud

  1. เปิดใช้ Dialogflow และ Cloud Storage API

  1. เปิดใช้ Vertex AI Agent Builder API

  1. คลิกเมนู ⋮ > API และบริการ > API และบริการที่เปิดใช้ จากนั้นยืนยันว่าเปิดใช้ APIS ทั้งหมดแล้ว

.

สร้าง Agent พื้นที่เก็บข้อมูล Dialogflow CX

ริเริ่มข้อมูลความรู้

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู แป้นพิมพ์ลัด > Cloud Storage > ที่เก็บข้อมูล

4f15978ae9f1b687.png

  1. คลิกสร้าง
  2. ตั้ง name เป็น gchat-knowledge
  3. คลิกสร้าง

6b38c6d4d2c41bba.png

  1. เลือกที่เก็บข้อมูล gchat-knowledge
  2. คลิกอัปโหลดไฟล์
  3. เลือกไฟล์ knowledge-app/grounding/google-chat-overview.pdf จากสภาพแวดล้อมในเครื่อง

df89acb22e1762af.png

สร้างแอป

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ⋮ > เครื่องมือสร้าง Agent > แอป

  1. คลิกแอปใหม่
  2. เลือกประเภท Chat

44276003074bcf14.png

  1. ตั้ง Company name เป็นชื่อบริษัท
  2. ตั้งค่า Agent name เป็น knowledge
  3. คลิกดำเนินการต่อ

c4fedfd7556f723b.png

  1. คลิกสร้างพื้นที่เก็บข้อมูลใหม่
  2. เลือก Cloud Storage เป็นแหล่งข้อมูล

6e2440ecf0f8f9bd.png

  1. เลือกไฟล์
  2. คลิกเลือกดู
  3. เลือกไฟล์ google-chat-overview.pdf
  4. คลิกดำเนินการต่อ
  5. ตั้งชื่อพื้นที่เก็บข้อมูลเป็น gchat-knowledge-ds
  6. คลิกสร้าง

a675df7490b83900.png

  1. เลือกที่เก็บข้อมูล gchat-knowledge-ds ในตาราง
  2. คลิกสร้าง

f121d580771ed96.png

  1. หลังจากผ่านไป 2-3 นาที ให้คลิกเมนู ⋮ > เครื่องมือสร้าง Agent > แอป แล้วคุณจะเห็นแอปดังกล่าว

d929a7431dd84968.png

  1. คลิกเมนู ⋮ > เครื่องมือสร้าง Agent > พื้นที่เก็บข้อมูล

  1. คลิกพื้นที่เก็บข้อมูล gchat-knowledge-ds จำนวนเอกสารคือ 1 ซึ่งบ่งบอกว่าเอกสารพร้อมแล้ว

558319790a0accf2.png

แอปที่สมบูรณ์และทดสอบ

ในคอนโซล Dialogflow CX ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกโปรเจ็กต์ Google Cloud
  2. เลือกตัวแทนความรู้

ca9b2fb4be92e8e4.png

  1. เลือกการตั้งค่า Agent > Generative AI > Generative Agent
  2. เปลี่ยนรูปแบบจาก Text Bison เป็น Gemini Pro
  3. คลิกบันทึก

ภาพ

  1. คลิกทดสอบตัวแทน
  2. ส่ง What is Google Chat? ตัวแทนจะตอบกลับด้วยสิ่งที่มีความหมาย

8e3a2cb02469041a.png

ผสานรวมแอป Google Chat

ในคอนโซล Dialogflow CX ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกโปรเจ็กต์ Google Cloud
  2. ในแถวของตัวแทนความรู้ ให้คลิก 1e7ede7abae4aa3c.png > คัดลอกชื่อ

e19f61185158110d.png

ทำตามขั้นตอนในคอนโซล Google Cloud

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

  1. ในส่วนการตั้งค่าการเชื่อมต่อ ให้เลือก Dialogflow
  2. เลือก Dialogflow CX ในส่วนการตั้งค่า Dialogflow
  3. ตั้ง Agent หรือ Environment resource name เป็นชื่อ Agent ที่คุณคัดลอก
  4. นำคำสั่งเครื่องหมายทับ 2 คำสั่งออก

505ff39a50880904.png

  1. ใน Google Chat ให้ส่ง What is Google Chat? ในข้อความส่วนตัวไปยังแอป Google Chat ตัวแทนจะตอบกลับด้วยข้อความที่มีความหมาย

abda9e43b81fb0ea.png

9. ไม่บังคับ: แอป 2: เพิ่มแหล่งที่มา

ตรวจสอบแนวคิด

เว็บฮุคของ Dialogflow CX

บริการที่โฮสต์ตรรกะทางธุรกิจหรือเรียกใช้บริการอื่นๆ ในระหว่างเซสชันของ Dialogflow CX เว็บฮุคจะใช้ข้อมูลที่ดึงมาโดยใช้การประมวลผลภาษาธรรมชาติเพื่อสร้างคำตอบแบบไดนามิก ตรวจสอบข้อมูลที่รวบรวมมา หรือทริกเกอร์การดําเนินการในแบ็กเอนด์

ฟังก์ชันระบบคลาวด์

ฟังก์ชันระบบคลาวด์เหมาะอย่างยิ่งสำหรับการสร้างแบ็กเอนด์แบบ Serverless, การประมวลผลข้อมูลแบบเรียลไทม์ และการสร้างแอปอัจฉริยะ จะไม่มีเซิร์ฟเวอร์สำหรับการจัดสรร จัดการ แพตช์ หรืออัปเดต ซึ่งจะปรับขนาดโดยอัตโนมัติ ทั้งยังมีความพร้อมใช้งานสูงและคงทนต่อความเสียหาย

ขั้นตอนการตรวจสอบ

ตอบคำถาม (อัปเดต)

92767c07c7b252aa.png

ตรวจสอบซอร์สโค้ด

ซอร์สโค้ดเดียวที่คุณต้องใช้คือฟังก์ชันเพื่อปรับคำตอบของตัวแทนให้เข้ากับข้อความของ Google Chat ใช้เป็นเว็บฮุค

package.json

// The function relies on the Cloud Functions framework to run.

{
  "name": "agent-response-adapter",
  "version": "0.0.1",
  "dependencies": {
    "@google-cloud/functions-framework": "^3.0.0"
  },
  ...
}

index.js

/** 
 * Handles all incoming requests.
 *
 * It takes a Dialogflow CX agent response as input and returns a
 * valid Google Chat card message with both the text and source links
 */
functions.http('agent-response-adapter', (request, response) => {
  // Creates Google Chat buttons based on the data store agent response
  // grounding details.
  var linkTitles = [];
  var linkButtons = [];
  const grounding = request.body.messages[1].payload.richContent[0][0];
  if (grounding.type === "match_citations") {
    // Supports citation match type.
    grounding.citations.forEach((citation) => {
      // Avoid duplications.
      if (linkTitles.indexOf(citation.title) < 0) {
        linkButtons.push({
          text: citation.title,
          onClick: { openLink: {
            url: citation.actionLink
          }}
        });
        linkTitles.push(citation.title);
      }
    });
  } else if (grounding.type === "info") {
    // Supports info type.
    if (linkTitles.indexOf(grounding.title) < 0) {
      linkButtons.push({
        text: grounding.title,
        onClick: { openLink: {
          url: grounding.actionLink
        }}
      });
      linkTitles.push(grounding.title);
    }
  }

  // Sends the Dialogflow CX fulfillment response to replace the agent response
  // with the Chat message with text and source buttons.
  response.send({ fulfillment_response: {
    merge_behavior: "REPLACE",
    messages: [{ payload: {
      // Reuses the original data store agent response text.
      text: request.body.messages[0].text.text[0],
      cardsV2: [{
        cardId: "sourcesCard",
        card: { sections: [{
          header: "Sources",
          widgets: [{ buttonList: {
            buttons: linkButtons
          }}]
        }]}
      }]
    }}]
  }});
});

อัปเดตโปรเจ็กต์ Google Cloud

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Google Cloud

  1. เปิดใช้ Cloud Build, Cloud Functions, Cloud Logging, Artifact Registry และ Cloud Run API

  1. คลิกเมนู ⋮ > API และบริการ > API และบริการที่เปิดใช้ จากนั้นยืนยันว่าเปิดใช้ API แล้ว

อัปเดต Agent พื้นที่เก็บข้อมูล Dialogflow CX

คุณต้องทำให้ Cloud Function ใช้งานได้และอัปเดตเว็บฮุค Dialogflow CX ให้ทริกเกอร์กับแหล่งที่มาหลายแหล่งเมื่อเป็นไปได้

แสดงผลหลายแหล่งที่มา

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

ในคอนโซล Dialogflow CX ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกโปรเจ็กต์ Google Cloud
  2. เลือกตัวแทนความรู้
  3. เลือกหน้าเริ่มต้น
  4. เลือกแก้ไขพื้นที่เก็บข้อมูล
  5. ในส่วนการตอบกลับของตัวแทน ให้ตั้งค่าตัวเลือกการตอบกลับที่เก็บข้อมูลเป็น 5
  6. คลิกบันทึก

f5932d03057df645.png

เริ่มใช้ Cloud Function

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ☰ > ฟังก์ชันระบบคลาวด์

  1. คลิกสร้างฟังก์ชัน
  2. ภายใต้พื้นฐาน ให้ตั้งค่า name เป็น function-1
  3. ในส่วนการตรวจสอบสิทธิ์ ให้เลือกปุ่มตัวเลือกอนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์
  4. ในส่วนการตั้งค่ารันไทม์ บิลด์ การเชื่อมต่อ และความปลอดภัย ให้ตั้งค่าจำนวนอินสแตนซ์สูงสุดเป็น 3
  5. คลิกถัดไป

bd3790a9285f9c07.png

  1. ตั้งค่าจุดแรกเข้าเป็น agent-response-adapter
  2. แทนที่เนื้อหาเริ่มต้นด้วยไฟล์ที่อยู่ในไดเรกทอรี knowledge-app/agent-response-adapter
  3. คลิกทำให้ใช้งานได้

b379bb8ca0fc1079.png

  1. คัดลอก URL ขณะรอ 2-3 นาทีเพื่อให้ฟังก์ชันติดตั้งใช้งาน

eaae08cf048b9b1c.png

เริ่มใช้งานเว็บฮุค

คุณต้องกำหนดค่า Agent ของ Dialogflow CX เพื่อใช้เว็บฮุคที่จะทริกเกอร์ฟังก์ชันที่ทำให้ใช้งานได้ใหม่

ในคอนโซล Dialogflow CX ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกโปรเจ็กต์ Google Cloud
  2. เลือกตัวแทนความรู้
  3. เลือกจัดการ > เว็บฮุค > สร้าง
  4. ตั้งค่าชื่อที่แสดงเป็น Google Chat Response Adapter
  5. ตั้งค่า URL ของเว็บฮุคเป็น URL ที่คัดลอกไว้ก่อนหน้านี้
  6. คลิกบันทึก

5f3c6804d52b87c1.png

  1. คลิกสร้าง
  2. เลือกหน้าเริ่มต้น
  3. เลือกแก้ไขพื้นที่เก็บข้อมูล
  4. ในส่วนการตั้งค่าเว็บฮุค ให้คลิกปุ่มสลับเปิดใช้เว็บฮุค
  5. เลือกอะแดปเตอร์การตอบกลับแชทของ Google สำหรับเว็บฮุค
  6. ตั้งค่า tag เป็น arbitrary_tag
  7. คลิกบันทึก

442fcaaec9b8f2e3.png

แอปทดสอบ

  • ใน Google Chat ให้ส่ง What is Google Chat? ในข้อความส่วนตัวไปยังแอป Google Chat ตัวแทนจะตอบกลับพร้อมข้อความที่มีความหมายและการ์ดที่มีแหล่งที่มา (หากมี)

9468866bfe848bb8.png

10. แอป 3: สร้าง

ตรวจสอบแนวคิด

การโต้ตอบที่เป็นการสนทนา

เป็นการแลกเปลี่ยนข้อมูลหรือแนวคิดระหว่างคน 2 คนขึ้นไปผ่านภาษาธรรมชาติ ซึ่งแตกต่างจากอินเทอร์เฟซทางเทคนิคที่มักอาศัยการแลกเปลี่ยนแบบไม่เก็บสถานะ มีโครงสร้างสูง และไม่ยอมรับ

ข้อกำหนดของ OpenAPI

มอบวิธีการที่สอดคล้องกันในการส่งข้อมูลผ่านวงจร API แต่ละขั้น ซึ่งเป็นภาษาเฉพาะสำหรับ HTTP API ที่กำหนดโครงสร้างและไวยากรณ์ในลักษณะที่ไม่ตรงกับภาษาโปรแกรมที่ใช้สร้าง API โดยทั่วไป ข้อกำหนดของ API จะเขียนด้วย YAML หรือ JSON เพื่อช่วยให้แชร์และอ่านข้อกำหนดได้อย่างง่ายดาย

เอเจนต์ Dialogflow CX

องค์ประกอบพื้นฐานของแอป Agent แอป Agent ตามปกติจะมีAgent หลายรายการ ซึ่งกำหนดให้ Agent แต่ละรายการจัดการงานเฉพาะ ระบบจะส่งข้อมูลเอเจนต์ไปยัง LLM เพื่อให้มีข้อมูลที่ต้องใช้ในการตอบคำถามและดำเนินงานต่างๆ เอเจนต์แต่ละรายจะให้ข้อมูล ส่งการค้นหาไปยังบริการภายนอก หรือเลื่อนการจัดการการสนทนาไปยังโฟลว์ Dialogflow CX หรือแทนตัวแทนอื่นเพื่อจัดการงานย่อยได้

เครื่องมือ Dialogflow CX

เครื่องมือใช้สำหรับเชื่อมต่อแอป Agent กับระบบภายนอก ระบบเหล่านี้เพิ่มพูนความรู้เกี่ยวกับแอป Agent และช่วยให้ทำงานที่ซับซ้อนได้อย่างมีประสิทธิภาพ

ตรวจสอบสถาปัตยกรรม

9d3342d12f3b4dda.png

แอป Google Chat นี้สร้างขึ้นด้วย Dialogflow CX และทํางานดังนี้

  1. ผู้ใช้ส่งข้อความไปยังแอป ไม่ว่าจะในข้อความส่วนตัวหรือในพื้นที่ทำงาน
  2. แอปซึ่งเป็น Agent ของ Dialogflow CX และเชื่อมโยงกับโปรเจ็กต์ Google Cloud จะประมวลผลข้อความ
  3. แอปผสานรวมกับตัวแทน
  4. แอปจะส่งการตอบกลับพร้อมกันทั้งในข้อความส่วนตัวหรือในพื้นที่ทำงานเดิม

ขั้นตอนการตรวจสอบ

รวบรวมรีวิว

a67a5b8b513bfc2c.png

ตรวจสอบซอร์สโค้ด

ซอร์สโค้ดเดียวที่คุณต้องมีคือฟังก์ชันเพื่อจำลองบริการแบ็กเอนด์ที่ Agent ใช้เป็นเครื่องมือ

package.json

// The function relies on the Cloud Functions framework to run.

{
  "name": "feedback-app-backend",
  "version": "0.0.1",
  "dependencies": {
    "@google-cloud/functions-framework": "^3.0.0"
  },
  ...
}

index.js

/** 
 * Handles all incoming requests.
 * 
 * It always returns OK in plain text.
 */
functions.http('feedback-app-backend', (request, response) => {
    response.send('OK');
});

service-openapi.yaml

// Defines the backend service structure and how to request it.

openapi: 3.1.0
info:
  title: Review Store
  license:
    name: Apache 2.0
    identifier: Apache-2.0
  version: 0.0.1
servers:
  - url: https://us-central1-project-0.cloudfunctions.net
paths:
  /store-review:
    post:
      operationId: storeReview
      summary: Store a new review
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                stars:
                  type: integer
                  format: int64
      responses:
        '200':
          description: success
          content:
            application/json:
              schema:
                type: string

เริ่มการจำลองบริการแบ็กเอนด์

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

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ☰ > ฟังก์ชันระบบคลาวด์

  1. คลิกสร้างฟังก์ชัน
  2. ภายใต้พื้นฐาน ให้ตั้งค่า name เป็น function-2
  3. ในส่วนการตรวจสอบสิทธิ์ ให้เลือกปุ่มตัวเลือกอนุญาตการเรียกใช้ที่ไม่ผ่านการตรวจสอบสิทธิ์
  4. ในส่วนการตั้งค่ารันไทม์ บิลด์ การเชื่อมต่อ และความปลอดภัย ให้ตั้งค่าจำนวนอินสแตนซ์สูงสุดเป็น 3
  5. คลิกถัดไป

e8cf0ee7441bf634.png

  1. ตั้งค่าจุดแรกเข้าเป็น feedback-app-backend
  2. แทนที่เนื้อหาเริ่มต้นด้วยไฟล์ที่อยู่ในไดเรกทอรี feedback-app
  3. คลิกทำให้ใช้งานได้

bdb5cf9f503aa7f6.png

  1. คัดลอก URL ขณะรอ 2-3 นาทีเพื่อให้ฟังก์ชันติดตั้งใช้งาน

สร้างแอป Agent ของ Dialogflow CX

สร้างแอป

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ⋮ > เครื่องมือสร้าง Agent > แอป

  1. คลิกแอปใหม่
  2. เลือก Agent
  3. ตั้งค่าชื่อที่แสดงเป็น Feedback App
  4. คลิกสร้าง

7ef3dbacee96c5aa.png

เริ่มเครื่องมือ

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ⋮ > เครื่องมือสร้าง Agent > แอป

  1. เลือกตัวแทนแอปฟีดแบ็ก
  2. คลิกเครื่องมือ > + สร้าง
  3. ตั้งชื่อเป็น review
  4. เลือก OpenAPI
  5. ตั้งค่า description เป็นค่าต่อไปนี้
The tool takes the number of stars as a parameter of the store review method and saves it in a database for later use.
  1. แทนที่ $URL ในไฟล์ feedback-app/service-openapi.yaml ด้วย URL ที่คัดลอกไว้ก่อนหน้านี้
  2. ตั้งค่า YAML Schema เป็นเนื้อหาที่แก้ไขของไฟล์ feedback-app/service-openapi.yaml
  3. คลิกบันทึก

58085d6d56b603f7.png

เริ่มการทำงานของตัวแทน

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ⋮ > เครื่องมือสร้าง Agent > แอป

  1. เลือกตัวแทนแอปฟีดแบ็ก
  2. เลือก Agents > Default Generative Agent
  3. ตั้งค่าชื่อ Agent เป็น Feedback collector
  4. ตั้งค่า goal เป็นค่าต่อไปนี้
You are an agent that collects reviews from Google Chat app developers.
A review may be between 0 and 5 stars. The more stars, the more positive the review.
  1. ตั้งค่า instructions เป็นค่าต่อไปนี้
If the developer didn't provide the number of stars, ask for the number of stars.
After the developer provides the number of stars of the review, confirm the number with the developer and use ${TOOL: review} to store the review with the number of stars.
If ${TOOL: review} fails, apologize and ask to try again later. Otherwise, thank the developer for the review.
  1. คลิกบันทึก

ebee7fdfa826b487.png

แอปทดสอบ

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ⋮ > เครื่องมือสร้าง Agent > แอป

  1. เลือกตัวแทนแอปฟีดแบ็ก
  2. ไปที่ดูตัวอย่าง Agent
  3. ในส่วนตัวแทน ให้เลือกเครื่องมือรวบรวมความคิดเห็น
  4. ในส่วนเลือกโมเดล Generative ให้เลือก gemini-pro
  5. ส่งข้อความ Hello! เพื่อเริ่มต้น

90ca8cb7b2c1cb4b.png

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ☰ > ฟังก์ชันระบบคลาวด์

  1. เลือก function-2 > บันทึก บันทึกบางส่วนแสดง Google-Dialogflow เป็นผู้โทร

48bfdf1788004d18.png

ผสานรวมแอป Google Chat

ในคอนโซล Dialogflow CX ให้ทำตามขั้นตอนต่อไปนี้

  1. เลือกโปรเจ็กต์ Google Cloud
  2. คลิกเมนูการทํางานของตัวแทน Feedback App
  3. คลิกคัดลอกชื่อ

ทำตามขั้นตอนในคอนโซล Google Cloud

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

  1. ตั้งค่า Agent หรือ Environment resource name เป็นชื่อ Agent ที่คุณคัดลอกไว้ก่อนหน้านี้

df16619a1cb85cf8.png

  • ใน Google Chat ให้ส่ง Hello! ในข้อความส่วนตัวไปยังแอป Google Chat เพื่อเริ่มต้น ตัวแทนจะตอบสนองคล้ายกับการทดสอบของคุณจากคอนโซล Dialogflow CX

99a7a0295f122f31.png

11. ล้างข้อมูล

ลบโปรเจ็กต์ Google Cloud

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

ทำตามขั้นตอนในคอนโซล Google Cloud

  1. คลิกเมนู ⋮ > IAM และผู้ดูแลระบบ > การตั้งค่า

  1. คลิกปิดเครื่อง
  2. ป้อนรหัสโปรเจ็กต์
  3. คลิกปิดเครื่อง

407699a4e03afea6.png

ลบโปรเจ็กต์ Apps Script

เราขอแนะนำให้ลบโปรเจ็กต์ Apps Script ของคุณด้วย

ทำตามขั้นตอนต่อไปนี้ในคอนโซล Apps Script

  1. เลือกโปรเจ็กต์
  2. คลิกเมนูการทำงาน
  3. คลิกนำออก

fa3a42d7d2201eb9.png

12. ขอแสดงความยินดี

ยินดีด้วย คุณได้สร้างแอป Google Chat ด้วย Gemini

ต้องทำอะไรต่อ

เราแสดงตัวอย่างกรณีการใช้งานแบบง่ายๆ ใน Codelab นี้เท่านั้น แต่ยังมีข้อมูลการขยายอีกมากมายที่คุณอาจพิจารณาในแอป Google Chat ดังตัวอย่างต่อไปนี้

  • ผสานรวมกับโมเดล Generative AI อื่นๆ รวมถึงที่กำหนดเอง
  • รองรับสื่อประเภทอื่นๆ เช่น เสียง รูปภาพ และวิดีโอ
  • ใช้หลายรูปแบบ
  • ใช้หน้าต่างบริบทที่นานขึ้นและการเก็บฟีดแบ็กมาแก้ไข
  • เผยแพร่แอป Google Chat ที่พร้อมสำหรับการใช้งานจริงในตลาดกลาง มีแหล่งข้อมูลมากมายที่พร้อมให้นักพัฒนาซอฟต์แวร์ใช้งาน เช่น วิดีโอ YouTube, เว็บไซต์เอกสารประกอบ, ตัวอย่างโค้ด และบทแนะนำ
  • เปิดใช้ Google Chat ให้กับองค์กร ฟีเจอร์โหมดการนำเข้าช่วยให้เริ่มต้นใช้งานได้ง่ายขึ้น

ดูข้อมูลเพิ่มเติม