@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
Markdown
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.
✅ **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
```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
);
```
```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);
```
```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ố | 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'`) |
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);
}
}
```
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
Chạy test để đảm bảo method hoạt động đúng:
```bash
npm test -- article-status-update.test.ts
```
- ✅ 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.