---
title: "FAQ: common issues during training"
description: "Self-debug for common scenario mistakes: Fast Line Pro, edges, connect, CSAT, tickets, broadcast, and channels."
---

# FAQ: common issues during training

> Self-debug reference for the training track. If the scenario is correct but platform behavior is inconsistent — contact **ConnectiveOne support**.

---

## Fast Line Pro

### AI does not reply or `{{ai_answer}}` is empty

| Cause | What to do |
|-------|------------|
| `save_response` empty / not set | In `action_fastline_pro` parameters set a **variable name**, e.g. `save_response: ai_answer` (then `{{ai_answer}}`) |
| Knowledge base not indexed | Fast Line Pro → wait until document processing finishes |
| Wrong `agent_name` | Name must match the agent in Fast Line Pro |
| Agent not tested separately | Fast Line Pro → “Testing” without the scenario |

### AI replies incorrectly / hallucinations

- Check the FAQ document content (short txt for training)
- Add a fallback edge and a message like “Please rephrase the question”

---

## Branching (Router / switch and edges)

### Always takes one branch

- Runs → value of the variable in the condition (e.g. `{{user_choice}}` is empty)
- Make sure the MessageKeyboard button **writes** a value into the variable
- Comparison type: string `'priority'` vs number `1` vs boolean `true`
- In **Router**, enable **default branch** for remaining cases
- In MessageKeyboard, connect a **default** edge for free text

### Found legacy `if_else` in an old scenario

- Logic is the same as Router: conditions + `else`
- For new training flows use **Router** or **`switch`**

### Router / `switch` “does not work” after registered_users__get

- In training, **Use Case 2** does **not** use registered_users — start with a simple menu via edges or Router on `user_choice`
- If you still use `__get`: edge `error` = customer not found — that is an expected branch, not a bug

→ [Conditional branches (Router)](/en/scenariobuilder/explanation/router-node.md) · [Built-in actions — switch](/en/scenariobuilder/reference/standard-built-in-actions.md)

---

## Handoff to an operator from the scenario (Use Case 3)

### Edge `limit` does not fire / customer is in queue but silence

- In connect parameters: `status: "queue"` (if needed)
- After edge `limit` there **must be** a MessageKeyboard with text for the customer
- Check Runs: on which edge execution stopped

### Connect returns `error`

- `subject_alias` does not match the subject alias in Settings → Operator Panel → Subjects
- Subject not created or alias has a typo (case, space)

### Connect `success`, but the dialog is not where you expected

1. First compare `subject_alias` in the scenario with the subject in Settings
2. Then — [Operator Panel documentation](/en/operatorline/integrator-hub.md) (routing, operators)

---

## CSAT / NPS (Use Case 7b)

### CSAT does not start after dialog close

- Check `chat_closed_alias` in **all** connect blocks — it must point to the CSAT section alias
- No duplicated alias entrypoint in two sections
- CSAT section exists, alias in Latin characters

### Error writing to Custom Data / INTEGER

- Field `rate` must be type **INTEGER** in the CD model
- Free-text on the keyboard went into `__set` — protect the source-handle (disconnect or Router / validation)
- In Runs: send text instead of a button — expect edge `error`, not success on write

### Score is not collected in email / a channel without keyboard

- Check `supportedMessengers` on the keyboard node
- Add a separate branch or skip CSAT for channels without buttons

### NPS / score not after close in widget

- Check alias `chat_closed` / `call_node` path in the connect block
- Audit the alias in Runs after simulating close

---

## Operator Panel / queue *(reference)*

### Operator does not see the dialog

- First: `subject_alias` in the scenario vs subject in Settings
- Then: operator linked to the subject / skill group — [OP documentation](/en/operatorline/integrator-hub.md)
- If the scenario and Settings are correct — **ConnectiveOne support**

---

## Action Jail / phone (Use Case 5)

### Three UA phone formats

| Input | Expectation |
|-------|-------------|
| `+380501234567` | success |
| `380501234567` | normalize to `+380…` |
| `0501234567` | normalize to `+380…` |

If one format fails — expand the regex / Action Jail; check validation on WaitForInput (`phone` vs `none`).

### Validation on the node vs Action Jail

- **Validation on input** — rejects invalid input before the action
- **Action Jail** — normalizes allowed variants to one format
- For production you often need **both**

---

## CRM / mock API (Use Case 4)

### Which CRM to use for training?

**Mock.** See [Mock vs production API](/en/learn/implementer/training/concepts.md#mock-vs-production-api). A real CRM — after the basic level (Use Case 1…9).

### 401 / empty response

- Token in `headers` via `{{instance_settings.…}}`
- Instance Settings key exists and is filled
- `save_responce` (or `response_mapping`) is set on the node — check the variable name in Runs

### In legacy `if_else` always goes to the “not found” branch

- Compare `status`: string `"200"` vs number `200` — check the actual type in Runs
- Check that `save_responce` wrote the expected fields into `{{crm_data.*}}`

---

### Chatbot vs Agent in Fast Line Pro

| Question | Answer |
|----------|--------|
| What is the difference? | **Chatbot** — replies from KB/prompt without tools. **Agent** — same + Tools and advanced modes |
| What to use for FAQ / categorizer? | **Chatbot** + `action_fastline_pro` (Use Case 1 / 10 / 12) |
| When do you need an Agent? | When AI calls tools / streaming — see [Advanced Fast Line Pro](/en/learn/implementer/training/optional/use-case-advanced-fastline.md) |
| Docs say “agent”, UI says “Chatbot” | Scenario parameter `agent_name` is the AI app **name**; the type can be Chatbot |
| AI is silent in the scenario | First “Testing” in Fast Line Pro without the scenario; then `agent_name`, KB, fallback edge |

---

## Tickets (Use Case 10)

### Where to create the categorizer — main bot or Copilot?

- **AI catalog (optional):** CD lookup in the same bot — see [AI catalog](/en/learn/implementer/training/optional/use-case-ai-catalog-search.md)
- **Use Case 12:** separate Copilot — [overview](/en/learn/copilot/copilot-overview.md)

### Ticket is not created / error edge

- `subject_alias` does not match the subject in Settings
- Check `action_tickets_create` vs `action_tickets_create_v2` in Inspector
- Runs → constants after create: `ticket_id` or equivalent

### “Sticky” chat_room_id / repeated create

- Check create-action parameters: whether an old room is reused without logic
- New Run vs continuing the same dialog — different behavior
- In Runs: which `chat_room_id` is in constants before and after create

### Ticket custom field not visible in tabular OP

- Subject fields in Settings → Tickets
- Does not block the Use Case 10 happy path in Runs (`ticket_id` is enough)

---

## Broadcast (Use Case 11)

### Link button — Action Jail or MessageKeyboard?

- **First:** native URL in MessageKeyboard (`open-url`) — see [Use Case 11](/en/learn/implementer/training/advanced/use-case-11-broadcast.md)
- Action Jail — only if native does not cover the case

### Telegram OK, Viber error / not delivered

- Check `open-url` vs `open-web-app`
- Text-only vs image+button — simplify for diagnostics
- Document the result in the [result template](/en/learn/implementer/training/results-template.md) (Viber attempt)

### `send_after` / `one_time`

- **`send_after`:** create success in Runs ≠ instant delivery in the channel — wait or check the delay
- **`one_time`:** a repeated trigger must not duplicate the message
- Do not confuse with `action_broadcast__subscribe` (topic for a series of broadcasts)

### Why `action_broadcast__subscribe`?

- User subscription to a **topic** for future broadcasts, not a one-off send from the “Clients” tab
- One-off broadcast in Use Case 11 — via Broadcast template + alias

→ [Broadcast subscribe](/en/actionjail/reference/actions-reference.md)

---

## Priority segment (optional)

### Different branches do not fire

- Node order: **first** check the segment, **then** `subject_alias`
- Variable type: `'1'` (string) vs `1` (number) vs `true` (boolean) — see Runs
- Mock API / Registered Users / CD — align the segment flag source

→ [Priority segment](/en/learn/implementer/training/optional/use-case-priority-segment.md)

---

## Copilot / process bot *(optional)*

### Where does the catalog categorizer live (Use Case 12)?

- In the **Copilot bot** (a separate bot or process sections)
- The main bot only **routes** (“Catalog” button)

### Copilot vs macro Use Case 8

| | Copilot Use Case 12 | Macro Use Case 8 |
|---|---------------------|------------------|
| Initiator | Customer | Operator |
| Goal | AI + CD lookup | Action in the dialog |

---

## Deeplink

### Deeplink + registered_users — do you need get_command + jail?

- **No** on the first pass: deeplink params in constants on Start → `registered_users__get` → branches
- Details — in [Use Case 6](/en/learn/implementer/training/basic/use-case-06-registered-users.md)

---

## Operator Panel / filters

### “In queue” vs “Unassigned”

- **In queue:** dialogs waiting for an operator in the queue
- **Unassigned:** without an assignee; they may overlap — check Settings → Operator Panel and the Runs connect block

---

## Advanced Fast Line Pro (optional)

- `fastline_completion`, streaming — optional [Advanced Fast Line Pro](/en/learn/implementer/training/optional/use-case-advanced-fastline.md)

---

## Registered Users

### Data is not stored “forever”

- Only state was used — you need `registered_users__set`
- Fields were not added to the Registered Users model in Settings

### How to test across sessions?

1. Finish the Run after registration
2. New Run → `registered_users__get` at start
3. Optionally — the same user via Telegram

→ [Use Case 6 — registration and return visit](/en/learn/implementer/training/basic/use-case-06-registered-users.md)

---

## Macros

### Operator does not see “Run macro”

1. Section is marked **“Used as a macro”**
2. Settings → Operator Panel → **Process macro** → bot with macros selected
3. Dialog is open in Operator Line (not only scenario preview)
4. Macro variables are declared in the section parameters

→ [Integrator overview — macros](/en/learn/implementer/implementer-overview.md)

---

## Channels

### Telegram does not receive messages

- Settings → Bots → Channels → token is valid
- You tested preview but expected Telegram — those are different paths
- For Use Case 1 the channel is optional; preview is enough for logic

### Keyboard is not shown

- `supportedMessengers` on the keyboard node
- The channel supports inline buttons

### Different behavior widget vs Telegram

- Separate branches or validation by `{{channel}}`
- Test critical flows in both channels if the bot is multichannel

### URL in the message as text, not a link

- Message mode (HTML / plain) in MessageKeyboard
- For widget — check link display parameters in Inspector

→ [Connect Telegram](/en/channels/how-to/connect-telegram.md)

---

## AI Assistant (Instance Agent) {#ai-assistant-instance-agent}

> This is **not** Fast Line Pro in the bot — see [concepts — Instance Agent](/en/learn/implementer/training/concepts.md#instance-agent).

### Training rule

1. UC **first by hand** → self-check in Runs.
2. **Optionally after** — rebuild the same UC via Agent and compare edges / alias / variables.
3. **Trust Runs**, not the agent’s answer.

### Agent built a scenario, but it does not work

- Refresh Scenario Builder (F5 / Cmd+R) after agent edits
- Check **Runs** — edges, variables, which edge actually fired
- Fix by hand; Agent is for explanations and optional rebuilds

### Agent answer contradicts Runs

- **Trust Runs** and the test in the channel / OP
- Ask the agent to explain a **specific node by title**, then verify in Inspector

### No “spark” button in Scenario Builder

- [Prerequisites](/en/learn/implementer/training/prerequisites.md) — Instance Agent Integration + **AI Assistant** module in the role
- → [Configure access](/en/constructor/how-to/configure-ai-assistant-access.md)

### Read-only or no write permission

- The agent only explains and suggests a **UI tour** — you make the changes yourself
- **Ask** mode is enough for most training UCs

---

## General debug {#general-debug}

| Step | Tool | Action |
|------|------|--------|
| 1 | **Runs** | Find the run; stop step; edge |
| 2 | **Trace / log** | Variables, constants, error text |
| 3 | **“Test action”** | Node Inspector — isolated Action test |
| 4 | **Fast Line Pro** | Test the agent separately from the scenario |
| 5 | **Alias** | `subject_alias`, entrypoints, `chat_closed_alias` vs Settings |
| 6 | **Channel** | Settings → Bots; preview vs Telegram/widget |
| 7 | **Operator Line** | Optional E2E after connect |

Details: [Use Case 9 — tooling tour](/en/learn/implementer/training/basic/use-case-09-scenario-audit.md). Outside the scenario: [when it is not the scenario](/en/learn/implementer/training/reference/when-not-scenario.md).

If after self-debug the scenario is correct but platform behavior is inconsistent — **ConnectiveOne support**.

---

## Related materials

- [Actions glossary](/en/learn/implementer/training/reference/actions-glossary.md)
- [Testing matrix](/en/learn/implementer/training/reference/testing-matrix.md)
- [When it is not the scenario](/en/learn/implementer/training/reference/when-not-scenario.md)
- [Key concepts](/en/learn/implementer/training/concepts.md)
