Cách kết nối ElevenLabs agent với hệ thống lên lịch của Cal.com

Tổng quan

Kết nối các ElevenLabs AI agent của bạn với Cal.com để quản lý việc lên lịch và đặt lịch hẹn. Tích hợp này cho phép các agent của bạn kiểm tra thời gian rảnh, đặt lịch hẹn, hủy hoặc thay đổi lịch họp, cũng như tra cứu các cuộc hẹn hiện có thông qua những cuộc hội thoại tự nhiên.

Các tính năng

Tính năng Hỗ trợ
Zero retention mode (ZRM) - Chế độ không lưu giữ Không được hỗ trợ
Các file đính kèm trong công cụ Không được hỗ trợ - các công cụ chỉ hoạt động trên văn bản

Thiết lập

Tích hợp này sử dụng API key của Cal.com để xác thực (không phải ứng dụng OAuth).

1. Tạo API key trong Cal.com

Truy cập mục Settings > Developer > API Keys trong tài khoản Cal.com của bạn, sau đó nhấp vào New. Hãy sao chép key vừa tạo ngay lập tức - key này sẽ không hiển thị lại lần nữa.

2. Sử ​​dụng live key

Cal.com cung cấp hai loại key: Key thử nghiệm (bắt đầu bằng cal_) và key thực tế (bắt đầu bằng cal_live_). Bạn cần sử dụng key thực tế để agent của mình có thể truy cập vào dữ liệu lịch thực tế.

3. Kết nối trong ElevenLabs

Tại phần thiết lập tích hợp trên ElevenLabs, hãy dán Cal.com API key của bạn vào trường API Key.

Demo

Bản demo này sử dụng các công cụ webhook cũ (legacy). Nếu bạn đang sử dụng tính năng tích hợp sẵn của Cal.com, các công cụ này sẽ được tự động cấu hình - bạn không cần phải thiết lập webhook thủ công.

Cách thức hoạt động

Agent lên lịch các cuộc họp bằng cách sử dụng các lệnh gọi công cụ để thực hiện quy trình đặt lịch. Các tab bên dưới cung cấp tóm tắt tổng quan và nội dung chi tiết của câu lệnh hệ thống (system prompt).

Tổng quan cấp cao

1. Yêu cầu ban đầu và thông tin cuộc họp

Agent hỏi về mục đích cuộc họp, ngày/giờ mong muốn và thời lượng để thu thập thông tin phục vụ việc lên lịch.

2. Kiểm tra lịch trống

Agent kiểm tra lịch trống bằng cách:

  • Sử dụng công cụ get_available_slots để lấy các khung giờ còn trống.
  • Xác minh xem thời gian được yêu cầu có khả dụng hay không.
  • Đề xuất các khung giờ thay thế nếu thời gian yêu cầu không khả dụng.
  • Xác nhận thời gian đã chọn với người gọi.

3. Thu thập thông tin liên hệ

Sau khi thống nhất được thời gian, agent sẽ:

  • Thu thập và xác thực họ tên đầy đủ của người tham gia.
  • Kiểm tra tính chính xác của địa chỉ email.
  • Xác nhận thông tin múi giờ.
  • Thu thập các trường thông tin bổ sung cần thiết cho loại sự kiện trên Cal.com.

4. Tạo cuộc họp

Agent:

  • Gọi công cụ book_meeting sau khi đã xác minh tất cả thông tin.
  • Tuân theo cấu trúc mẫu đặt lịch.
  • Xác nhận việc tạo cuộc họp với người tham gia.
  • Thông báo cho họ rằng họ sẽ nhận được lời mời họp qua lịch.

Prompt hệ thống chi tiết

You are a helpful receptionist responsible for scheduling meetings using the Cal.com integration. Be friendly, precise, and concise.

Begin by briefly asking for the purpose of the meeting and the caller's preferred date and time.
Then, ask about the desired meeting duration (15, 30, or 60 minutes), and wait for the user's response before proceeding.

Once you have the meeting details, say you will check calendar availability:
- Call get_available_slots with the appropriate date range
- Verify if the requested time slot is available
- If not available, suggest alternative times from the available slots
- Continue until a suitable time is agreed upon

After confirming a time slot, gather the following contact details:
- The attendee's full name
- A valid email address. Note that the email address is transcribed from voice, so ensure it is formatted correctly.
- The attendee's time zone (in 'Continent/City' format like 'America/New_York')
- Read the email back to the caller to confirm accuracy

Once all details are confirmed, explain that you will create the meeting.
Create the meeting by using the book_meeting tool with the following parameters:
- start: The agreed meeting time in ISO 8601 format
- eventTypeId: The appropriate ID based on the meeting duration (15min: 1351800, 30min: 1351801, 60min: 1351802)
- attendee: An object containing the name, email, and timeZone

Thank the attendee and inform them they will receive a calendar invitation shortly.

Clarifications:
- Do not inform the user that you are formatting the email; simply do it.
- If the caller asks you to proceed with booking, do so with the existing information.

Guardrails:
- Do not share any internal IDs or API details with the caller.
- If booking fails, check for formatting issues in the email or time conflicts.
Bạn là một nhân viên lễ tân hữu ích, chịu trách nhiệm sắp xếp các cuộc họp thông qua tích hợp Cal.com. Hãy thể hiện thái độ thân thiện, chính xác và súc tích.

Trước tiên, hãy hỏi ngắn gọn về mục đích cuộc họp cũng như ngày và giờ mà người gọi mong muốn.
Sau đó, hãy hỏi về thời lượng cuộc họp (15, 30 hoặc 60 phút) và chờ phản hồi từ người dùng trước khi tiếp tục.

Khi đã có thông tin về cuộc họp, hãy thông báo rằng bạn sẽ kiểm tra lịch trống:
- Gọi hàm `get_available_slots` với khoảng thời gian phù hợp.
- Xác nhận xem khung giờ được yêu cầu có còn trống hay không.
- Nếu không còn trống, hãy đề xuất các khung giờ khác dựa trên những khoảng thời gian khả dụng.
- Tiếp tục trao đổi cho đến khi thống nhất được thời điểm phù hợp.

Sau khi chốt khung giờ, hãy thu thập các thông tin liên hệ sau:
- Họ và tên của người tham dự.
- Địa chỉ email hợp lệ. Lưu ý: vì địa chỉ email được chuyển đổi từ giọng nói, hãy đảm bảo định dạng của nó là chính xác.
- Múi giờ của người tham dự (theo định dạng 'Châu lục/Thành phố', ví dụ: 'America/New_York').
- Đọc lại địa chỉ email cho người gọi để xác nhận độ chính xác.

Khi tất cả thông tin đã được xác nhận, hãy thông báo rằng bạn sẽ tiến hành tạo cuộc họp.
Tạo cuộc họp bằng cách sử dụng công cụ `book_meeting` với các tham số sau:
- `start`: Thời điểm họp đã thống nhất (định dạng ISO 8601).
- `eventTypeId`: ID tương ứng với thời lượng cuộc họp (15 phút: 1351800, 30 phút: 1351801, 60 phút: 1351802).
- `attendee`: Một đối tượng bao gồm tên, email và múi giờ.

Cảm ơn người tham dự và thông báo rằng họ sẽ sớm nhận được lời mời họp qua lịch.

Lưu ý:
- Không cần thông báo cho người dùng rằng bạn đang định dạng lại địa chỉ email; hãy cứ thực hiện việc đó.
- Nếu người gọi yêu cầu tiến hành đặt lịch, hãy thực hiện dựa trên những thông tin hiện có.

Các quy tắc cần tuân thủ:
- Không tiết lộ bất kỳ ID nội bộ hoặc thông tin chi tiết nào về API cho người gọi.
- Nếu việc đặt lịch không thành công, hãy kiểm tra lại định dạng email hoặc xem có xung đột về thời gian hay không.

Thiết lập webhook thủ công

Nếu bạn sử dụng tích hợp Cal.com nguyên bản, các công cụ sẽ được tự động cấu hình. Những bước dưới đây chỉ áp dụng cho trường hợp thiết lập webhook thủ công.

1. Lưu trữ secret Cal.com

Hãy lưu trữ Cal.com API key của bạn một cách an toàn trước khi thực hiện các yêu cầu được xác thực. Nếu chưa có, hãy tạo một Cal.com API key mới.

API của Cal.com yêu cầu tiêu đề xác thực như sau:

'Authorization': 'Bearer YOUR_API_KEY'

Hãy lưu key này vào kho lưu trữ bí mật (secret storage) của agent để đảm bảo tính bảo mật và khả năng truy cập khi thực hiện các yêu cầu.

Để khớp với cấu trúc xác thực mà Cal.com yêu cầu, hãy nhớ thêm tiền tố Bearer vào trước API key khi tạo secret đó.

Các thông tin bảo mật (Secrets) cho công cụ
Các thông tin bảo mật (Secrets) cho công cụ

2. Thêm công cụ vào agent

Kích hoạt tính năng đặt lịch bằng cách tạo hai công cụ:

  • get_available_slots: Khi người dùng hỏi “Louis có rảnh vào lúc 10:30 sáng thứ Ba không?”, agent sẽ sử dụng endpoint “Get available slots” (Lấy các khung giờ trống) của Cal.com để kiểm tra các khoảng thời gian khả dụng.
  • book_meeting: Sau khi xác định được thời điểm phù hợp, agent sẽ thực hiện đặt lịch thông qua endpoint “Create a booking” (Tạo đặt lịch) của Cal.com.

Truy cập vào mục Tools trên dashboard và chọn Add Tool. Chọn loại công cụ là Webhook, sau đó điền thông tin vào các phần sau:

Công cụ 1: get_available_slots

Cấu hình: Siêu dữ liệu được agent sử dụng để xác định thời điểGiá trị

Value
Name get_available_slots
Description Công cụ này kiểm tra xem một khung thời gian cụ thể có trống trong lịch hay không.
Method GET
URL https://api.cal.com/v2/slots

Header: Khớp với các tiêu đề yêu cầu được xác định tại đây:

Loại Tên Giá trị
Secret Authorization Chọn secret key đã tạo ở trên
String cal-api-version 2024-09-04

Các tham số truy vấn: Khớp với các tham số truy vấn yêu cầu được xác định tại đây:

Loại dữ liệu Định danh Yêu cầu Mô tả
string start Có Ngày/giờ bắt đầu (UTC) để lấy các khung thời gian, ví dụ: ‘2024-08-13T09:00:00Z’.
string end Có Ngày/giờ kết thúc (UTC) để lấy các khung thời gian, ví dụ: ‘2024-08-13T17:00:00Z’.
string eventTypeId Có ID của loại sự kiện đã được đặt. Nếu là 15 phút, trả về abc. Nếu là 30 phút, trả về def. Nếu là 60 phút, trả về xyz.

Công cụ 2: book_meeting

Cấu hình: Siêu dữ liệu được agent sử dụng để xác định thời điểm cần gọi công cụ:

Trường Giá trị
Name book_meeting
Description Công cụ này đặt lịch họp trên lịch sau khi đã thống nhất được thời gian.
Method POST
URL https://api.cal.com/v2/bookings

Header: Khớp với các tiêu đề yêu cầu được xác định tại đây:

Loại Tên Giá trị
Secret Authorization Chọn secret key đã tạo ở trên
String cal-api-version 2024-08-13

Tham số phần body: Khớp với các tham số phần body yêu cầu được định nghĩa tại đây:

Định danh Kiểu dữ liệu Yêu cầu Mô tả
start String Có Thời điểm bắt đầu đặt chỗ theo định dạng ISO 8601, sử dụng múi giờ UTC, ví dụ: ‘2024-08-13T09:00:00Z’.
eventTypeId Number Có ID của loại sự kiện đã được đặt. Nếu là 15 phút, trả về abc. Nếu là 30 phút, trả về def. Nếu là 60 phút, trả về xyz.
attendee Object Có Thông tin của người tham dự. Bạn phải thu thập các trường dữ liệu này từ người dùng.

eventTypeId phải tương ứng với các loại sự kiện mà bạn đã thiết lập trong Cal. Hãy gọi endpoint này để lấy danh sách các loại sự kiện trong tài khoản của bạn (hoặc xây dựng một công cụ khác để thực hiện việc này một cách tự động).

Đối tượng người tham dự:

Định danh Kiểu dữ liệu Yêu cầu Mô tả
name String Có Họ và tên của người đặt cuộc họp.
email String Có Địa chỉ email của người đặt cuộc họp.
timeZone String Có Múi giờ của người gọi. Cần tuân theo định dạng ‘Châu lục/Thành phố’, chẳng hạn như ‘Europe/London’ hoặc ‘America/New_York’.

Kiểm tra agent bằng cách nhấn nút Test AI agent. Điều chỉnh câu lệnh hệ thống (system prompt) nếu cần thiết.

3. Cung cấp nhận thức về ngày và giờ

Theo mặc định, agent không biết ngày hoặc giờ hiện tại. Hãy sử dụng một trong các phương pháp sau:

  • Tạo công cụ truy xuất thời gian: Thêm một công cụ có chức năng lấy ngày và giờ hiện tại.
  • Sử dụng tính năng Overrides: Dùng tính năng này để chèn ngày và giờ hiện tại vào câu lệnh hệ thống (system prompt) ngay khi bắt đầu mỗi cuộc hội thoại.

Các lưu ý về bảo mật

  • Sử dụng các HTTPS endpoint cho tất cả các lệnh gọi webhook.
  • Lưu trữ các giá trị nhạy cảm dưới dạng thông tin bảo mật (secret) thông qua ElevenLabs Secrets Manager.
  • Đảm bảo rằng tất cả các tiêu đề xác thực đều tuân theo định dạng yêu cầu (Bearer YOUR_API_KEY).
  • Tuyệt đối không để lộ ID loại sự kiện hoặc các chi tiết API cho người gọi.
Thứ Ba, 27/10/2026 09:44
5 ★ 1 👨
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
❖ Eleven Agents