Objective-C Dynamics CRM: Get Phone Calls Regarding an Account

Back to Index

Returns the subject, description, start date/time and activity ID for phone calls regarding an account. This example gets the phone calls regarding the Fourth Coffee account (accountid = b6a19cdd-88df-e311-b8e5-6c3be5a8b200).

Documentation: https://docs.microsoft.com/en-us/dynamics365/customer-engagement/web-api/phonecall?view=dynamics-ce-odata-9

CURL Command

curl -X GET https://my-dynamics-domain.api.crm.dynamics.com/api/data/v9.0/phonecalls \
  -H "Accept: application/json" \
  -H "OData-MaxVersion: 4.0"  \
  -H "OData-Version: 4.0" \
  -d "$filter=_regardingobjectid_value eq b6a19cdd-88df-e311-b8e5-6c3be5a8b200" \
  -d "$select=subject,description,actualstart,activityid" \
  -H "Authorization: Bearer DYNAMICS_CRM_ACCESS_TOKEN"

Objective-C Example

#import <CkoRest.h>
#import <CkoStringBuilder.h>
#import <CkoJsonObject.h>
#import <NSString.h>

CkoRest *rest = [[CkoRest alloc] init];
BOOL success;

//  URL: https://my-dynamics-domain.api.crm.dynamics.com/api/data/v9.0/phonecalls
BOOL bTls = YES;
int port = 443;
BOOL bAutoReconnect = YES;
success = [rest Connect: @"my-dynamics-domain.api.crm.dynamics.com" port: [NSNumber numberWithInt: port] tls: bTls autoReconnect: bAutoReconnect];
if (success != YES) {
    NSLog(@"%@%d",@"ConnectFailReason: ",[rest.ConnectFailReason intValue]);
    NSLog(@"%@",rest.LastErrorText);
    return;
}

[rest AddQueryParam: @"$filter" value: @"_regardingobjectid_value eq b6a19cdd-88df-e311-b8e5-6c3be5a8b200"];
[rest AddQueryParam: @"$select" value: @"subject,description,actualstart,activityid"];

[rest AddHeader: @"OData-MaxVersion" value: @"4.0"];
[rest AddHeader: @"Accept" value: @"application/json"];
[rest AddHeader: @"OData-Version" value: @"4.0"];
[rest AddHeader: @"Authorization" value: @"Bearer DYNAMICS_CRM_ACCESS_TOKEN"];

CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init];
success = [rest FullRequestNoBodySb: @"GET" uriPath: @"/api/data/v9.0/phonecalls" sb: sbResponseBody];
if (success != YES) {
    NSLog(@"%@",rest.LastErrorText);
    return;
}

int respStatusCode = [rest.ResponseStatusCode intValue];
if (respStatusCode >= 400) {
    NSLog(@"%@%d",@"Response Status Code = ",respStatusCode);
    NSLog(@"%@",@"Response Header:");
    NSLog(@"%@",rest.ResponseHeader);
    NSLog(@"%@",@"Response Body:");
    NSLog(@"%@",[sbResponseBody GetAsString]);
    return;
}

CkoJsonObject *jsonResponse = [[CkoJsonObject alloc] init];
[jsonResponse LoadSb: sbResponseBody];

int i;
int count_i;

NSString *odataContext = [jsonResponse StringOf: @"\"@odata.context\""];
i = 0;
count_i = [[jsonResponse SizeOfArray: @"value"] intValue];
while (i < count_i) {
    jsonResponse.I = [NSNumber numberWithInt: i];
    NSString *odataEtag = [jsonResponse StringOf: @"value[i].\"@odata.etag\""];
    NSString *subject = [jsonResponse StringOf: @"value[i].subject"];
    NSString *description = [jsonResponse StringOf: @"value[i].description"];
    NSString *actualstart = [jsonResponse StringOf: @"value[i].actualstart"];
    NSString *activityid = [jsonResponse StringOf: @"value[i].activityid"];
    i = i + 1;
}

Sample JSON Response Body

{
  "@odata.context": "https://mydomain.api.crm.dynamics.com/api/data/v9.0/$metadata#phonecalls(subject,description,actualstart,activityid)",
  "value": [
    {
      "@odata.etag": "W/\"1818469\"",
      "subject": "Discussed coffee bean pricing.",
      "description": "Discussed coffee bean pricing.",
      "actualstart": "2018-04-29T11:56:21Z",
      "activityid": "098af854-a44b-e811-a955-000d3a1ca612"
    }
  ]
}