Як інтегрувати ConnectiveOne з Odoo CRM
Важливо: інтеграцію з Odoo CRM (модуль, iframe, webhooks) розробляє IT-команда клієнта. ConnectiveOne надає публічні інструкції та стандартні механізми (autologin,
event_webhook_url); не входить в імплементаційну оцінку ConnectiveOne.
Цей документ описує типові способи інтеграції ConnectiveOne з Odoo CRM: вбудовування операторської панелі, webhook-події, синхронізація контактів і лідів. Підходить для команди, яка розробляє Odoo-модуль на боці клієнта.
Що можна інтегрувати
| Можливість | Напрям | Документація |
|---|---|---|
| Операторська панель у картці контакта / ліда | Odoo → ConnectiveOne (iframe + autologin) | Віджет ОП в Odoo |
| Події чату (створення, підключення оператора, закриття) | ConnectiveOne → Odoo (webhook) | Webhook панелі оператора |
| Створення / оновлення ліда з бота | ConnectiveOne → Odoo (XML-RPC / JSON-RPC) | Цей документ, § «Ліди та контакти» |
| Передача custom fields у CRM | Двостороння через сценарій + API Odoo | § «Custom fields» |
| Повідомлення в Discuss | Зазвичай не дублюють — рекомендовано embed ОП | Пояснення |
Архітектура (рекомендована)
flowchart LR
subgraph Odoo["Odoo CRM"]
Partner["res.partner / crm.lead"]
Iframe["iframe ОП"]
WebhookCtrl["HTTP controller<br/>/connectiveone/events"]
end
subgraph CO["ConnectiveOne"]
Bot["Бот / сценарій"]
OP["Operator Panel"]
AJ["Action Jail"]
end
Partner --> Iframe
Iframe -->|"autologin"| OP
Bot --> OP
OP -->|"event_webhook_url"| WebhookCtrl
AJ -->|"XML-RPC"| Partner
Принцип: діалоги та маршрутизація залишаються в ConnectiveOne; Odoo — CRM-картка, activity та довідники менеджерів.
Крок 1. Вбудовування операторської панелі
Детальна інструкція: Як інтегрувати операторську панель як віджет у Odoo CRM.
Коротко:
- Збіг email менеджера в Odoo та ConnectiveOne.
login_keyдля autologin — у secure storage Odoo.- Вкладка з iframe у
res.partner/crm.lead. - URL формується на сервері Odoo з телефоном клієнта.
Крок 2. Webhook подій операторської панелі в Odoo
Налаштування в ConnectiveOne
У action operator_panel__connect_to_operator_with_msg вкажіть URL контролера Odoo:
{
"auto_connect_operator": true,
"subject_alias": "support",
"event_webhook_url": "https://your-odoo.example.com/connectiveone/events"
}
Повний перелік подій і формат тіла — у налаштуванні webhook.
Приклад контролера Odoo (Python)
# controllers/connectiveone_webhook.py
from odoo import http
from odoo.http import request
import json
import logging
_logger = logging.getLogger(__name__)
class ConnectiveOneWebhook(http.Controller):
@http.route("/connectiveone/events", type="json", auth="public", methods=["POST"], csrf=False)
def receive_event(self, **kwargs):
# Рекомендується: перевірка підпису / IP allowlist
data = request.jsonrequest
event_name = data.get("event_name")
client = data.get("client") or {}
phone = client.get("phone")
partner = False
if phone:
partner = request.env["res.partner"].sudo().search([
"|", ("phone", "ilike", phone[-9:]),
("mobile", "ilike", phone[-9:]),
], limit=1)
if event_name == "chat_created" and partner:
partner.activity_schedule(
"mail.mail_activity_data_todo",
summary="Новий чат ConnectiveOne",
note=data.get("text", ""),
)
elif event_name == "chat_closed_by_operator" and partner:
partner.message_post(body="Чат ConnectiveOne закрито оператором")
return {"status": "ok"}
Для production додайте автентифікацію (shared secret у header, VPN або mTLS).
Типові події для CRM
| Подія | Рекомендована дія в Odoo |
|---|---|
chat_created |
Activity на partner / lead |
operator_connected |
Повідомлення в chatter |
chat_closed_by_operator |
Закрити activity, оновити стадію |
chat_transferred_to_operator |
Перепризначити responsible (опційно) |
Крок 3. Ліди та контакти з бота
Створення ліда через Odoo External API
З Action Jail або сценарію ConnectiveOne викличте Odoo External API:
// Приклад у custom action (псевдокод)
const xmlrpc = require("xmlrpc");
// authenticate → execute_kw('crm.lead', 'create', [{ name, phone, description }])
Рекомендовані поля ліда:
| Поле Odoo | Джерело в боті |
|---|---|
name |
Ім'я клієнта або тема звернення |
phone / mobile |
Константа сценарію |
description |
Текст звернення / продукт |
user_id |
Відповідальний менеджер (якщо відомий) |
tag_ids |
Джерело каналу (Telegram, Viber) |
Пошук менеджера за клієнтом
Перед підключенням оператора можна в Odoo знайти res.partner за телефоном і прочитати user_id (відповідальний) — передати в custom fields ConnectiveOne для assign.
Крок 4. Custom fields і ідентифікатори
Зберігайте зв'язок між системами в custom fields:
| ConnectiveOne (клієнт OP) | Odoo |
|---|---|
external_id / phone |
res.partner.id |
Custom field odoo_partner_id |
ID партнера |
chat_room_id |
Поле на partner (опційно) |
Це дозволяє відкривати правильний діалог з iframe та оновлювати ту саму картку з webhook.
Крок 5. Налаштування System Parameters в Odoo
| Ключ | Приклад | Опис |
|---|---|---|
connectiveone.instance_url |
https://company.connectiveone.io |
Базовий URL |
connectiveone.login_key |
(secret) | Autologin |
connectiveone.default_bot_id |
12 |
Бот для init_dialog |
connectiveone.default_channel |
telegram |
Канал за замовчуванням |
connectiveone.webhook_secret |
(secret) | Перевірка webhook |
Чому embed, а не Discuss
Дублювання переписки в Odoo Discuss потребує повної синхронізації повідомлень, вкладень і маршрутизації. Це дорожче в підтримці та гірше збігається з skill groups ConnectiveOne.
Рекомендація: iframe операторської панелі + webhook для статусів і activity.
Чекліст впровадження
Обмеження
- Odoo Online може обмежувати custom controllers — перевірте план хостингу
- Autologin потребує актуального
login_key - Webhook URL має бути доступний з серверів ConnectiveOne
- Двостороння синхронізація всіх повідомлень — окремий великий scope