User guide
How to use TechnoVision WhatsApp Core, screen by screen.
Everything lives under the WhatsApp menu.
Sending a message
WhatsApp -> Send a message, or select contacts in a list and use the Send a WhatsApp message action.
Choose recipients, or type a single number. Pick a template if you have one - the text appears and you can edit it before sending. Anyone in the selection without a usable number is named in a warning and skipped rather than silently dropped.
Messages sent from this screen go immediately, because somebody is looking at the screen and queued is not the answer they came for. Messages created by other modules are queued and drained by the scheduler.
Reading the log
WhatsApp -> Messages. One row per message with its recipient, its full text, its state, how many attempts it has taken and, when something has gone wrong, the provider's own words.
| State | Means |
|---|---|
| Draft | Created, not queued. |
| Queued | Waiting for the scheduler, or waiting out a retry delay. |
| Sent | The provider accepted it. |
| Delivered | The provider says it reached the device. |
| Read | The provider says it was read. |
| Failed | It will not be tried again. The reason is on the record. |
| Cancelled | Somebody stopped it before it went. |
Delivered and Read only ever move when the provider says so. A channel that marks its own messages delivered is telling you what it hopes happened.
When something fails
WhatsApp -> Failed is the list to work from. Open a message and the error is at the top, in the provider's words rather than ours.
Retry now puts it back at the front of the queue. If the reason was a wrong number, fix the contact first: retrying an invalid number produces the same failure four more times.
What a message is about
A message created by another module carries the record it came from - an invoice, an order, a ticket. It is on the message under About, and it is what turns the log from a list of texts into an answer to "what did we send that customer about that invoice".
Sending from your own code
partner._whatsapp_send(
body="Your order has shipped.",
origin=picking, # optional, kept on the log
)
partner._whatsapp_send(
template=self.env.ref("my_module.whatsapp_shipped"),
origin=picking,
)Messages are queued, so a slow or unreachable gateway can never hold up the transaction that produced them. Call .send() on the result if you need it to go now.