Hiện nay telegram bị chặn tại Việt Nam gây ảnh hưởng tới rất nhiều Bot Telegram không gửi thông báo tự động hóa từ Home Assistant về. Để khắc phục lỗi bot telegram không gửi tin nhắn về các bạn làm theo cách của mình dưới này nhé.

Yêu cầu
Mở tài khoản trên fly.io để có thể triển khai app kích hoạt gọi API telegram
Máy tính Debian / Ubuntu / Alpine để có thể deploy app cho fly.io
Chuẩn bị máy tính Debian / Ubuntu / Alpine
Các bạn truy cập vào SSH máy tính đang chạy hoặc vào terminal trực tiếp trên máy. Tạo file setup_flyio_env.sh
này để khởi tạo môi trường làm việc với fly.io.
Lưu ý: Chỉ nên chạy user bình thường ko nên chạy quyền root nhé
đầu tiên bạn tạo file setup_flyio_env.sh
bằng lệnh
nano setup_flyio_env.sh
dán đoạn mã bên dưới vào trình soạn thảo nano. Sau đó Ctrl+X -> bấm Y -> Enter. File của bạn đã được lưu.
#!/bin/bash
set -e
echo "Cập nhật và cài công cụ cơ bản..."
sudo apt update
sudo apt install -y curl git build-essential procps file
echo "Cài Homebrew cho Linux..."
NONINTERACTIVE=1 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Thêm brew vào môi trường shell
echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bashrc
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
echo "Cài Fly.io CLI (flyctl)..."
brew install flyctl
# Đảm bảo flyctl hoạt động trong shell hiện tại
if ! command -v flyctl >/dev/null 2>&1; then
echo "Đang nạp lại PATH cho flyctl..."
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
fi
echo "Đăng nhập Fly.io (sẽ mở trình duyệt)..."
flyctl auth login
echo "Hoàn tất. Bạn có thể chạy lệnh flyctl như: flyctl launch --name your-app-name --region sin --no-deploy"
Cấp quyền thực thi và chạy nó
chmod +x setup_flyio_env.sh
source ./setup_fly.sh

Nếu thành công bạn sẽ nhận được thông báo: Môi trường đã sẵn sàng. Giờ bạn có thể chạy.
Đăng nhập fly.io và tạo app
Lúc nãy sẽ hiện ra mục Đăng nhập vào fly.io yêu cầu copy link dạng này dán vào cửa sổ trình duyệt mới để tiến hành đăng nhập
https://fly.io/app/auth/cli/7a32676e6561747a697464776c6e37626464703765326535656e6c653
Bạn hãy mở liên kết đó ra tiến hành đăng nhập, sau khi đăng nhập xong quay trở lại màn hình terminal sẽ có thông báo thành công là được

Sau khi đăng nhập xong giờ tiến hành tạo app. Đầu tiên bạn sẽ phải tạo file app.py
bằng nano với lệnh sau nano app.py
hãy dán nội dung sau đây vào trong đó, nhớ thay API và CHAT ID của telegram phù hợp nhé.
from flask import Flask, request, jsonify
import requests
import os
app = Flask(__name__)
BOT_TOKEN = os.getenv("BOT_TOKEN", "")
CHAT_ID = os.getenv("CHAT_ID", "-")
@app.route("/", methods=["POST"])
def notify():
try:
data = request.get_json(force=True)
message = data.get("message", "No message provided")
url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
payload = {
"chat_id": CHAT_ID,
"text": message,
"parse_mode": "Markdown"
}
res = requests.post(url, json=payload)
return jsonify({
"status_code": res.status_code,
"telegram_response": res.text
}), res.status_code
except Exception as e:
return jsonify({"error": str(e)}), 500
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8080)
Sau đó Ctrl+X -> bấm Y -> Enter để lưu lại và tạo file tiếp theo có tên Dockerfile
cũng bằng lệnh nano Dockerfile
chứa mã dưới này xong lưu lại
FROM python:3.10-slim
WORKDIR /app
COPY app.py .
RUN pip install flask requests
CMD ["python", "app.py"]
Tạo app tren Fly
gõ câu lệnh sau đây để tạo app trên Fly nhưng chưa deploy nó
flyctl launch --name teleproxy-btn-sgp --region sin --no-deploy
Nó hỏi gì cũng gõ Y hết để nó trả về link cấu hình app

Tương tự ở đây mình cũng copy cái link đó mở ra trình duyệt để cấu hình app. Có một thông số bạn cần quan tâm đó là vùng Region nên chọn sin cho tốc độ phản hồi tốt nhất. Sau đó bấm Comfirm setting để hoàn tất và quay lại cửa sổ Terminal

Nó chạy xong dòng lệnh sẽ tạo ra 1 file có tên là fly.toml
. Bạn cần phải sửa 1 chút ở trong file này tránh app nó tự động ngủ. Dùng câu lệnh nano fly.toml
mở file ra tìm dòng
auto_stop_machines = "stop"
# Sửa dòng này thành
auto_stop_machines = true
Lưu lại file. Giờ chúng ta sẽ đẩy nó lên server bằng lệnh
flyctl deploy
Đợi 1 tí nếu deploy thành công nó sẽ trả về cho bạn liên kết của máy chủ có dạng https://teleproxy-btn-sing.fly.dev/
có nghĩa là đã triển khai thành công. Các bạn có thể kiểm tra trên trang quản lý của fly.io nếu hiển thị bấm vào bạn thấy lưu lượng ram đang dùng … là ok.

Dưới đây là câu lệnh để thử xem chức năng của app có hoạt động hay chưa. Các bạn dán vào chạy nếu telegram của bạn nhận được thông báo Chúc mừng bạn đã thành công là mọi thứ trên app đều ổn. Chuyển tiếp sang bước cấu hình trên HA
curl -X POST https://telegram-proxy-sing.fly.dev/send -H "Content-Type: application/json" -d '{"message": "Chúc mừng bạn đã thành công"}'<br>
Cấu hình trên Home assistant
Truy cập vào file configuration.yaml
để thêm đoạn mã sau đây
rest_command:
send_telegram_fly:
url: "https://teleproxy-btn-sing.fly.dev/"
method: POST
headers:
Content-Type: application/json
payload: '{"message": "{{ message }}"}'
Lưu file lại và khởi động lại máy chủ HA. Lưu ý đường link trong code phải khớp với đường link lúc nãy deploy app trả về nha fen.
Tự động hóa gửi thông báo telegram trên Home assistant
Bạn cứ tạo một tự động hóa như bạn muốn. Hành động cuối cùng là gửi tin nhắn bạn hãy tìm hành động có tên rest_command.send_telegram_fly
. Nội dung tin nhắn là soạn thảo bằng mã. Dưới đây là 1 ví dụ bạn tham khảo rồi tự sửa cho phù hợp với cá nhân
alias: Gửi báo cáo cuối tháng qua Telegram
triggers:
- at: "23:45:00"
trigger: time
conditions: []
actions:
- data:
message: >-
{{ states('sensor.hien_thang') }}: Sản lượng
{{states('sensor.tong_tieu_thang_ct2') }} kWh, Điện mua {{
states('sensor.dien_mua_evn_th') | float | round(2) }} kWh, số tiền là
{{ states('sensor.tien_evn_doc') }}, tổng tiền dùng {{
states('sensor.tien_khong_solar_doc') }}
action: rest_command.send_telegram_fly
mode: single
Chúc các bạn thành công.
đã làm theo và thành công