Fix Typebot message routing for @lid JIDs
O Typebot não respondia mensagens vindas de JIDs que terminam com "@lid", apenas "@s.whatsapp.net".
O comportamento ocorria porque o número era sempre extraído via: remoteJid.split('@')[0]
Com a atualização do WhatsApp Web, algumas mensagens de mídia chegam com JID "@lid", e nesses casos o JID completo precisa ser mantido.
Ajuste realizado: ANTES: number: remoteJid.split('@')[0]
DEPOIS: number: remoteJid.includes('@lid') ? remoteJid : remoteJid.split('@')[0]
Com essa condição, mensagens vindas de ambos os formatos passam a ser tratadas corretamente pelo Typebot.
📋 Description
🔗 Related Issue
Closes #(issue_number)
🧪 Type of Change
- [x] 🐛 Bug fix (non-breaking change which fixes an issue)
- [ ] ✨ New feature (non-breaking change which adds functionality)
- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] 📚 Documentation update
- [ ] 🔧 Refactoring (no functional changes)
- [ ] ⚡ Performance improvement
- [ ] 🧹 Code cleanup
- [ ] 🔒 Security fix
🧪 Testing
- [ ] Manual testing completed
- [ ] Functionality verified in development environment
- [ ] No breaking changes introduced
- [ ] Tested with different connection types (if applicable)
📸 Screenshots (if applicable)
✅ Checklist
- [x] My code follows the project's style guidelines
- [x] I have performed a self-review of my code
- [ ] I have commented my code, particularly in hard-to-understand areas
- [ ] I have made corresponding changes to the documentation
- [ ] My changes generate no new warnings
- [ ] I have manually tested my changes thoroughly
- [ ] I have verified the changes work with different scenarios
- [ ] Any dependent changes have been merged and published
📝 Additional Notes
Summary by Sourcery
Bug Fixes:
- Fix Typebot not responding to messages when the WhatsApp JID ends with @lid by preserving the full JID for those cases.
Reviewer's guide (collapsed on small PRs)
Reviewer's Guide
Adjusts Typebot WhatsApp routing so that messages from JIDs ending with '@lid' are handled correctly by preserving the full JID instead of stripping the suffix, while keeping the existing behavior for '@s.whatsapp.net' JIDs.
Sequence diagram for WhatsApp JID handling in BaseChatbotService
sequenceDiagram
actor User
participant WhatsAppClient
participant WhatsAppBackend
participant BaseChatbotService
participant WhatsappInstance
User->>WhatsAppClient: Send media or text message
WhatsAppClient->>WhatsAppBackend: Deliver message
WhatsAppBackend->>BaseChatbotService: webhook with remoteJid
alt JID_ends_with_lid
BaseChatbotService->>BaseChatbotService: number = remoteJid
BaseChatbotService->>WhatsappInstance: audioWhatsapp_or_mediaMessage_or_textMessage(number)
else Standard_JID_s_whatsapp_net
BaseChatbotService->>BaseChatbotService: number = remoteJid_split_at_at_index_0
BaseChatbotService->>WhatsappInstance: audioWhatsapp_or_mediaMessage_or_textMessage(number)
end
WhatsappInstance-->>WhatsAppBackend: Dispatch reply
WhatsAppBackend-->>WhatsAppClient: Deliver reply
WhatsAppClient-->>User: Show Typebot response
Flow diagram for number extraction from remoteJid
flowchart TD
A[Receive_message_with_remoteJid] --> B{remoteJid_includes_lid}
B -->|yes| C[Set_number_to_remoteJid]
B -->|no| D[Set_number_to_remoteJid_split_at_at_index_0]
C --> E[Call_instance_method_with_number]
D --> E[Call_instance_method_with_number]
File-Level Changes
| Change | Details | Files |
|---|---|---|
| Update WhatsApp number extraction logic to preserve full JID for '@lid' senders while keeping legacy behavior for other JIDs. |
|
src/api/integrations/chatbot/base-chatbot.service.ts |
Possibly linked issues
- #[Bug] Typebot fails to send messages to users with LID - BadRequestException jidOptions.exists false: PR changes number extraction to keep full @lid JIDs, exactly matching the bug’s proposed Option 2 fix.
- #Erro com alguns números: PR updates number extraction for @lid JIDs, directly addressing Typebot failures described with @lid numbers
Tips and commands
Interacting with Sourcery
- Trigger a new review: Comment
@sourcery-ai reviewon the pull request. - Continue discussions: Reply directly to Sourcery's review comments.
- Generate a GitHub issue from a review comment: Ask Sourcery to create an
issue from a review comment by replying to it. You can also reply to a
review comment with
@sourcery-ai issueto create an issue from it. - Generate a pull request title: Write
@sourcery-aianywhere in the pull request title to generate a title at any time. You can also comment@sourcery-ai titleon the pull request to (re-)generate the title at any time. - Generate a pull request summary: Write
@sourcery-ai summaryanywhere in the pull request body to generate a PR summary at any time exactly where you want it. You can also comment@sourcery-ai summaryon the pull request to (re-)generate the summary at any time. - Generate reviewer's guide: Comment
@sourcery-ai guideon the pull request to (re-)generate the reviewer's guide at any time. - Resolve all Sourcery comments: Comment
@sourcery-ai resolveon the pull request to resolve all Sourcery comments. Useful if you've already addressed all the comments and don't want to see them anymore. - Dismiss all Sourcery reviews: Comment
@sourcery-ai dismisson the pull request to dismiss all existing Sourcery reviews. Especially useful if you want to start fresh with a new review - don't forget to comment@sourcery-ai reviewto trigger a new review!
Customizing Your Experience
Access your dashboard to:
- Enable or disable review features such as the Sourcery-generated pull request summary, the reviewer's guide, and others.
- Change the review language.
- Add, remove or edit custom review instructions.
- Adjust other review settings.
Getting Help
- Contact our support team for questions or feedback.
- Visit our documentation for detailed guides and information.
- Keep in touch with the Sourcery team by following us on X/Twitter, LinkedIn or GitHub.
Bom dia!
Com essa alteração, a API está enviando de forma correta o telefone para o typebot ? Pois preciso obter o número do telefone do usuário lá no fluxo do typebot...
Bom dia!
Com essa alteração, a API está enviando de forma correta o telefone para o typebot ? Pois preciso obter o número do telefone do usuário lá no fluxo do typebot...
Positivo.
Please, fix the lint with npm run lint