Dial Next Batch
POST /dialer/sessions/{session_id}/next-batch
*** CALLS REAL PEOPLE. *** This is the operation that dials.
Voice’s own words for this handler are “the one-and-only dial path for
BE-owned queue sessions” (dialer_sessions.py:2272). It picks the next
contacts off the queue and places outbound calls to them, transitioning
the session DRAFT -> ACTIVE or PAUSED -> ACTIVE on the way.
parallel_count is HOW MANY PEOPLE ARE CALLED AT ONCE. Sending it with a
session configured for one is how a power-dial becomes a parallel dial.
Each attempt reserves credits and each connected minute charges more, so
this both spends money and reaches strangers. It is tiered external
rather than write for exactly that reason: “dial the next twenty people”
must not be grantable by the same scope as “rename a session”.
filter_spec sent here CHANGES WHO IS ELIGIBLE before the batch is
picked. It is not a display filter.
Authorizations
Parameters
Path Parameters
Session to dial.
Session to dial.
Header Parameters
Request Body
Mirrors NextBatchRequest. THIS REQUEST DIALS PEOPLE.
parallel_count is how many humans are called AT ONCE.
object
Which contacts in the list are eligible to be dialed.
Narrowing this on a RUNNING session changes who gets called next. It is not a display filter.
object
One clause of a queue filter. conditions nests for AND/OR groups.
conditions is typed as a list of plain objects rather than as a list of
FilterPredicate, ON PURPOSE. Voice’s own model IS recursive, and this
one was too, which made it the only self-referencing schema in the
published contract - and the developer-docs renderer recurses on a
self-referencing schema with no depth limit until Node runs out of memory
(verify-help-docs and User help coverage and rendering both died with
exit 134 on every head that carried it). The wire format is unchanged:
each entry has this same shape (field, op, value, values,
conditions) and is forwarded to voice as-is, which validates it against
its recursive model. The parity test compares field NAMES, so it still
pins this model to voice’s.
Jump one specific contact to the front of the next batch.
object
Responses
200
Successful Response
object
An open envelope for one dialer result.
Open because voice owns the shape of a session, a call stub and a queue stat, and it grows them without a contract bump here. A dropped field would otherwise turn an added upstream field into a removed public one.
object
422
Validation Error