Chương 11: Hướng dẫn tích hợp Telegram vào EzyOA để kết nối với Chatbot
Back To BlogsỞ các chương trước, chúng ta đã có Chatbot Ezyvora hoạt động trên website và có thể sử dụng Chat Profile trong EzyChat để xử lý câu hỏi của khách hàng.
Tuy nhiên, khách hàng không phải lúc nào cũng truy cập website để đặt câu hỏi. Với những doanh nghiệp sử dụng Telegram, đây cũng có thể trở thành một điểm chạm để khách hàng tìm hiểu sản phẩm, dịch vụ hoặc yêu cầu hỗ trợ.
Thay vì xây dựng thêm một chatbot riêng cho Telegram, trong chương này chúng ta sẽ tạo Telegram Bot, kết nối bot với EzyOA, sau đó sử dụng chính Chat Profile Ezyvora để xử lý tin nhắn.
1. Đăng nhập Telegram Desktop
Đầu tiên, mở Telegram Desktop và nhấn Start Messaging.
Nếu chưa đăng nhập, Telegram sẽ hiển thị mã QR. Trên điện thoại, mở Telegram và truy cập Settings → Devices → Add Device.
Sau đó quét mã QR trên máy tính để đăng nhập. Ngoài cách quét QR, bạn cũng có thể chọn Log in using phone number để đăng nhập bằng số điện thoại.
2. Tìm BotFather
Sau khi đăng nhập, sử dụng ô tìm kiếm của Telegram và nhập botfather. Trong danh sách kết quả, chọn tài khoản BotFather chính thức có username @BotFather.
Hãy chú ý chọn đúng BotFather có dấu xác minh để tránh nhầm với các bot có tên tương tự. BotFather là công cụ chính thức được Telegram sử dụng để tạo và quản lý Telegram Bot.
3. Tạo Telegram Bot mới
Mở cuộc trò chuyện với BotFather và nhập lệnh /newbot. BotFather sẽ yêu cầu đặt tên cho bot. Trong ví dụ này, chúng ta sử dụng ezyoa_ezyvora_bot.
Sau đó BotFather tiếp tục yêu cầu tạo username cho bot. Username phải là duy nhất và phải kết thúc bằng bot.
Nếu username hợp lệ, BotFather sẽ tạo bot và trả về thông báo: Done! Congratulations on your new bot.
4. Lấy Bot Token
Sau khi bot được tạo thành công, BotFather sẽ cung cấp một token tại phần Use this token to access the HTTP API. Đây chính là Bot Token mà EzyOA cần sử dụng để làm việc với Telegram Bot API.
Bot Token thường có cấu trúc tương tự:
<code>123456789:AAxxxxxxxxxxxxxxxxxxxxxxxxxxxx</code>
Hãy sao chép token này để sử dụng ở bước tiếp theo.
Quan trọng: Bot Token là thông tin bảo mật. Không nên công khai token trong bài viết hoặc ảnh chụp màn hình. Nếu token đã bị lộ, nên thu hồi và tạo token mới trong BotFather.
5. Mở dịch vụ Telegram trong EzyOA
Quay lại EzyPlatform và truy cập EzyOA → Các dịch vụ OA. Mở dịch vụ có mã TELEGRAM_BOT.
Tại đây chúng ta sẽ cấu hình Telegram Bot vừa tạo để EzyOA có thể nhận và gửi tin nhắn thông qua Telegram.
Ban đầu, một số trường của dịch vụ vẫn đang để trống.
6. Cấu hình Telegram Bot trên EzyOA
Tiếp theo, cập nhật các thông tin cần thiết cho dịch vụ Telegram:
- Tên: đặt tên để dễ nhận biết, ví dụ
TELEGRAM_EZYVORA_BOT. - Đường dẫn dịch vụ: nhập đường dẫn đến Telegram Bot
https://t.me/<bot_username>, thay<bot_username>bằng username đã tạo với BotFather. - Khóa bí mật: nhập Bot Token mà BotFather cung cấp.
- Khóa bí mật webhook: tạo một chuỗi bí mật để xác minh webhook, ví dụ
ezyvora_telegram_webhook_2567. Có thể sử dụng nút Ngẫu nhiên bên cạnh trường này để hệ thống tạo giá trị. - Trạng thái: chuyển sang Đã kích hoạt và nhấn Lưu.
Trong cấu hình này cần phân biệt hai giá trị:
| Giá trị | Sử dụng để làm gì? |
|---|---|
| Khóa bí mật | Bot Token do BotFather cung cấp, dùng để EzyOA làm việc với Telegram Bot API |
| Khóa bí mật webhook | Secret Token dùng để xác minh các request webhook từ Telegram |
7. Lấy Webhook URL của EzyOA
Sau khi lưu cấu hình, chúng ta cần đăng ký webhook để Telegram biết phải chuyển tin nhắn đến đâu. Trong ví dụ thực tế, Webhook URL có dạng:
<code>https://<domain>/api/v1/oa/TELEGRAM_BOT/webhook</code>
Đồng thời chúng ta cần hai giá trị đã cấu hình trước đó:
- Bot Token
- Webhook Secret Token
Ba thông tin này sẽ được sử dụng khi gọi API setWebhook.
8. Đăng ký Webhook với Telegram
Telegram không có màn hình riêng để nhập Webhook URL. Thay vào đó, webhook được đăng ký thông qua phương thức setWebhook của Telegram Bot API. Telegram cũng hỗ trợ secret_token để Telegram gửi một giá trị bí mật kèm theo các request webhook.
Mở Windows PowerShell hoặc Terminal. Nếu sử dụng PowerShell, có thể gọi trực tiếp curl.exe:
<code>curl.exe --request POST "https://api.telegram.org/bot<BOT_TOKEN>/setWebhook" `
--header "Content-Type: application/json" `
--data '{ "url": "https://<domain>/api/v1/oa/TELEGRAM_BOT/webhook", "secret_token": "<WEBHOOK_SECRET_TOKEN>", "allowed_updates": ["message", "my_chat_member"] }'</code>
Trong đó:
<BOT_TOKEN>— thay bằng Khóa bí mật/Bot Token lấy từ BotFather.https://<domain>/api/v1/oa/TELEGRAM_BOT/webhook— thay bằng Webhook URL của EzyOA.<WEBHOOK_SECRET_TOKEN>— thay bằng Khóa bí mật webhook đã cấu hình trên EzyOA.
allowed_updates xác định những loại update Telegram cần gửi tới webhook. Trong cấu hình này chúng ta đăng ký message và my_chat_member.
9. Lưu ý khi chạy cURL trên Windows
Nếu chạy lệnh bằng Command Prompt (CMD) nhưng sử dụng cú pháp xuống dòng dành cho môi trường khác, cURL có thể hiểu các phần JSON thành những URL riêng.
Khi đó có thể xuất hiện các lỗi như:
<code>curl: (3) URL rejected: Bad hostname</code>
hoặc:
<code>Port number was not a decimal number between 0 and 65535</code>
và:
<code>bad range specification</code>
Đây không nhất thiết là lỗi của Telegram hay EzyOA mà có thể do cách viết lệnh không phù hợp với terminal đang sử dụng.
Trong hướng dẫn này, chúng ta sử dụng Windows PowerShell, gọi curl.exe và dùng dấu backtick để nối các dòng.
10. Kiểm tra kết quả đăng ký Webhook
Sau khi chạy đúng lệnh trong PowerShell, Telegram sẽ trả về kết quả. Trong quá trình cấu hình có thể xuất hiện:
<code>{
"ok": true,
"result": true,
"description": "Webhook is already deleted"
}</code>
Thông báo này cho biết request đã được Telegram xử lý thành công, nhưng không nên chỉ dựa vào dòng description này để kết luận URL webhook hiện tại đã được thiết lập. Cách chắc chắn hơn là sử dụng getWebhookInfo ở bước tiếp theo để kiểm tra URL mà Telegram đang lưu.
11. Kiểm tra Webhook bằng getWebhookInfo
Sau khi đăng ký, gọi API getWebhookInfo để kiểm tra trạng thái webhook. Trong PowerShell có thể chạy:
<code>curl.exe "https://api.telegram.org/bot<BOT_TOKEN>/getWebhookInfo"</code>
Hoặc:
<code>Invoke-RestMethod ` -Uri "https://api.telegram.org/bot<BOT_TOKEN>/getWebhookInfo"</code>
Nếu dùng curl trực tiếp trong một số phiên bản Windows PowerShell, curl có thể được ánh xạ sang Invoke-WebRequest, vì vậy PowerShell có thể hiển thị cảnh báo trước khi xử lý nội dung. Có thể dùng curl.exe để gọi đúng chương trình cURL.
12. Xác nhận Webhook URL
Trong kết quả trả về, kiểm tra result.url. URL phải đúng với Webhook URL của EzyOA, ví dụ:
<code>https://fashion.ezyplatform.com/api/v1/oa/TELEGRAM_BOT/webhook</code>
Trong ảnh thử nghiệm, Telegram trả về ok: true, URL webhook đã được ghi nhận và pending_update_count: 0.
Điều này cho thấy Telegram hiện đã có địa chỉ webhook để chuyển các update mới đến EzyOA.
13. Chọn Chatbot xử lý tin nhắn Telegram
Đăng ký webhook mới chỉ giúp Telegram chuyển tin nhắn đến EzyOA. Chúng ta còn cần xác định EzyOA sẽ làm gì với tin nhắn sau khi nhận được.
Quay lại dịch vụ TELEGRAM_BOT trong EzyOA và kéo xuống phần Các kịch bản:
- Tại Phản hồi tin nhắn văn bản, chọn Chat bot.
- Tại Mã hồ sơ chat, chọn Chat Profile
ezyvora<1>.
Sau đó nhấn Lưu.
Cấu hình này có nghĩa là khi EzyOA nhận được tin nhắn văn bản từ Telegram, tin nhắn sẽ được chuyển đến Chat Profile Ezyvora trong EzyChat để chatbot xử lý.
14. Kiểm tra Chatbot trên Telegram
Sau khi hoàn tất cấu hình, quay lại Telegram và mở bot vừa tạo. Nhấn Start hoặc gửi /start.
Nếu Telegram Bot, Webhook, EzyOA và Chat Profile đã được cấu hình đúng, tin nhắn sẽ được chuyển tới Chatbot Ezyvora.
Trong thử nghiệm, chatbot đã phản hồi trực tiếp trên Telegram với lời chào và các nội dung hỗ trợ.
15. Kiểm tra khả năng tư vấn bằng dữ liệu của Chatbot
Cuối cùng, chúng ta có thể kiểm tra một câu hỏi thực tế thay vì chỉ gửi /start. Ví dụ:
Tôi muốn tìm hiểu gói chuyên nghiệp của ezyvora
Trong thử nghiệm, Chatbot Ezyvora có thể tra cứu thông tin, giới thiệu Gói Chuyên Nghiệp, cung cấp đường dẫn chi tiết và tiếp tục hỏi khách hàng có cần hỗ trợ thêm hay không.
Điểm quan trọng ở đây là chúng ta không tạo thêm logic tư vấn riêng cho Telegram.
Telegram chỉ đóng vai trò là một kênh giao tiếp mới. Tin nhắn vẫn được đưa về Chat Profile Ezyvora và sử dụng khả năng xử lý, dữ liệu cũng như các kỹ năng chatbot đã được cấu hình trước đó.
Kết luận
Như vậy, chúng ta đã hoàn tất việc tích hợp Telegram vào EzyOA và kết nối với Chatbot Ezyvora. Điểm đáng chú ý là chúng ta không phải xây dựng một chatbot mới cho Telegram. Chatbot Ezyvora đang sử dụng trên website có thể tiếp tục được sử dụng để xử lý các cuộc trò chuyện đến từ Telegram.
Nhờ EzyOA đóng vai trò kết nối các kênh giao tiếp với EzyChat, doanh nghiệp có thể mở rộng thêm các điểm chạm với khách hàng nhưng vẫn quản lý logic chatbot và dữ liệu tư vấn tập trung trên EzyPlatform.
Nguyễn Thị Thanh Tuyền - Chuyên viên Marketing