@warriorteam/redai-zalo-sdk
Version:
Comprehensive TypeScript/JavaScript SDK for Zalo APIs - Official Account, ZNS, Consultation Service, Group Messaging, and Social APIs
179 lines (137 loc) ⢠4.93 kB
text/typescript
/**
* Example: Update Article Status
*
* Demonstrates how to update article status using the RedAI Zalo SDK
*/
import { ZaloSDK, ArticleStatus, CommentStatus } from '../src';
async function updateArticleStatusExample() {
// Initialize SDK
const sdk = new ZaloSDK();
// Your access token
const accessToken = 'YOUR_ACCESS_TOKEN';
// Article ID to update
const articleId = 'YOUR_ARTICLE_ID';
try {
console.log('š Updating article status...');
// Example 1: Update status to 'show' (publish)
const publishResult = await sdk.article.updateArticleStatus(
accessToken,
articleId,
ArticleStatus.SHOW
);
console.log('ā
Article published successfully!');
console.log('Update token:', publishResult.token);
// Wait a moment before next update
await new Promise(resolve => setTimeout(resolve, 2000));
// Example 2: Update status to 'hide' (unpublish) and disable comments
const hideResult = await sdk.article.updateArticleStatus(
accessToken,
articleId,
ArticleStatus.HIDE,
CommentStatus.HIDE
);
console.log('ā
Article hidden successfully!');
console.log('Update token:', hideResult.token);
// Example 3: Check update progress
console.log('š Checking update progress...');
const progress = await sdk.article.checkArticleProcess(
accessToken,
hideResult.token
);
console.log('Update progress:', progress);
// Example 4: Get updated article details to verify changes
console.log('š Getting updated article details...');
const updatedArticle = await sdk.article.getArticleDetail(
accessToken,
articleId
);
console.log('Updated article status:', updatedArticle.status);
console.log('Updated comment status:', updatedArticle.comment);
} catch (error) {
console.error('ā Error updating article status:', error);
if (error instanceof Error) {
console.error('Error message:', error.message);
}
}
}
// Advanced example: Batch status update
async function batchUpdateArticleStatus() {
const sdk = new ZaloSDK();
const accessToken = 'YOUR_ACCESS_TOKEN';
// List of article IDs to update
const articleIds = ['ARTICLE_ID_1', 'ARTICLE_ID_2', 'ARTICLE_ID_3'];
console.log('š Batch updating article statuses...');
const results = [];
for (const articleId of articleIds) {
try {
console.log(`Updating article ${articleId}...`);
const result = await sdk.article.updateArticleStatus(
accessToken,
articleId,
ArticleStatus.SHOW,
CommentStatus.SHOW
);
results.push({
articleId,
success: true,
token: result.token
});
console.log(`ā
Article ${articleId} updated successfully`);
// Add delay to avoid rate limiting
await new Promise(resolve => setTimeout(resolve, 1000));
} catch (error) {
console.error(`ā Failed to update article ${articleId}:`, error);
results.push({
articleId,
success: false,
error: error instanceof Error ? error.message : 'Unknown error'
});
}
}
console.log('š Batch update results:', results);
return results;
}
// Example with error handling and retry logic
async function updateArticleStatusWithRetry() {
const sdk = new ZaloSDK();
const accessToken = 'YOUR_ACCESS_TOKEN';
const articleId = 'YOUR_ARTICLE_ID';
const maxRetries = 3;
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
console.log(`š Attempt ${attempt}/${maxRetries}: Updating article status...`);
const result = await sdk.article.updateArticleStatus(
accessToken,
articleId,
ArticleStatus.SHOW
);
console.log('ā
Article status updated successfully!');
console.log('Update token:', result.token);
return result;
} catch (error) {
console.error(`ā Attempt ${attempt} failed:`, error);
if (attempt === maxRetries) {
console.error('š« All retry attempts failed');
throw error;
}
// Wait before retry (exponential backoff)
const delay = Math.pow(2, attempt) * 1000;
console.log(`ā³ Waiting ${delay}ms before retry...`);
await new Promise(resolve => setTimeout(resolve, delay));
}
}
}
// Run examples
if (require.main === module) {
console.log('š Running Article Status Update Examples...\n');
// Uncomment the example you want to run:
// updateArticleStatusExample();
// batchUpdateArticleStatus();
// updateArticleStatusWithRetry();
console.log('\nš” Remember to replace YOUR_ACCESS_TOKEN and YOUR_ARTICLE_ID with actual values!');
}
export {
updateArticleStatusExample,
batchUpdateArticleStatus,
updateArticleStatusWithRetry
};