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
| Field | Type | Required | Description |
|---|---|---|---|
phone_number | string | yes | Number to call, E.164 preferred |
callee_name | string | no | Who should answer |
objective | string | yes | What a successful call accomplishes |
script | string | yes | Exact script to follow, verbatim |
playbook | string | yes | Branches: objections, voicemail, gatekeeper, etc. |
call_window | string | no | When to call, with timezone (e.g. '9am-5pm PT') |
max_attempts | number | no | Attempts before reporting no-answer (default 3) |
Result fields
| Field | Type | Required | Description |
|---|---|---|---|
reached | boolean | yes | Did a human answer |
outcome | enum: completed · no_answer · refused · wrong_number · callback_requested | yes | Call outcome |
summary | string | yes | What 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"aftermax_attempts. Your agent should branch onoutcome, not just on task status. - Refused / wrong number — also delivered, with
outcome: "refused"or"wrong_number"and what happened insummary. The call happened; the answer is the data. - Bad input — unparseable number, missing
scriptorplaybook: pre-flight failure, no call made. - Unreachable window —
call_windowcan't be met (timezone passed, etc.): flagged → ops requeue into the next window or cancel (failed).