Connect by JBRH Open Connect

The call connected and nobody spoke

The call was answered and the opening line could not be spoken. Rather than leaving the caller in silence, the engine now records a greeting failure, ends the call and marks the record as a silent failure with an outcome that says the caller was never reached. Before that, five such calls were filed as "the caller hung up before speaking", which is the opposite of what happened.

Status
Available What this means
Audience
both
Channels
phone
In the app
#/calls
Last verified
Product version
6.3.2

What it looks like#

The caller's phone shows a connected call of a few seconds with no audio. On the carrier's side it is a completed, charged call. In the workspace it is a call with no conversation — no turns, no summary, and an outcome saying the caller was not reached.

The misleading version, which is why this page exists: a call that ends with no caller speech looks identical to a caller who dialled and changed their mind. Both are short, both have no turns. Attribution is the only thing that separates them, and it is now written explicitly.

What it means#

The greeting is not improvised by the live model. It is synthesised separately — ideally during the ring, so it can be played the instant the caller picks up — and the live model refuses to be asked to say a supplied line. So if the greeting cannot be produced, there is nothing to play, and the model cannot be asked to cover for it.

Two behaviours follow. The engine asks once more when the refusal is one worth retrying. If the line still cannot be spoken, it ends the call and records why, attributing the ending to the engine rather than to the caller. Ending honestly beats holding a caller in silence, and it makes the failure countable.

Causes, most likely first#

  1. The speech service refused the synthesis. A per-minute rate limit is the common case, and it is retried with backoff; a rejected key is not, because retrying it cannot help.
  2. Warm-up never succeeded for that process. Every idle process used to ask for the same sentence with the same key in the same instant; one of them was rate-limited and the greeting was given up for that process's entire life. Warm-up is now spread out and retried, and it counts refusals separately from failures.
  3. The model in use takes no supplied line. On such a model there is no fallback speech at all — the greeting is the only thing that can open the call.
  4. On the turn-based path, the document had nowhere to go next. An action URL emitted without a host meant the greeting played and the call went silent, and a gather that was the last element in the document meant the carrier ran off the end and hung up. A redirect now follows the gather, back to a handler that answers unheard speech.
  5. The line was refused for budget or hours but the refusal itself could not be spoken. The closed-line message is warmed alongside the greetings precisely so this does not happen.

What Connect completed#

  • Answered the call and attempted the opening line, including one further attempt when the refusal was worth retrying.
  • Ended the call deliberately rather than leaving an open line with nobody speaking.
  • Recorded a greeting-stage error, attributed the ending to the engine, and marked the record as a silent failure so it is not counted as an abandonment.
  • Wrote the call's cost, because the carrier charged for it.

What Connect did not complete#

  • No conversation happened: there are no turns, no transcript and no summary.
  • No lead was captured. A call that was never a conversation produces none, deliberately.
  • No follow-up was created, because nothing was promised.
  • The caller was not called back automatically. The record exists so a person can decide to.

What you can do#

  1. Open the call record and read the outcome and the attribution.

    Result A greeting-stage error attributed to the engine tells you this was the line, not the caller.

  2. Check whether the greeting was warmed on that call.

    Result A miss falls back to live synthesis, which is slower and exposed to exactly the rate limit that causes this.

  3. Call the number yourself once.

    Result If the greeting is instant, the condition has cleared; if it is silent again, it is current rather than historical.

  4. Ring the caller back if the call mattered.

    Result They experienced a business that answered and said nothing, which is worth correcting personally.

What an administrator can do#

  • Confirm the speech service key is valid and in credit — a refused key is never retried, on purpose.
  • Confirm warm-up is completing rather than being cut short: it runs inside process initialisation, whose default bound was once shorter than the warm-up's own budget, which meant nothing was ever warmed.
  • Check whether refusals are clustered at restart. That signature — every process failing at once, then never recovering — is the rate-limit storm this was designed out of.
  • On the turn-based path, confirm the public URL is set, so action URLs carry a host.

When to escalate#

Escalate immediately if more than one caller met silence in the same hour, or if any silent call is followed by a normal one on the same line — an intermittent greeting is a live incident, not a historical record. Bring the times of the calls and whether the greetings that did work were instant or slow; a slow greeting and a silent one usually have the same cause.

Questions#

Why not let the model improvise an opening instead?

Because the live model refuses to speak a supplied line, and a model asked to invent an opening produces a different greeting on every call — including a different business name and a different language. The greeting is deterministic for the same reason the closed-line message is.

Was the caller charged for a call where nothing was said?

The carrier charges for the call because it was answered, and Connect records that cost rather than hiding it. A call that reports no tokens is still charged from its own duration, never at zero.

How do I tell this from a caller who simply hung up?

By the attribution. An ending attributed to the engine with a greeting-stage error is this failure. An ending attributed to the caller with no error is somebody changing their mind. Before endings were attributed to one of six actors, everything that was not the caller read as the agent.