0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Hướng Dẫn Xây Dựng AI Telephony Agent Bằng Python

Đăng vào 3 tháng trước

• 7 phút đọc

Giới thiệu: Tại Sao AI Telephony Agents Quan Trọng

Bạn có muốn tạo một trợ lý giọng nói AI có khả năng tự động trả lời cuộc gọi điện thoại? AI telephony agents đang cách mạng hóa cách mà doanh nghiệp xử lý hỗ trợ khách hàng và giao tiếp thời gian thực.

Trong hướng dẫn này, chúng ta sẽ cùng nhau xây dựng một AI telephony agent hoàn chỉnh bằng Python, ngay cả khi bạn là người mới bắt đầu. Cuối cùng, trợ lý AI của bạn sẽ có khả năng:

  • Tự động trả lời cuộc gọi đến
  • Thực hiện cuộc gọi đi
  • Hiểu giọng nói con người sử dụng Speech-to-Text (STT)
  • Phản hồi thông minh với Large Language Models (LLM)
  • Nói tự nhiên với Text-to-Speech (TTS)

Điều Kiện Tiên Quyết Để Xây Dựng AI Telephony Agent

Ở đây chúng ta đang sử dụng pipeline thời gian thực, nếu bạn muốn sử dụng pipeline chuỗi thì hãy làm theo hướng dẫn này: https://docs.videosdk.live/ai\_agents/core-components/cascading-pipeline

Trước khi bắt đầu, hãy đảm bảo bạn đã có những điều sau:

  1. Python 3.12+ được cài đặt trên máy tính của bạn.
  2. Tài khoản VideoSDK để lấy VIDEOSDK_TOKEN của bạn.
  3. Các khóa API:
    • Khóa API Google cho pipeline thời gian thực
  4. Kiến thức cơ bản về Python (hàm, lớp, lập trình bất đồng bộ).

Mẹo cho người mới bắt đầu: Lưu trữ các khóa API của bạn trong tệp .env để bảo mật chúng.


Cài Đặt Dự Án

Tạo một thư mục dự án với cấu trúc sau:

Copy
├── main.py          # Logic chính của AI agent của bạn
├── requirements.txt # Các phụ thuộc Python
└── .env             # Lưu trữ các khóa API của bạn

Ví dụ tệp .env:

Copy
VIDEOSDK_TOKEN="your_videosdk_token_here"
GOOGLE_API_KEY="your_google_api_key_here"

Ví dụ tệp requirements.txt:

Copy
videosdk-agents==0.0.32
videosdk-plugins-google==0.0.32
python-dotenv==1.1.1
requests==2.31.

Những thư viện này sẽ xử lý nhận diện giọng nói, phản hồi AI và tổng hợp giọng nói.


Bước 1: Viết AI Telephony Agent Của Bạn

Dưới đây là một đoạn mã Python thân thiện với người mới bắt đầu cho AI agent của bạn:

Copy
import asyncio
import traceback
from videosdk.agents import Agent, AgentSession, RealTimePipeline, JobContext, RoomOptions, WorkerJob, Options
from videosdk.plugins.google import GeminiRealtime, GeminiLiveConfig
from dotenv import load_dotenv
import os
import logging
logging.basicConfig(level=logging.INFO)

load_dotenv()

class MyVoiceAgent(Agent):
    def __init__(self):
        super().__init__(
            instructions="Bạn là một trợ lý AI hữu ích trả lời các cuộc gọi điện thoại. Giữ cho các phản hồi của bạn ngắn gọn và thân thiện.",
        )

    async def on_enter(self) -> None:
        await self.session.say("Xin chào! Tôi là trợ lý thời gian thực của bạn. Tôi có thể giúp gì cho bạn hôm nay?")

    async def on_exit(self) -> None:
        await self.session.say("Tạm biệt! Thật tuyệt khi trò chuyện với bạn!")

async def start_session(context: JobContext):
    model = GeminiRealtime(
        api_key=os.getenv("GOOGLE_API_KEY"),
        config=GeminiLiveConfig(
            voice="Leda",
            response_modalities=["AUDIO"]
        )
    )
    pipeline = RealTimePipeline(model=model)
    session = AgentSession(agent=MyVoiceAgent(), pipeline=pipeline)

    try:
        await context.connect()
        await session.start()
        await asyncio.Event().wait()
    finally:
        await session.close()
        await context.shutdown()

if __name__ == "__main__":
    try:
        options = Options(
            agent_id="MyTelephonyAgent",  # CRITICAL: Định danh duy nhất cho routing
            register=True,               # REQUIRED: Đăng ký với VideoSDK cho telephony
            max_processes=10,            # Số cuộc gọi đồng thời xử lý
            host="localhost",
            port=8081,
            )
        job = WorkerJob(entrypoint=start_session, options=options)
        job.start()
    except Exception as e:
        traceback.print_exc()

Bước 2: Chạy AI Agent Của Bạn Tại Địa Phương

Copy
# Tạo một môi trường ảo
python3 -m venv .venv

# Kích hoạt môi trường ảo
source .venv/bin/activate  # macOS/Linux
.venv\Scripts\activate     # Windows

# Cài đặt các phụ thuộc
pip install -r requirements.txt

# Chạy AI agent
python main.py

Giữ cho terminal này mở, agent của bạn phải hoạt động để trả lời các cuộc gọi.


Bước 3: Kết Nối AI Agent Của Bạn Với Mạng Điện Thoại

1. Cấu Hình Cổng Nhận Cuộc Gọi

Mua Số Điện Thoại và Tạo SIP Trunk Trong Twilio

  • Đăng nhập vào Twilio Console của bạn.
  • Mua một số điện thoại nếu bạn chưa có.
  • Tạo một SIP Trunk mới trong phần Voice của Twilio.

Cấu Hình Cổng Nhận Cuộc Gọi Trong VideoSDK

  • Mở VideoSDK Dashboard.

  • Đi tới Telephony > Inbound Gateway.

  • Nhấp vào Add Gateway và nhập số Twilio của bạn để tạo một cổng nhận cuộc gọi.

  • Sau khi tạo, bạn sẽ thấy một Inbound Gateway URI (ví dụ: sip:your-org-id.sip.videosdk.live). Sao chép URI này.

Cấu Hình Origination của Twilio SIP Trunk

  • Trong SIP Trunk của bạn, đi tới phần Origination.
  • Thêm Inbound Gateway URI đã sao chép làm đích Origination.
  • Lưu thay đổi của bạn.

2. Cấu Hình Cổng Gọi Đi

Cấu Hình Twilio SIP Trunk Termination

  • Trong SIP Trunk của bạn, đi tới phần Termination.

  • Thiết lập Termination SIP URI (địa chỉ mà VideoSDK sẽ sử dụng cho cuộc gọi đi).

  • Thêm địa chỉ IP được phép và thiết lập thông tin xác thực (tên người dùng và mật khẩu) cho trunk.

Cấu Hình Cổng Gọi Đi Trong VideoSDK

  • Trong VideoSDK Dashboard, đi tới Telephony > Outbound Gateway.

  • Nhấp vào Add Gateway và nhập Twilio Termination URI và thông tin xác thực.

  • Lưu cổng.

Thêm Quy Tắc Định Tuyến

  • Đi đến Telephony > Routing Rules và nhấp vào Add.

  • Cấu hình quy tắc:

    • Gateway: Chọn Cổng Nhận/Đi mà bạn vừa tạo.
    • Numbers: Thêm số điện thoại liên quan đến cổng.
    • Dispatch: Chọn Agent.
    • Agent Type: Đặt thành Self Hosted.
    • Agent ID: Nhập MyTelephonyAgent. Điều này phải khớp với agent_id trong tệp main.py của bạn.
  • Nhấp vào Create để lưu quy tắc.

Khởi Động Cuộc Gọi Đi

Khi cổng gọi đi của bạn được cấu hình, bạn có thể khởi động cuộc gọi đi bằng cách sử dụng API của VideoSDK. Điều này cho phép bạn gọi ra từ một cuộc họp đến bất kỳ số điện thoại hoặc điểm SIP bên ngoài nào.

Sử dụng API sau để kích hoạt một cuộc gọi đi: Tham số:

  • gatewayId: ID của cổng SIP gọi đi sẽ sử dụng.
  • sipCallTo: Số điện thoại đích (định dạng E.164).
  • destinationRoomId: (Tùy chọn) ID phòng để kết nối cuộc gọi.

POST yêu cầu tới https://api.videosdk.live/v2/sip/call

NodeJS

Copy
import fetch from 'node-fetch';
const options = {
    method: "POST",
    headers: {
        "Authorization": "$YOUR_TOKEN",
        "Content-Type": "application/json",
    },
    body: JSON.stringify({
        "gatewayId" : "gw_123456789",
        "sipCallTo" : "+14155550123"
    }),
};
const url= `https://api.videosdk.live/v2/sip/call`;
const response = await fetch(url, options);
const data = await response.json();
console.log(data);

PHẢN HỒI

{ "message": "Cuộc gọi đã được khởi động thành công", "data": { "callId": "call_123456789", "status": "INITIATED", "roomId": "room_123456", "sipCallTo": "+14155550123", "sipCallFrom": "+14155559876", "gatewayId": "gw_123456789", "metadata": { "campaignId": "cmp_123", "source": "crm" }, "timelog": [ { "status": "INITIATED", "timestamp": "2025-08-21T11:45:00.000Z" } ] } }

Kết Luận

Bạn vừa học cách xây dựng một AI telephony agent hoàn chỉnh bằng Python sử dụng VideoSDK từ việc viết đoạn mã đầu tiên cho đến chạy nó tại địa phương và kết nối với mạng điện thoại toàn cầu. Với sự trợ giúp của pipeline thời gian thực, giờ đây agent của bạn có thể trả lời các cuộc gọi đến, thực hiện cuộc gọi đi và tương tác với người dùng trong thời gian thực.

  • 🚀 Hãy thử ngay: Nhân bản thiết lập này và tùy chỉnh trợ lý giọng nói AI của riêng bạn hôm nay.
  • 📚 Khám phá thêm: Kiểm tra tài liệu VideoSDK để biết thêm nhiều tính năng.
  • 💡 Xây dựng các trợ lý thông minh hơn: Thử nghiệm với các giọng nói, ngôn ngữ và mô hình AI khác nhau để tạo ra trải nghiệm độc đáo.
  • Tài nguyên: Xem video này để biết thêm chi tiết

💡 Chúng tôi rất muốn nghe từ bạn!

  • Bạn đã thành công trong việc thiết lập AI telephony agent đầu tiên bằng Python chưa?
  • Những thách thức nào bạn đã gặp phải khi tích hợp với các nhà cung cấp SIP như Twilio?

👉 Chia sẻ suy nghĩ, trở ngại hoặc câu chuyện thành công của bạn trong phần bình luận hoặc tham gia cộng đồng Discord của chúng tôi ↗. Chúng tôi rất mong được học hỏi từ hành trình của bạn và giúp bạn xây dựng những công cụ giao tiếp mạnh mẽ hơn bằng AI!

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào