Я хочу интегрировать отдел продаж с ActiveCampighn, используя ключ API и URL-адрес ActiveCampighn с помощью метода Http Post. Я хочу создать контакт из Salesforce для активной кампании. Я попытался с приведенным ниже фрагментом кода и получил статус 200 (успешно). Но контакт недоступен в Active Campaign.

HttpRequest req = new HttpRequest();
req.setEndpoint('http://navsoft12350.activehosted.com/admin/api.php?api_action=contact_add');
req.setMethod('POST');
req.setHeader('Authorization', 'key={!$Credential.Password}');
string body = ' "contact": [ ' +
' { ' +
' "id": 12, ' +
' "email": "jsmith@example.com", ' +
' "firstName": "John", ' +
' "lastName": "smith", ' +
' "p[123]": "123", ' +
' "phone": 122222222' +
' }' +
' ]';
req.setBody(body);
Http http = new Http();
HTTPResponse res = http.send(req);

Пожалуйста, предоставьте мне любое возможное решение этого.

0
Sam 9 Янв 2020 в 10:41

1 ответ

Лучший ответ

Параметры API должны быть закодированы в URL. Они не принимают никаких других входных форматов, таких как JSON.

https://www.activecampaign.com/api/example.php?call=contact_add

See the image

Вот пример добавления контакта в активную кампанию из Salesforce Apex.

String key = 'Get FROM https://{{Host}}.activehosted.com/app/settings/developer';

    String authUrl = 'https://{{Host}.api-us1.com/admin/api.php?api_action=contact_add&api_key='+key;
    Http http = new Http();
    HttpRequest request = new HttpRequest();
    request.setEndpoint(authUrl);
    request.setMethod('POST');
    request.setHeader('Content-Type', 'application/x-www-form-urlencoded');
    String payload = 'email='+EncodingUtil.urlEncode('test@example.com','UTF-8')+'&FirstName='+EncodingUtil.urlEncode('FirstName','UTF-8')+'&last_name='+EncodingUtil.urlEncode('last_name','UTF-8')+'&customer_acct_name='+EncodingUtil.urlEncode('Acme, Inc.','UTF-8');
    System.debug(payload);

    request.setBody(payload);
    HttpResponse response = http.send(request);

    if (response.getStatusCode() != 200) {
        System.debug('The status code returned was not expected: ' + response.getStatusCode() + ' ' + response.getStatus());
    } else {
        System.debug(response.getBody());
    }
1
Nigam Goyal 9 Янв 2020 в 11:51
!!Большое спасибо, сэр. Это работает.
 – 
Sam
9 Янв 2020 в 12:26