The <Reject>
verb rejects an incoming call to your Twilio number without billing you. This is very useful for blocking unwanted calls.
If the first verb in a TwiML document is <Reject>
, Twilio will not pick up the call. The call ends with a status of busy
or no-answer
, depending on the verb's reason
attribute. Any verbs after <Reject>
are unreachable and ignored.
Using <Reject>
as the first verb in your response is the only way to prevent Twilio from answering a call. Any other response will result in an answered call and your account will be billed.
If you are using Twilio's deprecated v2008 API, <Reject>
will result in a billing event, because the call's state will transition from inbound
to completed
to reject the call. Using <Reject>
with the v2010 API, as described in this document, will not result in a billing event. Learn how to upgrade from Twilio's v2008 API to the v2010 API here.
The <Reject>
verb supports the following attributes that modify its behavior:
Attribute Name | Allowed Values | Default Value |
---|---|---|
reason | rejected , busy | rejected |
The reason
attribute takes the values rejected
and busy
. This tells Twilio what message to play when rejecting a call. Selecting busy
will play a busy
signal to the caller, while selecting rejected
will play a standard not-in-service response. The default is rejected
.
This is a preference and what is actually played back is determined by the caller's service provider as they dictate what they want to playback to the caller.
You can't nest any verbs within <Reject>
and you can't nest <Reject>
in any other verbs.
1const VoiceResponse = require('twilio').twiml.VoiceResponse;234const response = new VoiceResponse();5response.reject({6reason: 'busy'7});89console.log(response.toString());
1<?xml version="1.0" encoding="UTF-8"?>2<Response>3<Reject reason="busy" />4</Response>