Phone Call

Task type: phone_call

A human makes a call following your exact script and playbook, then files a structured outcome report. Proof is the report itself.

Schema

Input fields

FieldTypeRequiredDescription
phone_numberstringyesNumber to call, E.164 preferred
callee_namestringnoWho should answer
objectivestringyesWhat a successful call accomplishes
scriptstringyesExact script to follow, verbatim
playbookstringyesBranches: objections, voicemail, gatekeeper, etc.
call_windowstringnoWhen to call, with timezone (e.g. '9am-5pm PT')
max_attemptsnumbernoAttempts before reporting no-answer (default 3)

Result fields

FieldTypeRequiredDescription
reachedbooleanyesDid a human answer
outcomeenum: completed · no_answer · refused · wrong_number · callback_requestedyesCall outcome
summarystringyesWhat happened, key responses, commitments made

Example input

{
  "phone_number": "+14155550123",
  "callee_name": "Jordan (office manager)",
  "objective": "Confirm the appliance delivery window for Thursday",
  "script": "Hi, this is Alex calling on behalf of Acme Logistics about Thursday's delivery...",
  "playbook": "If voicemail: leave callback number. If reschedule requested: offer Fri 9-12 or Mon 1-4.",
  "call_window": "9am-5pm PT"
}

Ideal workflow

worca tasks create --type phone_call --input @call.json --no-wait --json
worca tasks get tsk_… --json    # → { reached: true, outcome: "completed", summary: … }
curl -s -X POST "$WORCA_API_URL/v1/tasks" \
  -H "Authorization: Bearer $WORCA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "type": "phone_call", "input": { … } }'

Sad workflows

  • Nobody answers — this is still a delivered result: reached: false, outcome: "no_answer" after max_attempts. Your agent should branch on outcome, not just on task status.
  • Refused / wrong number — also delivered, with outcome: "refused" or "wrong_number" and what happened in summary. The call happened; the answer is the data.
  • Bad input — unparseable number, missing script or playbook: pre-flight failure, no call made.
  • Unreachable windowcall_window can't be met (timezone passed, etc.): flagged → ops requeue into the next window or cancel (failed).