Enable a bot to reject an incoming call. The incoming call request can be an invite from a participant in a group call or a peer-to-peer call. If an invite to a group call is received, the notification will contain the chatInfo and meetingInfo parameters.
The bot is expected to answer or reject the call before the call times out. The current timeout value is 15 seconds.
This API does not end existing calls that have already been answered. Use delete call to end a call.
Permissions
One of the following permissions is required to call this API. To learn more, including how to choose permissions, see Permissions.
Permission type
Permissions (from least to most privileged)
Delegated (work or school account)
Not Supported
Delegated (personal Microsoft account)
Not Supported
Application
None
HTTP request
POST /communications/calls/{id}/reject
Request headers
Name
Description
Authorization
Bearer {token}. Required.
Content-type
application/json. Required.
Request body
In the request body, provide a JSON object with the following parameters.
Parameter
Type
Description
reason
String
The rejection reason. Possible values are None, Busy and Forbidden
callbackUri
String
This allows bots to provide a specific callback URI for the current call to receive later notifications. If this property has not been set, the bot's global callback URI will be used instead. This must be https.
Response
If successful, this method returns a 202 Accepted response code. It does not return anything in the response body.
Examples
The following examples show how to call this API.
Example 1: Reject an incoming call with 'Busy' reason
POST https://graph.microsoft.com/v1.0/communications/calls/57dab8b1-894c-409a-b240-bd8beae78896/reject
Content-Type: application/json
Content-Length: 24
{
"reason": "busy"
}
// Code snippets are only available for the latest version. Current version is 5.x
var graphClient = new GraphServiceClient(requestAdapter);
var requestBody = new Microsoft.Graph.Communications.Calls.Item.Reject.RejectPostRequestBody
{
Reason = RejectReason.Busy,
};
await graphClient.Communications.Calls["{call-id}"].Reject.PostAsync(requestBody);
<?php
// THIS SNIPPET IS A PREVIEW VERSION OF THE SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new RejectPostRequestBody();
$requestBody->setReason(new RejectReason('busy'));
$graphServiceClient->communications()->calls()->byCallId('call-id')->reject()->post($requestBody)->wait();
# THE PYTHON SDK IS IN PREVIEW. FOR NON-PRODUCTION USE ONLY
graph_client = GraphServiceClient(request_adapter)
request_body = RejectPostRequestBody(
reason = RejectReason.Busy,
)
await graph_client.communications.calls.by_call_id('call-id').reject.post(body = request_body)
POST https://graph.microsoft.com/v1.0/communications/calls/57dab8b1-894c-409a-b240-bd8beae78896/reject
Content-Type: application/json
Content-Length: 24
{
"reason": "none"
}
// Code snippets are only available for the latest version. Current version is 5.x
var graphClient = new GraphServiceClient(requestAdapter);
var requestBody = new Microsoft.Graph.Communications.Calls.Item.Reject.RejectPostRequestBody
{
Reason = RejectReason.None,
};
await graphClient.Communications.Calls["{call-id}"].Reject.PostAsync(requestBody);
<?php
// THIS SNIPPET IS A PREVIEW VERSION OF THE SDK. NON-PRODUCTION USE ONLY
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new RejectPostRequestBody();
$requestBody->setReason(new RejectReason('none'));
$graphServiceClient->communications()->calls()->byCallId('call-id')->reject()->post($requestBody)->wait();
# THE PYTHON SDK IS IN PREVIEW. FOR NON-PRODUCTION USE ONLY
graph_client = GraphServiceClient(request_adapter)
request_body = RejectPostRequestBody(
reason = RejectReason.None,
)
await graph_client.communications.calls.by_call_id('call-id').reject.post(body = request_body)