📚 Mục lục sách

Ở 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.

Mở Telegram Desktop và nhấn Start Messaging
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.

Mã QR đăng nhập Telegram Desktop
Mã QR đăng nhập Telegram Desktop

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.

Tìm và chọn tài khoản BotFather chính thức
Tìm và chọn tài khoản BotFather chính thức

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.

Nhập lệnh /newbot và đặt tên cho bot
Nhập lệnh /newbot và đặt tên cho 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.

Tạo username cho bot kết thúc bằng bot
Tạo username cho bot 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.

BotFather cung cấp Bot Token sau khi tạo bot thành công
BotFather cung cấp Bot Token sau khi tạo bot thành công

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.

Mở dịch vụ TELEGRAM_BOT trong EzyOA
Mở dịch vụ TELEGRAM_BOT trong EzyOA

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
Cấu hình dịch vụ Telegram Bot trên EzyOA
Cấu hình dịch vụ Telegram Bot trên EzyOA

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://&lt;domain&gt;/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&lt;BOT_TOKEN&gt;/setWebhook" `
  --header "Content-Type: application/json" `
  --data '{ "url": "https://&lt;domain&gt;/api/v1/oa/TELEGRAM_BOT/webhook", "secret_token": "&lt;WEBHOOK_SECRET_TOKEN&gt;", "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.

Chạy lệnh setWebhook trong PowerShell
Chạy lệnh setWebhook trong PowerShell

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>
Lỗi cURL khi chạy lệnh trong CMD với cú pháp không phù hợp
Lỗi cURL khi chạy lệnh trong CMD với cú pháp không phù hợp

Đâ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.

Chạy lệnh đúng cú pháp bằng Windows PowerShell với curl.exe
Chạy lệnh đúng cú pháp bằng Windows PowerShell với curl.exe

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>
Kết quả Telegram trả về sau khi đăng ký Webhook
Kết quả Telegram trả về sau khi đăng ký Webhook

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&lt;BOT_TOKEN&gt;/getWebhookInfo"</code>

Hoặc:

<code>Invoke-RestMethod `
  -Uri "https://api.telegram.org/bot&lt;BOT_TOKEN&gt;/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.

Gọi API getWebhookInfo để kiểm tra trạng thái webhook
Gọi API getWebhookInfo để kiểm tra trạng thái webhook

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.

Kết quả getWebhookInfo hiển thị URL webhook đã được ghi nhận
Kết quả getWebhookInfo hiển thị URL webhook đã được ghi nhận

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ý.

Chọn Chat bot và Chat Profile ezyvora tại Các kịch bản của dịch vụ TELEGRAM_BOT
Chọn Chat bot và Chat Profile ezyvora tại Các kịch bản của dịch vụ TELEGRAM_BOT

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ợ.

Chatbot Ezyvora phản hồi lời chào trên Telegram
Chatbot Ezyvora phản hồi lời chào trên Telegram

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 đó.

Chatbot Ezyvora tư vấn Gói Chuyên Nghiệp trên Telegram bằng dữ liệu đã cấu hình
Chatbot Ezyvora tư vấn Gói Chuyên Nghiệp trên Telegram bằng dữ liệu đã cấu hình

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.

Chương trước: Kết nối Facebook Messenger với chatbot Ezyvora thông qua EzyOA. ← Đọc Chương 10
Chương tiếp theo: Kết nối Zalo OA với chatbot Ezyvora thông qua EzyOA. Đọc Chương 12 →