UNPKG

@warriorteam/redai-zalo-sdk

Version:

Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs

153 lines (117 loc) 4.72 kB
# Update Article Status - New Feature ## Tổng quan Method `updateArticleStatus` mới được thêm vào `ArticleService` cho phép cập nhật trạng thái bài viết một cách đơn giản mà không cần thay đổi nội dung bài viết. ## Tính năng ✅ **Cập nhật trạng thái đơn giản**: Chỉ cần article ID và trạng thái mới ✅ **Bảo toàn dữ liệu**: Giữ nguyên tất cả nội dung hiện có ✅ **Tự động phát hiện loại**: Hỗ trợ cả bài viết thường và video ✅ **Kiểm soát comment**: Tùy chọn cập nhật trạng thái bình luận ✅ **Validation đầy đủ**: Kiểm tra tham số đầu vào ## Cách sử dụng ### Cơ bản ```typescript import { ZaloSDK, ArticleStatus, CommentStatus } from 'redai-zalo-sdk'; const sdk = new ZaloSDK(); // Xuất bản bài viết (show) const result = await sdk.article.updateArticleStatus( accessToken, 'article_id', ArticleStatus.SHOW ); // Ẩn bài viết và tắt bình luận const result2 = await sdk.article.updateArticleStatus( accessToken, 'article_id', ArticleStatus.HIDE, CommentStatus.HIDE ); ``` ### Theo dõi tiến trình ```typescript // Cập nhật trạng thái const updateResult = await sdk.article.updateArticleStatus( accessToken, articleId, ArticleStatus.SHOW ); // Kiểm tra tiến trình const progress = await sdk.article.checkArticleProcess( accessToken, updateResult.token ); console.log('Trạng thái cập nhật:', progress.status); ``` ### Cập nhật hàng loạt ```typescript const articleIds = ['id1', 'id2', 'id3']; for (const id of articleIds) { try { await sdk.article.updateArticleStatus( accessToken, id, ArticleStatus.SHOW ); console.log(`✅ Đã cập nhật bài viết ${id}`); } catch (error) { console.error(`❌ Lỗi cập nhật bài viết ${id}:`, error); } // Tránh rate limiting await new Promise(resolve => setTimeout(resolve, 1000)); } ``` ## Tham số | Tham số | Loại | Bắt buộc | Mô tả | |---------|------|----------|-------| | `accessToken` | string | ✅ | Token truy cập OA | | `articleId` | string | ✅ | ID bài viết cần cập nhật | | `status` | ArticleStatus | ✅ | Trạng thái mới (`'show'` hoặc `'hide'`) | | `comment` | CommentStatus | ❌ | Trạng thái bình luận (`'show'` hoặc `'hide'`) | ## Cách hoạt động 1. **Lấy thông tin bài viết**: Gọi `getArticleDetail()` để lấy dữ liệu hiện tại 2. **Bảo toàn dữ liệu**: Giữ nguyên tất cả thông tin (title, content, cover, v.v.) 3. **Cập nhật trạng thái**: Chỉ thay đổi `status` và `comment` (nếu có) 4. **Gọi API cập nhật**: Sử dụng `updateArticle()` với dữ liệu đầy đủ ## Ưu điểm so với updateArticle() | Tiêu chí | updateArticleStatus() | updateArticle() | |----------|----------------------|-----------------| | **Đơn giản** | ✅ Chỉ cần ID + status | ❌ Cần toàn bộ dữ liệu | | **An toàn** | ✅ Bảo toàn dữ liệu tự động | ⚠️ Có thể ghi đè dữ liệu | | **Hiệu quả** | ✅ Ít tham số | ❌ Nhiều tham số phức tạp | | **Dễ sử dụng** | ✅ API đơn giản | ❌ Cần chuẩn bị nhiều data | ## Xử lý lỗi ```typescript try { const result = await sdk.article.updateArticleStatus( accessToken, articleId, ArticleStatus.SHOW ); console.log('Cập nhật thành công:', result.token); } catch (error) { if (error.message.includes('Article ID cannot be empty')) { console.error('Lỗi: ID bài viết trống'); } else if (error.message.includes('Invalid status')) { console.error('Lỗi: Trạng thái không hợp lệ'); } else { console.error('Lỗi khác:', error.message); } } ``` ## Ví dụ thực tế Xem file `examples/article-status-update.ts` để có ví dụ chi tiết về: - Cập nhật trạng thái cơ bản - Cập nhật hàng loạt - Xử lý lỗi và retry logic - Theo dõi tiến trình cập nhật ## Test Chạy test để đảm bảo method hoạt động đúng: ```bash npm test -- article-status-update.test.ts ``` ## Tương thích - ✅ Hỗ trợ cả bài viết thường (normal) và video - ✅ Tương thích với tất cả phiên bản hiện tại - ✅ Không ảnh hưởng đến các method khác - ✅ TypeScript support đầy đủ --- **Lưu ý**: Method này là bổ sung cho `updateArticle()` hiện có, không thay thế. Sử dụng `updateArticleStatus()` khi chỉ cần thay đổi trạng thái, và `updateArticle()` khi cần cập nhật nội dung.