Поток данных Salesforce в облачные таблицы Google BigQuery - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь сделать APEX Trigger Callout, используя POST для Google Cloud.Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда срабатывает триггер, я мог видеть, что аутентификация проходит нормально, но сообщение приходит как «Не определено» только из журналов драйвера стека, поэтому облачная функция завершится ошибкой, поскольку сообщение должно быть в формате JSON.Не уверен, почему это происходит. Я довольно новичок в Salesforce. Пожалуйста, предоставьте некоторые советы по этому вопросу.Если я тестирую облачную функцию напрямую (используя опцию «Тестирование внутри облачной функции»), я вижу, что вставка происходит в таблицу BigQuery, как и ожидалось, но из триггера Salesforce кажется, что сообщение не перехватывается должным образом.Коды PFB, используемые в Salesforce. Ожидается то же сообщение, которое мы вставляем в таблицу LEAD в Salesforce в качестве запроса API Rest

Класс Salesforce:

Public class Callout {
@future(callout=true)
Public static void httpcallout(){
Lead c = [Select Name from Lead Limit 1] ;
system.debug('Halo Trigger');
JSONGenerator gen = JSON.createGenerator(true);   
gen.writeStartObject();     
gen.writeStringField('Name', c.Name);
gen.writeEndObject();   
String jsonS = gen.getAsString();
System.debug('jsonMaterials'+jsonS);
String endpoint = 'https://us-central1-valid-weaver- 235212.cloudfunctions.net/Salesforce-GCP';
HttpRequest req = new HttpRequest();
req.setEndpoint(endpoint);
req.setMethod('POST');
req.setbody(jsonS);
Http http = new Http();
HTTPResponse response = http.send(req);
}
} 

Триггер Salesforce

trigger SFGCP on Lead (after insert) {
callout.httpcallout();
system.debug('Hello');
}

Отладка в Salesforce

Lead c = new Lead(Company ='Test',LastName='Admin');
insert c;

1 Ответ

0 голосов
/ 21 мая 2019

Ниже код отлично работает с некоторыми незначительными изменениями в облачной функции.Спасибо

Public class Callout {
    @future(callout=true)
    Public static void httpcallout()
    {
        Lead c = [select Name, LeadSource, Company from Lead order by createdDate DESC limit 1] ;
        system.debug('Halo Trigger');
        JSONGenerator gen = JSON.createGenerator(true);   
        gen.writeStartObject();     
        gen.writeStringField('Name', c.Name);
        gen.writeStringField('LeadSource', c.LeadSource);
        gen.writeStringField('Company', c.Company);
        gen.writeEndObject();   
        String jsonS = gen.getAsString();
        System.debug('jsonMaterials'+jsonS);
        String endpoint = 'https://us-central1-valid-weaver-235212.cloudfunctions.net    /Salesforce-GCP';
        HttpRequest req = new HttpRequest();
        req.setEndpoint(endpoint);
        req.setMethod('POST');
        req.setbody(jsonS);
        Http http = new Http();
        HTTPResponse response = http.send(req);
    }
}
...