워크스페이스의 전화번호 중 하나로 한 통을 겁니다. 모든 요청에는 고유한 Idempotency-Key가 필요합니다. 같은 키를 다시 보내면 두 번 걸지 않고 같은 통화를 돌려줍니다.
curl https://evasay.com/api/v1/voice/calls \
-X POST \
-H "Authorization: Bearer sk-your-key" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"agent_id": "AGENT_ID",
"to": "+14155550100",
"variables": { "customer_name": "Alex", "order_id": "1234" }
}'
워크스페이스에 전화번호가 둘 이상이면 from이 필요합니다. variables는 에이전트의 첫 메시지와 프롬프트에 있는 {{customer_name}} 같은 자리 표시자를 채웁니다.
voicemail_detection이 켜져 있으면(기본값) 발신 통화는 에이전트가 인사하기 전에 상대가 말하기를 기다립니다. 상대가 말이 없으면 2~3초 뒤에 에이전트가 인사합니다. 음성사서함이나 통신사 녹음이 들리면 에이전트는 안내 멘트와 삐 소리가 끝나기를 기다렸다가 voicemail_message를 남기고, 없으면 끊습니다. 이런 통화는 ended_reason voicemail로 끝나고, 통화한 시간만큼 과금되며, 분석이나 알림은 하지 않습니다.
캠페인에서는 음성사서함으로 간 번호도 받지 않은 번호처럼 다시 걸고, 메시지는 마지막 시도에서만 남기므로 같은 메시지를 두 번 받는 사람은 없습니다.
캠페인이든 POST /api/v1/voice/calls든 모든 발신 통화는 먼저 워크스페이스의 수신 거부 목록을 확인합니다. 목록에 있는 번호로는 절대 걸지 않습니다. API는 code do_not_call과 함께 409로 답하고, 캠페인은 그 연락처를 outcome do_not_call인 canceled로 표시하고 다음으로 넘어갑니다.
에이전트가 건 통화에서 상대가 다시 전화하지 말라고 하면 에이전트가 직접 그 번호를 목록에 넣고 상대에게 알리며, call.do_not_call Webhook이 전송됩니다. 번호는 캠페인 → 수신 거부 목록 또는 API로도 추가하고 삭제할 수 있습니다.
curl https://evasay.com/api/v1/voice/do-not-call \
-X POST \
-H "Authorization: Bearer sk-your-key" \
-H "Content-Type: application/json" \
-d '{ "phones": ["+14155550100"], "note": "Asked by email" }'
번호는 국제 형식이며 한 번에 최대 1,000개입니다. GET /api/v1/voice/do-not-call은 최신순으로 목록을 보여 주며(search, limit, page), 각각 source(call, dashboard 또는 api)가 있습니다. DELETE /api/v1/voice/do-not-call/%2B14155550100은 하나를 다시 빼지만, 그 사람이 전화 받기에 동의했을 때만 하세요.