Skip to content

Gửi ảnh

Trang này mô tả hàm sendPhoto() trong zalo-bot-js, dùng để gửi một ảnh kèm caption đến người dùng hoặc cuộc trò chuyện.

Nếu bạn cần gửi ảnh minh họa, ảnh sản phẩm hoặc ảnh phản hồi từ bot, đây là hàm phù hợp thay cho sendMessage().

Chữ ký hàm

ts
sendPhoto(
  chatId: string,
  caption: string,
  photo: string,
  options?: { reply_to_message_id?: string },
): Promise<Message>

Khi nào nên dùng

  • gửi ảnh minh họa
  • gửi ảnh sản phẩm, hóa đơn hoặc tài liệu hình ảnh
  • phản hồi có ảnh từ bot

Tham số

Tham sốKiểu dữ liệuBắt buộcMô tả
chatIdstringID người nhận hoặc cuộc trò chuyện
captionstringChú thích đi kèm ảnh
photostringURL hoặc giá trị ảnh mà Bot API chấp nhận
options.reply_to_message_idstringKhôngID message cần reply

Giá trị trả về

Hàm trả về Promise<Message>.

Khi thành công, SDK parse phản hồi thành Message để bạn đọc tiếp các thuộc tính như messageId, chat, photoUrl, raw.

Ví dụ tối thiểu

ts
import "dotenv/config";
import { Bot } from "zalo-bot-js";

const bot = new Bot({ token: process.env.ZALO_BOT_TOKEN! });

async function main() {
  await bot.sendPhoto(
    process.env.ZALO_CHAT_ID!,
    "Ảnh minh họa",
    "https://example.com/image.jpg",
  );
}

void main();

Ví dụ dùng trong event

ts
bot.onText(/\/photo/, async (message) => {
  await bot.sendPhoto(
    message.chat.id,
    "Đây là ảnh mẫu",
    "https://example.com/image.jpg",
    {
      reply_to_message_id: message.messageId,
    },
  );
});

Dùng qua Message.replyPhoto()

Nếu đang xử lý một Message, bạn có thể gọi:

ts
bot.on("text", async (message) => {
  await message.replyPhoto("https://example.com/image.jpg", "Xin mời xem ảnh");
});

Lưu ý thực tế

  • thư viện hiện hỗ trợ gửi từng ảnh một
  • nếu muốn gửi nhiều ảnh, ứng dụng nên lặp sendPhoto() nhiều lần
  • caption được truyền riêng với ảnh hiện tại

Kế tiếp

Cập nhật lần cuối: 05/04/2026

Built for Vietnamese developers, documented for everyone.