UNPKG

@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
/** * 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 };