Refactor: Modularize whatsapp-router interactions
This commit introduces a significant refactoring to the whatsapp-router service to improve modularity and extend its capabilities for interacting with OpenWA (nucleo-whatsapp).
Key changes include:
1. **Message Processing Logic**:
* Created a new `messageProcessor.ts` module.
* Moved message mapping (`mapWhatsAppMessageToMsg`), message addition to conversations (`processIncomingMessageForConversation`), and audio transcription handling (`handleAudioMessageTranscription`) into this new module.
* Updated `store/conversation.ts` and `webhook.ts` to utilize `messageProcessor.ts`, streamlining their responsibilities.
2. **OpenWA Client (`nucleoClient.ts`)**:
* Introduced `nucleoClient.ts`, a dedicated module for encapsulating API calls to OpenWA.
* Implemented functions for various OpenWA commands:
* Sending text, image, and file messages.
* Fetching chat and contact information.
* Creating groups.
* Managing the blocklist (get, block, unblock).
* Listing all chats and fetching messages for a specific chat.
* Includes error handling and basic typing for API responses.
3. **New API Endpoints (`routes/nucleoActions.ts`)**:
* Created `nucleoActions.ts` to expose the functionalities of `nucleoClient.ts` via a new set of HTTP API endpoints.
* Endpoints cover all implemented client functions, with request validation and robust error handling.
* These routes are grouped under the `/nucleo` base path.
4. **Route Registration**:
* Registered the new `/nucleo` routes in the main `index.ts` file.
5. **Conversation Store and Routes Review**:
* Reviewed and confirmed that `store/conversation.ts` and `routes/conversations.ts` are correctly integrated with the new `messageProcessor.ts` and remain focused on their core responsibilities.
This refactoring enhances the structure of `whatsapp-router`, making it easier to maintain and extend. It also provides a comprehensive set of API endpoints for more granular control over OpenWA functionalities.
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
waitForGateway,
|
||||
WebhookConfig,
|
||||
} from './webhook';
|
||||
import nucleoActionsRouter from './routes/nucleoActions'; // New import
|
||||
|
||||
dotenv.config();
|
||||
|
||||
@@ -51,6 +52,9 @@ const config: WebhookConfig = {
|
||||
registerConversationRoutes(app, openWaUrl);
|
||||
registerWebhookRoutes(app, config, openWaUrl, agentUrl);
|
||||
|
||||
// Register new nucleoActions routes
|
||||
app.use('/nucleo', nucleoActionsRouter); // New line
|
||||
|
||||
app.listen(port, async () => {
|
||||
console.log(`WhatsApp router listening on ${port}`);
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user