Đối với các nhà phát triển muốn tham gia vào hệ sinh thái Telegram, Ứng dụng nhỏ Telegram (Mini App) chắc chắn là một điểm khởi đầu tuyệt vời. Nó không chỉ tiếp cận được lượng lớn người dùng mà còn tích hợp sâu với các chức năng thanh toán, bot, v.v. Tuy nhiên, nhiều người ngay từ đầu đã gặp khó khăn ở các câu hỏi: nên sử dụng stack công nghệ nào? Làm thế nào để cấu hình môi trường phát triển? Làm thế nào để dự án cục bộ thực sự chạy trên Telegram?
Bài viết này sẽ dựa trên một ví dụ ứng dụng đặt đồ ăn thực tế (tương tự Durer King) để hướng dẫn bạn quy trình phát triển từ 0 đến 1. Dù bạn là nhà phát triển frontend hay muốn thử sức với tư cách là một Product Manager trong hệ sinh thái Telegram, bài viết này đều có thể giúp bạn nhanh chóng làm quen.
Telegram không chỉ là một công cụ nhắn tin tức thời, hệ sinh thái mở của nó mang đến không gian sáng tạo rộng lớn cho các nhà phát triển:
Lấy ví dụ trong bài viết này, chúng ta sẽ xây dựng một hệ thống đặt đồ ăn hoàn chỉnh bao gồm Web App + Telegram Bot + Chức năng thanh toán. Frontend sử dụng React.js, backend sử dụng Node.js và tích hợp khả năng thanh toán chính thức của Telegram.
Trước khi bắt đầu chính thức, chúng ta cần xác định giải pháp công nghệ:
Điều đáng chú ý là Ứng dụng nhỏ Telegram bắt buộc sử dụng giao thức HTTPS, điều này có nghĩa là bạn cũng cần cấu hình chứng chỉ SSL cho môi trường phát triển cục bộ. Chúng tôi sẽ giải thích chi tiết cách giải quyết vấn đề này sau.
Tất cả các Ứng dụng nhỏ Telegram đều cần được khởi động thông qua một Bot. Trước hết, chúng ta sẽ tạo một bot thông qua BotFather:
@BotFather trong Telegram và mở cuộc trò chuyện./newbot.Token này giống như một chiếc chìa khóa, dùng để kết nối ứng dụng của bạn với máy chủ Telegram.
Tiếp theo, chúng ta sẽ sử dụng Telegram Mini App SDK chính thức để nhanh chóng thiết lập dự án:
# Tạo dự án React + TypeScript
npx create-react-app my-telegram-app --template typescript
cd my-telegram-app
# Cài đặt Telegram SDK
npm install @twa-dev/sdk
SDK cung cấp các API phong phú, ví dụ như lấy thông tin người dùng, gọi giao diện thanh toán, gửi tin nhắn, v.v. Sau khi cài đặt xong, mở VS Code và khởi động dự án:
npm start
Lúc này, bạn sẽ thấy dự án chạy trên http://localhost:3000, nhưng điều này vẫn chưa đủ – Telegram yêu cầu tất cả các ứng dụng nhỏ phải truy cập qua HTTPS.
Nhiều nhà phát triển gặp khó khăn ở bước này: làm thế nào để sử dụng HTTPS trong quá trình phát triển cục bộ? Có hai giải pháp:
Chỉnh sửa tập lệnh khởi động trong package.json:
"scripts": {
"start": "HTTPS=true react-scripts start"
}
Điều này sẽ tự động khởi chạy dự án với chứng chỉ tự ký trên https://localhost:3000.
Nếu bạn cần kiểm tra từ xa (ví dụ: trên điện thoại), bạn có thể sử dụng ngrok để ánh xạ dịch vụ cục bộ ra mạng công cộng:
ngrok http 3000
ngrok sẽ tạo ra một địa chỉ HTTPS trên mạng công cộng, bạn có thể sao chép và sử dụng nó trong Telegram.
Bây giờ, chúng ta cần thông báo cho Telegram biết lối vào ứng dụng nhỏ của Bot này ở đâu. Quay lại BotFather:
/mybots, chọn Bot bạn vừa tạo.Bot Settings → Menu Button.https://your-ngrok-url.io).Sau khi hoàn tất, hãy mở Bot của bạn, nhấp vào nút Menu ở dưới cùng, và ứng dụng nhỏ sẽ mở ra trong Telegram!
Xóa mã mặc định của React, giữ lại cấu trúc cốt lõi:
import { useEffect } from 'react';
import './App.css';
function App() {
useEffect(() => {
// Khởi tạo Telegram SDK
const tg = (window as any).Telegram.WebApp;
tg.ready();
console.log('Telegram WebApp đã tải');
}, []);
return (
<div className="App">
<h1>Hello Telegram!</h1>
</div>
);
}
export default App;
Sau khi lưu, làm mới Telegram, bạn sẽ thấy trang "Hello Telegram!" và nhật ký khởi tạo SDK thành công trong bảng điều khiển.
Để đảm bảo hiển thị nhất quán trên các thiết bị khác nhau, khuyến nghị sử dụng Normalize.css và thiết lập kiểu dáng toàn cục:
/* App.css */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background-color: var(--tg-theme-bg-color);
color: var(--tg-theme-text-color);
}
Telegram cung cấp một bộ biến chủ đề, sử dụng các biến này sẽ giúp ứng dụng của bạn tự động thích ứng với chế độ tối/sáng của người dùng.
Sau khi hoàn thành các bước trên, bạn đã có một khung ứng dụng nhỏ Telegram có thể chạy được. Tiếp theo, bạn có thể:
Nếu bạn cần trình duyệt chống liên kết trong các tình huống quản lý nhiều tài khoản, kiểm thử tự động, bạn có thể cân nhắc sử dụng MasLogin. Nó có thể giúp bạn mô phỏng các môi trường khác nhau trong giai đoạn phát triển và kiểm thử, tránh rủi ro về tài khoản.
Nếu bạn sử dụng phiên bản miễn phí của ngrok, địa chỉ sẽ thay đổi mỗi khi khởi động lại. Khuyến nghị:
Các API thường dùng bao gồm:
window.Telegram.WebApp.ready() - Khởi tạo.window.Telegram.WebApp.MainButton - Điều khiển nút chính.window.Telegram.WebApp.initData - Lấy thông tin người dùng.window.Telegram.WebApp.close() - Đóng ứng dụng nhỏ.Để biết thêm chi tiết, vui lòng tham khảo Telegram WebApp API.
Telegram cung cấp môi trường sandbox, bạn có thể sử dụng thông tin xác thực thanh toán thử nghiệm để gỡ lỗi. Chi tiết quy trình xem tại Tài liệu thanh toán chính thức.
Thông qua bài viết này, bạn đã nắm được quy trình phát triển cốt lõi của Ứng dụng nhỏ Telegram. Hãy nhớ: Hãy biến một phiên bản có thể chạy được thành hiện thực trước, sau đó dần dần lặp lại và tối ưu hóa. Hãy bắt tay vào thực hiện ngay bây giờ, xây dựng ứng dụng Telegram của riêng bạn!
Tổng quan