Покрокова інструкція
Markdown статтіПовідомити про помилку

Як інтегрувати 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.

Коротко:

  1. Збіг email менеджера в Odoo та ConnectiveOne.
  2. login_key для autologin — у secure storage Odoo.
  3. Вкладка з iframe у res.partner / crm.lead.
  4. 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

Пов'язані статті

Працюєте з власним ШІ-агентом?Встановіть відкритий skill, щоб ваш ШІ-агент працював з актуальною офіційною документацією ConnectiveOne.Отримати skillПотрібна підтримка?Не знайшли відповідь або потрібна допомога команди ConnectiveOne? Створіть запит у Client Portal.Створити запит