---
title: "Action operator_panel__connect_to_operator_with_msg"
description: "Parameter, constant, and event reference for Connect to operator (action_operator_panel__connect_to_operator_with_msg)."
---

# Action `operator_panel__connect_to_operator_with_msg`

Creates a chat in **Operator Panel** and connects the client to an operator. Parameters are set in the node JSON configuration (or in Node Inspector fields). All parameters are optional unless stated otherwise.

> **System ID:** `action_operator_panel__connect_to_operator_with_msg`  
> In the scenario also: `operator_panel__connect_to_operator_with_msg`

Node concept in Scenario Builder: [Live operator in a dialog](/en/scenariobuilder/explanation/connect-to-operator-node.md).  
Short catalog entry: [Actions reference — Operator Panel](/en/actionjail/reference/actions-reference.md#operator-panel-4).

---

## Events (scenario branches)

After execution the action returns one of the **branches**. Connect each to the following nodes.

| Event | When it occurs |
|-------|----------------|
| **success** | Chat created (typical success when the node has no separate `queue` / `connected` branches) |
| **connected** | Operator already connected / chat in `processed` status — only if the node has a `connected` exit |
| **queue** | Chat in queue or waiting mode (`continue`, `status: "queue"`) — only if the node has a `queue` exit |
| **banned** | User is under an active ban; the client may receive the ban reason text |
| **limit** | `auto_connect_operator` is enabled, but no free operator was found |
| **error** | Failed to create the chat or another failure |

If the node has **no** `queue` / `connected` exits, a successful result always goes to **success** (even when the chat is actually in the queue).

The `add_button` / `add_return_button` buttons are **chat UI**, not scenario events (branches).

---

## Main connection settings

| Parameter | Type | Description |
|-----------|------|-------------|
| `subject_alias` | string | Subject alias. Supports placeholders (`{{...}}`). The subject must exist and not be deleted. |
| `auto_connect_operator` | boolean | `true` — before creating the chat, checks for free operators by the subject skill group (respecting dialog limits). If none — **limit** event, chat is **not** created. `false` or absent — chat is created without auto-assignment. |
| `assigned_operator` | string / number | Operator ID (op_user). Works only together with `auto_connect_operator: true`. Supports placeholders. |
| `continue` | boolean | `true` — the client can continue the scenario while waiting (`wait` state); branch is usually **success** (or **queue**, if present). |
| `status` | string | Initial internal chat status: `new`, `processed`, `queue`, `closed`. Do not change without a clear need. |
| `status_name` | string | Custom chat status (if such a status does not exist — it will not be set). Supports placeholders. |
| `chat_title` | string | Chat title in the operator panel. Supports placeholders, e.g. `"Support Chat - {{{user_name}}}"`. |
| `weight` | number | Dialog weight (priority). If not set — subject weight is used. |
| `tag_ids` | array | Tag IDs for the chat. Supports placeholders in array items; non-existent IDs are ignored. |
| `history_by_phone` | boolean | Look up client history by phone number (even from other channels / `chat_id`). |
| `history_count` | number | How many of the client's last bot steps to pass to the operator. `0` or absent — do not send history. |
| `enable_transition_on_chat_close` | boolean | If disabled — on chat close, the alias transition is not performed. |
| `process_bot_id` | number | Bot ID whose processes can be used on connect. |
| `type` | string | Chat room type (e.g. `ticket`, `fast_line`, `group`). If not set — determined automatically. |
| `instagram_room_type` | string / null | For Instagram: `direct` — regular 1:1 chat; otherwise (`null` / `comment`) — room for a thread. Works for **post comments**, **mentions**, and **Story replies**. |

---

## Messages and communication

### Message to the operator

| Parameter | Type | Description |
|-----------|------|-------------|
| `customTextToOperator` | string | Technical message for the operator only. Supports placeholders. |
| `parse_mode` | boolean | `true` — process `customTextToOperator` as Markdown/HTML. |

### Waiting message to the client

| Parameter | Type | Description |
|-----------|------|-------------|
| `waiting_message` | object | Localized waiting texts: keys are language codes (`uk`, `en`, …). Supports placeholders in values. |
| `waiting_message_time` | number | After how many seconds to show `waiting_message`. Default **300**. |

```json
{
  "waiting_message": {
    "en": "Please wait, connecting you to an operator...",
    "uk": "Будь ласка, зачекайте, з'єднуємо вас з оператором..."
  },
  "waiting_message_time": 60
}
```

---

## Buttons for the client

| Parameter | Type | Description |
|-----------|------|-------------|
| `add_return_button` | boolean | “Go back” button. Text — constant `return_button_text`. |
| `alias_return_scenario` | string | Scenario block alias when the return button is pressed. |
| `add_button` | boolean | Exit-chat button on operator/system messages. Text — constant `close_chat_button_text`. |

---

## Dialog completion and aliases

Aliases are stored in state constants and fire **after** chat lifecycle events (they do not replace success/limit/… branches).

| Parameter | State constant | When it fires |
|-----------|----------------|---------------|
| `chat_closed_by_client_alias` | `alias_closed_by_client` | Client closed the chat with the button |
| `chat_closed_alias` | `alias_chat_closed` | Operator closed the chat (client text — `chat_closed_by_operator`) |
| `chat_closed_by_timeout_alias` | `alias_chat_closed_by_timeout` | Closed due to inactivity (text — `chat_closed_by_timeout`) |
| `connection_timeout_alias` | `alias_connection_timeout` | Operator connection was not awaited in time |
| `alias_on_operator_connected` | `alias_operator_connected` | Operator connected to the chat (for queue / cascade scenarios) |
| `alias_return_scenario` | `alias_return_scenario` | Return button |

### Timeouts

| Parameter | Unit | Description |
|-----------|------|-------------|
| `custom_timeout_time` | minutes | Inactivity timeout for this dialog only (overrides the global `chat_room_timeout` setting). |
| `connection_timeout_time` | **minutes** | How long to wait for operator connection before closing the dialog. Must be **smaller** than `custom_timeout_time`, otherwise the dialog is closed by inactivity and `connection_timeout_alias` never fires. |
| `transfer_timeout` | seconds | How long to wait for a manual transfer to another operator to be accepted (default ~120). |

---

## Integration and AI

| Parameter | Type | Description |
|-----------|------|-------------|
| `event_webhook_url` | string | URL for real-time chat events. See [webhook setup](/en/integrations/how-to/webhook/configure-operator-panel-webhook.md). |
| `fastline_operator` | boolean | `true` — connect Fast Line as the operator (chat in waiting mode with AI). |
| `copilot_bot_id` | number / string | AI bot (Copilot) ID for the chat. If not set — the system may assign Copilot by settings priority. In the `copilot` channel, Copilot is **not** connected again. |

---

## What the system does without separate parameters

| Behavior | When |
|----------|------|
| Type `group`, title from dialog name | Incoming message from a group chat (`is_group`) |
| Type `fast_line`, status `processed` | `fastline_operator: true` |
| `prev_step` message to the operator | Widget has constant `prev_step` (redirect) |
| Facebook Ads first message in the chat | Matching feature flag enabled and first Ads message data present |
| Instagram story-room or comment-room | Instagram channel + matching event type, if `instagram_room_type` ≠ `direct` |

---

## Extra data

| Parameter | Type | Description |
|-----------|------|-------------|
| `client_extra_data` | object | Extra client fields (placeholders in values). May affect email/phone/name. |
| `chatroom_extra_data` | object | Extra chat room fields (placeholders in values). |

```json
{
  "client_extra_data": {
    "level": "{{user_level}}",
    "vip": "{{is_vip}}"
  },
  "chatroom_extra_data": {
    "product": "{{product_name}}",
    "order_id": "{{order_id}}"
  }
}
```

---

## Full configuration example

```json
{
  "subject_alias": "support",
  "event_webhook_url": "https://example.com/chat_events",
  "auto_connect_operator": true,
  "assigned_operator": "42",
  "continue": false,
  "add_button": true,
  "add_return_button": true,
  "alias_return_scenario": "return_point",
  "transfer_timeout": 30,
  "history_count": 5,
  "history_by_phone": true,
  "customTextToOperator": "Користувач має проблеми з {{{feature}}}.",
  "parse_mode": false,
  "chat_closed_alias": "chat_closed_flow",
  "chat_closed_by_timeout_alias": "timeout_flow",
  "connection_timeout_alias": "connection_lost",
  "chat_closed_by_client_alias": "client_closed",
  "waiting_message": {
    "en": "Please wait, connecting you to an operator...",
    "uk": "Будь ласка, зачекайте, з'єднуємо вас з оператором..."
  },
  "waiting_message_time": 60,
  "connection_timeout_time": 5,
  "custom_timeout_time": 20,
  "chatroom_extra_data": {
    "product": "{{product_name}}",
    "order_id": "{{order_id}}"
  },
  "copilot_bot_id": "345",
  "client_extra_data": {
    "level": "{{user_level}}",
    "vip": "{{is_vip}}"
  },
  "chat_title": "Support Chat - {{{user_name}}}",
  "status": "queue",
  "status_name": "Узято в роботу",
  "weight": 50,
  "tag_ids": [1, 2],
  "enable_transition_on_chat_close": true
}
```

---

## Standard bot constants

Texts are taken from bot constants for the current language (`lang_code`). Full reference (with default wording): [Standard bot constants (Operator Panel)](/en/actionjail/reference/operator-panel-bot-constants.md).

| Constant | Purpose |
|----------|---------|
| `chat_created_msg` | Message when the dialog is created |
| `chat_operator_connected` | Operator joined (role and name are appended) |
| `auto_connected` | Text on operator auto-connect (if missing — often `chat_created_msg`) |
| `chat_closed_by_operator` | Chat closed by operator |
| `chat_closed_by_timeout` | Chat closed by timeout |
| `op_role_supervisor` | Role name “Supervisor” |
| `op_role_operator` | Role name “Operator” |
| `op_role_admin` | Role name “Administrator” |
| `close_chat_button_text` | End-conversation button text |
| `return_button_text` | Return button text |
| `close_chat_command` | Chat close command (if set together with `add_button`) |

---

## Related docs

- [Actions reference](/en/actionjail/reference/actions-reference.md)
- [Live operator in a dialog](/en/scenariobuilder/explanation/connect-to-operator-node.md)
- [Connect chat to operator](/en/operatorline/explanation/connect-chat-to-operator.md)
- [Auto-connect free operator](/en/operatorline/explanation/auto-connect-free-operator.md)
- [Operator Panel webhook](/en/integrations/how-to/webhook/configure-operator-panel-webhook.md)
- [Standard (built-in) actions](/en/scenariobuilder/reference/standard-built-in-actions.md)
