## Frontend - Add media display (images, audio, video, docs) in Inbox - Add pause/resume functionality for WhatsApp accounts - Fix media URLs to use nginx proxy (relative URLs) ## API Gateway - Add /accounts/:id/pause and /accounts/:id/resume endpoints - Fix media URL handling for browser access ## WhatsApp Core - Add pauseSession() - disconnect without logout - Add resumeSession() - reconnect using saved credentials - Add media download and storage for incoming messages - Serve media files via /media/ static route ## Odoo Module (odoo_whatsapp_hub) - Add Chat Hub interface with DOLLARS theme (dark, 3-column layout) - Add WhatsApp/DRRR theme switcher for chat view - Add "ABRIR CHAT" button in conversation form - Add send_message_from_chat() method - Add security/ir.model.access.csv - Fix CSS scoping to avoid breaking Odoo UI - Update webhook to handle message events properly ## Documentation - Add docs/CONTEXTO_DESARROLLO.md with complete project context ## Infrastructure - Add whatsapp_media Docker volume - Configure nginx proxy for /media/ route - Update .gitignore to track src/sessions/ source files Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
71 lines
2.7 KiB
XML
71 lines
2.7 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<odoo>
|
|
<!-- Tree View -->
|
|
<record id="view_whatsapp_conversation_tree" model="ir.ui.view">
|
|
<field name="name">whatsapp.conversation.tree</field>
|
|
<field name="model">whatsapp.conversation</field>
|
|
<field name="arch" type="xml">
|
|
<list>
|
|
<field name="display_name"/>
|
|
<field name="phone_number"/>
|
|
<field name="status"/>
|
|
<field name="last_message_at"/>
|
|
</list>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Form View - Simplified -->
|
|
<record id="view_whatsapp_conversation_form" model="ir.ui.view">
|
|
<field name="name">whatsapp.conversation.form</field>
|
|
<field name="model">whatsapp.conversation</field>
|
|
<field name="arch" type="xml">
|
|
<form>
|
|
<header>
|
|
<button name="action_open_chat" string="ABRIR CHAT" type="object" class="btn-primary"/>
|
|
<button name="action_mark_resolved" string="Resolver" type="object"/>
|
|
<field name="status" widget="statusbar"/>
|
|
</header>
|
|
<sheet>
|
|
<group>
|
|
<group>
|
|
<field name="display_name"/>
|
|
<field name="phone_number"/>
|
|
</group>
|
|
<group>
|
|
<field name="account_id"/>
|
|
<field name="last_message_at"/>
|
|
</group>
|
|
</group>
|
|
<field name="message_ids">
|
|
<list>
|
|
<field name="create_date"/>
|
|
<field name="direction"/>
|
|
<field name="content"/>
|
|
<field name="media_url" widget="url"/>
|
|
<field name="status"/>
|
|
</list>
|
|
</field>
|
|
</sheet>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Search View -->
|
|
<record id="view_whatsapp_conversation_search" model="ir.ui.view">
|
|
<field name="name">whatsapp.conversation.search</field>
|
|
<field name="model">whatsapp.conversation</field>
|
|
<field name="arch" type="xml">
|
|
<search>
|
|
<field name="phone_number"/>
|
|
</search>
|
|
</field>
|
|
</record>
|
|
|
|
<!-- Action -->
|
|
<record id="action_whatsapp_conversation" model="ir.actions.act_window">
|
|
<field name="name">Conversaciones</field>
|
|
<field name="res_model">whatsapp.conversation</field>
|
|
<field name="view_mode">list,form</field>
|
|
</record>
|
|
</odoo>
|