We're using Odoo Web.
I've enabled the integrated SMS feature, but it seems to be one-way unless I'm mistaken.
Is it a way to send the SMSs "from" our number, so that we'd get the replies?
Odoo is the world's easiest all-in-one management software.
It includes hundreds of business apps:
We're using Odoo Web.
I've enabled the integrated SMS feature, but it seems to be one-way unless I'm mistaken.
Is it a way to send the SMSs "from" our number, so that we'd get the replies?
Hi,
In Odoo Web (Online), the integrated SMS feature is one-way by default. You can send messages to your customers, but replies do not come back into Odoo. To send SMS “from” your number and receive replies, you need a phone number that supports two-way messaging through a provider like Twilio, Plivo, or Clickatell. You configure this number in Odoo and set up the provider to forward incoming messages (via webhook or email) so Odoo can log them. On Odoo Online, direct inbound SMS configuration is limited, so you may need a third-party integration from the Odoo App Store to fully support two-way SMS.
Please refer to the module:
1. https://apps.odoo.com/apps/modules/18.0/odoo_twilio_sms
2. https://apps.odoo.com/apps/modules/16.0/clicksend_sms_odoo
Hope it helps.
Not exactly true - you can’t receive inbound messages in Odoo from Twilio, Plivo, or Clickatell out of the box on Odoo Online. In fact, this only works on the Custom plan (with Studio activated) and requires a third-party integration.
It is possible to receive incoming SMS messages in Odoo Online (Custom Plan) — I have this working successfully.
However, this functionality is not available out of the box and requires a bit of custom code.
If you would like me to setup this integration for you or just need a detailed guidance, please contact me directly nerosoro @ proton.me or reply to this thread.
Below is an overview of my setup:
A small limitation of this method is that Odoo does not include contextual information about where the original outgoing SMS was sent from (for example, whether it came from a Contact, Lead, Quotation, or Task).
Because of this, the webhook cannot automatically determine which record in Odoo the incoming message belongs to.
To handle this, I:
Here is a code...
| from flask import Flask, request, jsonify import requests app = Flask(__name__) # ==== CONFIGURATION ==== ODOO_URL = "https://your-database-name.odoo.com" # no trailing slash ODOO_DB = "your_database_name" ODOO_USERNAME = "your_odoo_login_email" ODOO_PASSWORD = "your_odoo_password" # JSON-RPC endpoint (standard Odoo API) ODOO_JSONRPC_ENDPOINT = f"{ODOO_URL}/jsonrpc" # ==== UTILITY FUNCTIONS ==== def odoo_rpc(model, method, args=None, kwargs=None): """ Generic Odoo JSON-RPC call. """ payload = { "jsonrpc": "2.0", "method": "call", "params": { "service": "object", "method": "execute_kw", "args": [ODOO_DB, ODOO_UID, ODOO_PASSWORD, model, method, args or [], kwargs or {}], }, "id": 1, } response = requests.post(ODOO_JSONRPC_ENDPOINT, json=payload) response.raise_for_status() result = response.json() if "error" in result: raise Exception(result["error"]) return result["result"] def odoo_login(): """ Authenticate with Odoo and return UID. """ payload = { "jsonrpc": "2.0", "method": "call", "params": { "service": "common", "method": "login", "args": [ODOO_DB, ODOO_USERNAME, ODOO_PASSWORD], }, "id": 1, } response = requests.post(ODOO_JSONRPC_ENDPOINT, json=payload) response.raise_for_status() result = response.json() return result["result"] # ==== MAIN ROUTE ==== @app.route("/twilio/incoming", methods=["POST"]) def incoming_sms(): """ Receives incoming SMS from Twilio, finds contact in Odoo, and posts message to chatter. """ try: # Twilio sends phone numbers in E.164 format (+614xxxxxxxx) from_number = request.form.get("From", "").strip() message_body = request.form.get("Body", "").strip() if not from_number or not message_body: return jsonify({"error": "Missing From or Body in payload"}), 400 # Authenticate to Odoo global ODOO_UID ODOO_UID = odoo_login() # Step 1: Find contact by phone or mobile number domain = [["|", ["phone", "=", from_number], ["mobile", "=", from_number]]] contact_ids = odoo_rpc("res.partner", "search", [domain], {"limit": 1}) if not contact_ids: return jsonify({"status": "Contact not found", "from": from_number}), 200 contact_id = contact_ids[0] # Step 2: Post message to chatter message_vals = { "model": "res.partner", "res_id": contact_id, "body": f"<p><b>Incoming SMS:</b> {message_body}</p>", "message_type": "comment", "subtype_id": 1, # Mail subtype "Discussions" } odoo_rpc("mail.message", "create", [message_vals]) return jsonify({ "status": "Message posted to chatter", "contact_id": contact_id, "from": from_number }), 200 except Exception as e: return jsonify({"error": str(e)}), 500 # ==== ENTRY POINT ==== if __name__ == "__main__": app.run(host="0.0.0.0", port=5000, debug=False) |
No, this is not possible with the SMS integration of Odoo - https://www.odoo.com/documentation/18.0/applications/marketing/sms_marketing/pricing_and_faq.html#more-common-questions
It is however, theoretically possible, to integrate 3rd-party services or communicating via a SMS gateway. If 'Odoo Web' means 'Odoo Online' this option should be out of scope too though.
Create an account today to enjoy exclusive features and engage with our awesome community!
Přihlásit se| Related Posts | Odpovědi | Zobrazení | Aktivita | |
|---|---|---|---|---|
|
|
2
říj 25
|
1807 | ||
|
|
0
bře 25
|
1145 | ||
|
|
0
led 25
|
1165 | ||
|
|
2
lis 24
|
1294 | ||
|
|
0
dub 22
|
2489 |