<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://hatang.dev/vi/docs/changelog</id>
    <title>Ha Tang developer changelog</title>
    <updated>2026-11-03T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://hatang.dev/vi/docs/changelog"/>
    <subtitle>Ha Tang Developers Blog</subtitle>
    <icon>https://hatang.dev/vi/docs/img/favicon.svg</icon>
    <rights>© 2026 Ha Tang</rights>
    <entry>
        <title type="html"><![CDATA[Hạ Tầng cho AI coding agent]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/11/03/ai-coding-agents</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/11/03/ai-coding-agents"/>
        <updated>2026-11-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Claude Code, Cursor, Copilot và các coding agent khác giờ đọc được tài liệu này dạng Markdown và làm việc trực tiếp với Hạ Tầng: một MCP server, bộ quy tắc dựng sẵn cho dự án, và năm công thức theo tác vụ.]]></summary>
        <content type="html"><![CDATA[<p>Claude Code, Cursor, Copilot và các coding agent khác giờ đọc được tài liệu này dạng Markdown và làm việc trực tiếp với Hạ Tầng: một MCP server, bộ quy tắc dựng sẵn cho dự án, và năm công thức theo tác vụ.</p>
<ul>
<li class=""><strong>MCP server <code>@hatang/mcp</code> 0.1.0.</strong> <code>npx -y @hatang/mcp</code> cho agent <code>search_docs</code> và <code>read_doc</code> (không cần key), và khi có API key thì thêm các tool gửi email, kiểm tra tên miền, tạo và giả lập thanh toán VietQR, đọc hoá đơn điện tử, xử lý hộp thư và thêm kiến thức cho trợ lý AI. <code>--read-only</code> giới hạn ở việc tra cứu. Xem <a class="" href="https://hatang.dev/vi/docs/guides/sdks/mcp">MCP server</a>.</li>
<li class=""><strong>Tài liệu cho máy đọc.</strong> <a href="https://hatang.dev/vi/docs/llms.txt" target="_blank" rel="noopener noreferrer" class=""><code>/vi/docs/llms.txt</code></a> liệt kê mọi trang, <a href="https://hatang.dev/vi/docs/llms-full.txt" target="_blank" rel="noopener noreferrer" class=""><code>/vi/docs/llms-full.txt</code></a> chứa toàn bộ tài liệu, mỗi trang có bản Markdown ở chính địa chỉ của trang thêm <code>.md</code>, và đặc tả OpenAPI ở <a href="https://hatang.dev/docs/openapi.json" target="_blank" rel="noopener noreferrer" class=""><code>/docs/openapi.json</code></a>. Bản tiếng Anh ở <code>/docs</code>.</li>
<li class=""><strong>Quy tắc cho dự án.</strong> Một mục <code>AGENTS.md</code>, một Cursor rule và một Claude Code skill cho agent biết dùng SDK nào, key để ở đâu, cách xác minh thanh toán và webhook. Xem <a class="" href="https://hatang.dev/vi/docs/guides/getting-started/ai-agents">Dùng Hạ Tầng với AI coding agent</a>.</li>
<li class=""><strong>Công thức.</strong> <a class="" href="https://hatang.dev/vi/docs/guides/recipes/send-email-nodejs">Email từ Node.js</a>, <a class="" href="https://hatang.dev/vi/docs/guides/recipes/vietqr-payments">Thanh toán VietQR</a>, <a class="" href="https://hatang.dev/vi/docs/guides/recipes/zalo-zns">Zalo ZNS từ code</a>, <a class="" href="https://hatang.dev/vi/docs/guides/recipes/live-chat-nextjs">Chat trên website</a> và <a class="" href="https://hatang.dev/vi/docs/guides/recipes/einvoice-api">Hoá đơn điện tử qua API</a>.</li>
</ul>]]></content>
        <category label="docs" term="docs"/>
        <category label="sdk" term="sdk"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Trang SDK trên npm, pub.dev, PyPI, Maven Central và wordpress.org]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/11/03/sdk-listings</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/11/03/sdk-listings"/>
        <updated>2026-11-03T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Mọi SDK của Hạ Tầng có một bản vá mới, với trang trên registry giới thiệu SDK làm gì và dẫn về hướng dẫn tương ứng ở đây. Không đổi code.]]></summary>
        <content type="html"><![CDATA[<p>Mọi SDK của Hạ Tầng có một bản vá mới, với trang trên registry giới thiệu SDK làm gì và dẫn về hướng dẫn tương ứng ở đây. Không đổi code.</p>
<table><thead><tr><th>SDK</th><th>Phiên bản</th><th>Registry</th></tr></thead><tbody><tr><td>Node.js</td><td><code>@hatang/sdk</code> 0.6.1</td><td><a href="https://www.npmjs.com/package/@hatang/sdk" target="_blank" rel="noopener noreferrer" class="">npm</a></td></tr><tr><td>React và Next.js</td><td><code>@hatang/chat-react</code> 0.1.1</td><td><a href="https://www.npmjs.com/package/@hatang/chat-react" target="_blank" rel="noopener noreferrer" class="">npm</a></td></tr><tr><td>React Native</td><td><code>@hatang/chat-react-native</code> 0.4.1</td><td><a href="https://www.npmjs.com/package/@hatang/chat-react-native" target="_blank" rel="noopener noreferrer" class="">npm</a></td></tr><tr><td>Flutter</td><td><code>hatang_chat</code> 0.6.1</td><td><a href="https://pub.dev/packages/hatang_chat" target="_blank" rel="noopener noreferrer" class="">pub.dev</a></td></tr><tr><td>iOS</td><td><code>HatangChat</code> 0.4.1</td><td><a href="https://github.com/sota-labs/hatang-chat-ios" target="_blank" rel="noopener noreferrer" class="">GitHub</a>, đã gửi lên Swift Package Index</td></tr><tr><td>Android</td><td><code>dev.hatang:chat</code> 0.4.1</td><td><a href="https://central.sonatype.com/artifact/dev.hatang/chat" target="_blank" rel="noopener noreferrer" class="">Maven Central</a></td></tr><tr><td>Python</td><td><code>hatang</code> 0.1.1</td><td><a href="https://pypi.org/project/hatang/" target="_blank" rel="noopener noreferrer" class="">PyPI</a></td></tr><tr><td>WordPress</td><td><code>hatang-chat</code> 0.2.3</td><td><a href="https://wordpress.org/plugins/hatang-chat/" target="_blank" rel="noopener noreferrer" class="">wordpress.org</a></td></tr></tbody></table>
<ul>
<li class="">README của mỗi SDK có phần About Ha Tang cùng link tới hướng dẫn, tài liệu API, changelog này và trang hỗ trợ.</li>
<li class="">SDK iOS và Android có file LICENSE (MIT).</li>
<li class="">Gói Python không còn link tới trang mã nguồn và changelog không công khai.</li>
</ul>
<p>Không bắt buộc nâng cấp. Xem <a class="" href="https://hatang.dev/vi/docs/guides/sdks/overview">tất cả SDK và các phiên bản được hỗ trợ</a>.</p>]]></content>
        <category label="sdk" term="sdk"/>
        <category label="flutter" term="flutter"/>
        <category label="ios" term="ios"/>
        <category label="android" term="android"/>
        <category label="react-native" term="react-native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Nhóm email]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/11/02/email-groups</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/11/02/email-groups"/>
        <updated>2026-11-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Nhóm email biến một địa chỉ trên tên miền đang nhận thư, ví dụ team@congty.vn, thành địa chỉ chung: mọi thư gửi tới được chuyển cho từng thành viên, giống nhóm của Google Workspace. Tạo nhóm tại Email → Nhóm email.]]></summary>
        <content type="html"><![CDATA[<p>Nhóm email biến một địa chỉ trên tên miền đang nhận thư, ví dụ <code>team@congty.vn</code>, thành địa chỉ chung: mọi thư gửi tới được chuyển cho từng thành viên, giống nhóm của Google Workspace. Tạo nhóm tại <strong>Email → Nhóm email</strong>.</p>
<ul>
<li class="">Mỗi thành viên nhận một bản riêng từ địa chỉ nhóm, người gửi hiện là <strong>"Tên người gửi via Tên nhóm"</strong>, bấm Trả lời là trả lời thẳng cho người gửi gốc.</li>
<li class="">Không chuyển: thư rác, thư tự động, thư đã đi qua một nhóm, và quá 30 thư mỗi giờ từ cùng một người gửi. Thư gốc luôn nằm ở Nhận về.</li>
<li class="">Mỗi bản chuyển tính vào hạn mức gửi trong ngày và hiện trong mục Email với nguồn <code>forward</code>.</li>
</ul>
<p><strong>Với người dùng API:</strong></p>
<ul>
<li class="">Endpoint mới <code>POST/GET /email-groups</code> và <code>GET/PATCH/DELETE /email-groups/{id}</code> (<code>email:write</code> để sửa, <code>email:read</code> để xem). <code>@hatang/sdk</code> có thêm <code>hatang.emailGroups</code>.</li>
<li class="">Trường <code>source</code> của email có thêm giá trị <code>forward</code>. Nếu code của bạn rẽ nhánh theo trường này, hãy thêm nhánh mặc định.</li>
</ul>
<p>Xem <a class="" href="https://hatang.dev/vi/docs/guides/email/groups">hướng dẫn Nhóm email</a>.</p>]]></content>
        <category label="email" term="email"/>
        <category label="api" term="api"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Email hỗ trợ không cần chuyển tiếp]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/11/02/support-email-receiving</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/11/02/support-email-receiving"/>
        <updated>2026-11-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Kênh email hỗ trợ có địa chỉ nằm trên tên miền đã nhận email tại Hạ Tầng (Email → Tên miền → Nhận email) giờ không cần cài thêm gì: email tới địa chỉ đó vào thẳng Hộp thư, không cần chuyển tiếp hay tên miền phụ MX riêng.]]></summary>
        <content type="html"><![CDATA[<p>Kênh email hỗ trợ có địa chỉ nằm trên tên miền đã nhận email tại Hạ Tầng (<strong>Email → Tên miền → Nhận email</strong>) giờ không cần cài thêm gì: email tới địa chỉ đó vào thẳng Hộp thư, không cần chuyển tiếp hay tên miền phụ MX riêng.</p>
<ul>
<li class="">Trang hộp thư báo điều này và kênh chuyển sang <strong>Hoạt động</strong> ngay. Địa chỉ dạng <code>cskh+billing@</code> cũng nhận được; phần sau <code>+</code> thành thẻ.</li>
<li class="">Chỉ đúng địa chỉ hỗ trợ chuyển sang Hộp thư. Các địa chỉ khác trên tên miền, kể cả nhóm email, vẫn nằm ở <strong>Email → Đã nhận</strong> và vẫn kích hoạt <code>email.received</code>.</li>
<li class="">Kết nối lại một địa chỉ hỗ trợ đã ngắt kết nối giờ sẽ dùng lại kênh cũ, giữ nguyên hội thoại, thay vì báo địa chỉ đã được kết nối.</li>
</ul>
<p>Xem <a href="https://hatang.dev/vi/help/channels/email-channel" target="_blank" rel="noopener noreferrer" class="">Kết nối địa chỉ email hỗ trợ</a>.</p>]]></content>
        <category label="email" term="email"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[API Email kiểm tra scope của API key]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/24/email-scopes</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/24/email-scopes"/>
        <updated>2026-10-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[API Email nay kiểm tra scope của key, đúng như dashboard vẫn mô tả:]]></summary>
        <content type="html"><![CDATA[<p>API Email nay kiểm tra scope của key, đúng như dashboard vẫn mô tả:</p>
<ul>
<li class=""><strong>Gửi email</strong> (<code>POST /emails</code>, <code>POST /emails/batch</code>, SMTP relay) và đổi lịch gửi (<code>PATCH /emails/{id}</code>, <code>POST /emails/{id}/cancel</code>) cần <code>email:send</code>.</li>
<li class=""><strong>Đọc email</strong> (<code>GET /emails</code>, <code>GET /emails/{id}</code>, <code>GET /emails/{id}/events</code>) cần <code>email:read</code>; <code>email:send</code> và <code>email:write</code> đã bao gồm quyền này.</li>
</ul>
<p>Trước đây mọi key hợp lệ đều gọi được các endpoint này. Key thiếu scope giờ nhận <code>401 restricted_api_key</code> (qua SMTP là <code>550 5.7.1</code>). Key toàn quyền (<code>*</code>), <code>email:*</code> hoặc <code>email:send</code> không bị ảnh hưởng. Nếu key đang dùng để gửi email chỉ có các scope khác, như <code>email:write</code> hay <code>chat:*</code>, hãy thêm <code>email:send</code> cho key ở mục <strong>API Keys</strong> trong dashboard.</p>]]></content>
        <category label="api" term="api"/>
        <category label="email" term="email"/>
        <category label="breaking" term="breaking"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Trung tâm trợ giúp tại hatang.dev/vi/help]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/24/help-center</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/24/help-center"/>
        <updated>2026-10-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Hướng dẫn từng bước cho những người dùng dashboard hằng ngày giờ nằm ở trung tâm trợ giúp mới, bằng tiếng Việt và tiếng Anh, kèm ảnh chụp từng màn hình: hộp thư, từng kênh, widget chat, trợ lý AI, tự động hoá, khách hàng, báo cáo, email và thanh toán.]]></summary>
        <content type="html"><![CDATA[<p>Hướng dẫn từng bước cho những người dùng dashboard hằng ngày giờ nằm ở <a href="https://hatang.dev/vi/help" target="_blank" rel="noopener noreferrer" class="">trung tâm trợ giúp</a> mới, bằng tiếng Việt và tiếng Anh, kèm ảnh chụp từng màn hình: hộp thư, từng kênh, widget chat, trợ lý AI, tự động hoá, khách hàng, báo cáo, email và thanh toán.</p>
<p>Tài liệu cho lập trình viên giữ những gì bạn cần để tích hợp Hạ Tầng: hướng dẫn API và SDK, tài liệu tham chiếu, webhook và giao thức realtime. Các bài chỉ gồm thao tác trên dashboard đã chuyển sang trung tâm trợ giúp, và địa chỉ cũ tự chuyển hướng sang đó:</p>
<ul>
<li class="">toàn bộ hướng dẫn kênh (Zalo OA, Zalo cá nhân, TikTok, TikTok Shop, Messenger và Instagram, WhatsApp, Telegram, LINE, X, email), nay ở mục <a href="https://hatang.dev/vi/help/channels" target="_blank" rel="noopener noreferrer" class="">Kênh</a>;</li>
<li class=""><strong>Nhân viên và phân quyền</strong>, nay là <a href="https://hatang.dev/vi/help/account/employees-and-roles" target="_blank" rel="noopener noreferrer" class="">Nhân viên và vai trò</a>;</li>
<li class=""><strong>Doanh nghiệp và module</strong>, nay là <a href="https://hatang.dev/vi/help/getting-started/modules" target="_blank" rel="noopener noreferrer" class="">Bật và tắt module</a>.</li>
</ul>
<p>Trang <a class="" href="https://hatang.dev/vi/docs/guides/support/overview">Tổng quan Hỗ trợ khách hàng</a> vẫn liệt kê mọi kênh kèm giá trị <code>channel</code> dùng trong API.</p>]]></content>
        <category label="docs" term="docs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[@hatang/sdk 0.4.0: mặc định gọi production, template, liên hệ dùng chung, automation]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/24/node-sdk-0-4-0</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/24/node-sdk-0-4-0"/>
        <updated>2026-10-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[@hatang/sdk 0.4.0 mặc định gọi https//localhost:3001; khi phát triển local giờ hãy truyền baseUrl (hoặc đặt HATANGBASEURL).]]></summary>
        <content type="html"><![CDATA[<p><code>@hatang/sdk</code> 0.4.0 mặc định gọi <code>https://api.hatang.dev</code>. Trước đây, client tạo mà không có <code>baseUrl</code> hay <code>HATANG_BASE_URL</code> sẽ gọi <code>http://localhost:3001</code>; khi phát triển local giờ hãy truyền <code>baseUrl</code> (hoặc đặt <code>HATANG_BASE_URL</code>).</p>
<p>Lệnh mới:</p>
<ul>
<li class=""><strong>Template:</strong> <code>templates.create/get/list/update/remove/publish/duplicate</code>, và <code>emails.send({ to, template: { id, variables } })</code>.</li>
<li class=""><strong>Liên hệ dùng chung:</strong> <code>contacts.*</code> không cần <code>audience_id</code>, gọi theo id hoặc email, kèm <code>properties</code>, <code>segments</code> và <code>topics</code>; thêm namespace <code>segments</code>, <code>topics</code> và <code>contactProperties</code>. Truyền <code>audience_id</code> vẫn dùng các route audience cũ.</li>
<li class=""><strong>Automation:</strong> <code>events.*</code>, <code>automations.*</code> và <code>automations.runs.*</code>.</li>
<li class=""><strong>Số liệu:</strong> <code>emails.metrics()</code>, <code>logs.list/get</code> và <code>usage.get</code>.</li>
</ul>
<p>Namespace <code>blog</code> đã bị bỏ. Xem <a class="" href="https://hatang.dev/vi/docs/guides/sdks/node">hướng dẫn Node.js</a>.</p>]]></content>
        <category label="node" term="node"/>
        <category label="email" term="email"/>
        <category label="breaking" term="breaking"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Kênh WhatsApp, Telegram, X và LINE]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/24/whatsapp-telegram-x-line</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/24/whatsapp-telegram-x-line"/>
        <updated>2026-10-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Hộp thư có thêm bốn kênh mới, bên cạnh widget website, Zalo, Messenger, Instagram, TikTok và email. Trợ lý AI, flow, quy tắc phân chia và báo cáo hoạt động trên các kênh này giống mọi kênh khác. Kết nối tại Hỗ trợ khách hàng → Kênh → Thêm kênh.]]></summary>
        <content type="html"><![CDATA[<p>Hộp thư có thêm bốn kênh mới, bên cạnh widget website, Zalo, Messenger, Instagram, TikTok và email. Trợ lý AI, flow, quy tắc phân chia và báo cáo hoạt động trên các kênh này giống mọi kênh khác. Kết nối tại <strong>Hỗ trợ khách hàng → Kênh → Thêm kênh</strong>.</p>
<ul>
<li class=""><strong><a href="https://hatang.dev/vi/help/channels/whatsapp" target="_blank" rel="noopener noreferrer" class="">WhatsApp</a>:</strong> kết nối số WhatsApp Business qua Embedded Signup. Số vẫn dùng được trong ứng dụng WhatsApp Business (coexistence), và tin nhắn gửi từ điện thoại cũng hiện trong hội thoại. Sau cửa sổ 24 giờ, nhân viên trả lời bằng mẫu tin đã được duyệt.</li>
<li class=""><strong><a href="https://hatang.dev/vi/help/channels/telegram" target="_blank" rel="noopener noreferrer" class="">Telegram</a>:</strong> kết nối bot Telegram của bạn. Nếu có Telegram Premium, bạn có thể liên kết bot qua Telegram Business để tin nhắn gửi tới tài khoản riêng của bạn cũng về Hộp thư. Kênh này chỉ dùng Bot API.</li>
<li class=""><strong><a href="https://hatang.dev/vi/help/channels/x" target="_blank" rel="noopener noreferrer" class="">X</a>:</strong> nhận tin nhắn trực tiếp (DM) và tự động trả lời khi có người @nhắc tới tài khoản hoặc trả lời bài đăng. Mỗi doanh nghiệp kết nối qua ứng dụng X developer của riêng mình, vì X tính phí API theo từng lượt gọi.</li>
<li class=""><strong><a href="https://hatang.dev/vi/help/channels/line" target="_blank" rel="noopener noreferrer" class="">LINE</a>:</strong> kết nối LINE Official Account qua Messaging API, chỉ nhận hội thoại một-một.</li>
</ul>
<p><strong>Với người dùng API và webhook:</strong></p>
<ul>
<li class="">Trường <code>channel</code> của hội thoại, khách hàng và payload webhook có thêm bốn giá trị: <code>whatsapp</code>, <code>telegram</code>, <code>x</code> và <code>line</code>. Bộ lọc <code>channel</code> của <code>GET /chat/customers</code> nhận cùng các giá trị này. Nếu code của bạn rẽ nhánh theo <code>channel</code>, hãy thêm nhánh mặc định vì sẽ còn kênh mới.</li>
<li class="">Từ <code>@hatang/sdk</code> 0.4.0 trở đi, kiểu <code>ChatChannel</code> đã có các giá trị mới.</li>
<li class="">Tin trả lời bằng mẫu WhatsApp là một tin của nhân viên, có <code>metadata.whatsapp_template</code> dạng <code>{ name, language, params }</code>.</li>
</ul>]]></content>
        <category label="support" term="support"/>
        <category label="channels" term="channels"/>
        <category label="api" term="api"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Tài liệu cho lập trình viên chuyển về hatang.dev/docs]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/23/developer-hub</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/23/developer-hub"/>
        <updated>2026-10-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Tài liệu nay ở hatang.dev/docs (tiếng Anh) và hatang.dev/vi/docs (tiếng Việt), chia hai phần: Hướng dẫn tích hợp từng bước và Tham chiếu sinh từ mã nguồn. Liên kết cũ docs.hatang.dev tự chuyển tới trang tương ứng.]]></summary>
        <content type="html"><![CDATA[<p>Tài liệu nay ở <a href="https://hatang.dev/docs" target="_blank" rel="noopener noreferrer" class="">hatang.dev/docs</a> (tiếng Anh) và <a href="https://hatang.dev/vi/docs" target="_blank" rel="noopener noreferrer" class="">hatang.dev/vi/docs</a> (tiếng Việt), chia hai phần: <strong>Hướng dẫn</strong> tích hợp từng bước và <strong>Tham chiếu</strong> sinh từ mã nguồn. Liên kết cũ <code>docs.hatang.dev</code> tự chuyển tới trang tương ứng.</p>
<ul>
<li class="">Hướng dẫn mới: xác thực, giới hạn tốc độ, xử lý lỗi, phân trang, idempotency, gửi email, tên miền, SMTP relay, broadcast, khả năng vào hộp thư, từng kênh hỗ trợ và nhiều trang khác.</li>
<li class="">Tài liệu REST API nằm ngay trong trang, mỗi endpoint một trang, code mẫu bảy ngôn ngữ và bảng "Try it" để gọi thử.</li>
<li class="">Mỗi sự kiện webhook có trang riêng kèm schema payload.</li>
</ul>]]></content>
        <category label="docs" term="docs"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[API: payload webhook trong bản đặc tả OpenAPI]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/23/openapi-webhooks</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/23/openapi-webhooks"/>
        <updated>2026-10-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[https//chat.hatang.dev/openapi.json, với operationId cố định.]]></summary>
        <content type="html"><![CDATA[<p><code>https://api.hatang.dev/openapi.json</code> nay mô tả mọi sự kiện webhook công khai trong phần <code>webhooks</code> của OpenAPI 3.1, kèm payload của từng sự kiện, thay cho danh sách tên như trước. Bản đặc tả của chat gateway có ở <code>https://chat.hatang.dev/openapi.json</code>, với <code>operationId</code> cố định.</p>
<ul>
<li class="">Các endpoint được xếp theo từng tài nguyên (Conversations, Customers, Orders, Tickets…), và mỗi tag thuộc một nhóm.</li>
<li class="">Phản hồi <code>429</code> ghi đúng giới hạn của từng API: 10 yêu cầu/giây cho Email, 50 cho Hỗ trợ và 20 cho Thanh toán.</li>
<li class="">API trả lời preflight CORS từ <code>https://hatang.dev</code>, để bảng "Try it" trong tài liệu gọi được API bằng key của bạn.</li>
</ul>]]></content>
        <category label="api" term="api"/>
        <category label="webhooks" term="webhooks"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Plugin WordPress 0.2.1]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/23/wordpress-0-2-1</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/23/wordpress-0-2-1"/>
        <updated>2026-10-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Hạ Tầng Chat 0.2.1 cập nhật trang cài đặt và readme: Site ID nằm ở Hỗ trợ khách hàng → Kênh → website của bạn trong dashboard, và readme liệt kê đủ các kênh dùng chung hộp thư. Không thay đổi cách hoạt động.]]></summary>
        <content type="html"><![CDATA[<p><a href="https://wordpress.org/plugins/hatang-chat/" target="_blank" rel="noopener noreferrer" class="">Hạ Tầng Chat 0.2.1</a> cập nhật trang cài đặt và readme: Site ID nằm ở <strong>Hỗ trợ khách hàng → Kênh → website của bạn</strong> trong dashboard, và readme liệt kê đủ các kênh dùng chung hộp thư. Không thay đổi cách hoạt động.</p>]]></content>
        <category label="wordpress" term="wordpress"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[SDK di động theo cài đặt widget]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/14/mobile-sdks-widget-settings</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/14/mobile-sdks-widget-settings"/>
        <updated>2026-10-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[iOS 0.3.0, Android 0.3.0, Flutter 0.5.0 và React Native 0.3.0 hiển thị thêm các cài đặt widget của website mà không cần sửa code:]]></summary>
        <content type="html"><![CDATA[<p>iOS 0.3.0, Android 0.3.0, Flutter 0.5.0 và React Native 0.3.0 hiển thị thêm các cài đặt widget của website mà không cần sửa code:</p>
<ul>
<li class=""><strong>Đầu khung chat:</strong> dòng phụ dưới tên site, và logo doanh nghiệp (hoặc chữ cái đầu tên site) thay cho ảnh nhân viên khi hồ sơ đặt là doanh nghiệp.</li>
<li class=""><strong>Lời chào:</strong> ẩn khi tắt hoặc tắt trên điện thoại; ký tên nhân viên đầu tiên đang trực tuyến khi người gửi là "nhân viên trực tuyến".</li>
<li class=""><strong>Nút liên hệ:</strong> Zalo, Messenger, gọi điện và email dưới đầu khung chat.</li>
</ul>
<p>Chuỗi mới cho nút liên hệ (<code>callUs</code>/<code>call</code> và <code>emailUs</code>) cần truyền vào nếu bạn tự tạo đối tượng chuỗi. Gateway cũ không gửi các cài đặt này nên màn hình giữ như trước. React Native 0.3.1 sửa metadata repository của gói.</p>]]></content>
        <category label="ios" term="ios"/>
        <category label="android" term="android"/>
        <category label="flutter" term="flutter"/>
        <category label="react-native" term="react-native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[@hatang/sdk 0.3.0: nhận email]]></title>
        <id>https://hatang.dev/vi/docs/changelog/2026/10/14/node-sdk-0-3-0</id>
        <link href="https://hatang.dev/vi/docs/changelog/2026/10/14/node-sdk-0-3-0"/>
        <updated>2026-10-14T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[@hatang/sdk 0.3.0 đọc được email nhận về { receiving: "enabled" } }) bật nhận email. Câu trả lời mẫu có thêm subject và isprivate, link thanh toán có thêm qrpayload cho ứng dụng tự vẽ mã VietQR.]]></summary>
        <content type="html"><![CDATA[<p><code>@hatang/sdk</code> 0.3.0 đọc được email nhận về: <code>emails.receiving.list()</code>, <code>.get(id)</code> và tệp đính kèm với link tải có chữ ký (hiệu lực một giờ). Tên miền có thêm <code>capabilities</code>, nên <code>domains.update({ id, capabilities: { receiving: "enabled" } })</code> bật nhận email. Câu trả lời mẫu có thêm <code>subject</code> và <code>is_private</code>, link thanh toán có thêm <code>qr_payload</code> cho ứng dụng tự vẽ mã VietQR.</p>]]></content>
        <category label="node" term="node"/>
        <category label="email" term="email"/>
    </entry>
</feed>