Salesforce 数据流式传输到 google 个云 bigQuery 表

Salesforce data streaming to google cloud bigQuery tables

我正在尝试使用 POST 对 Google 云进行 APEX 触发器标注。我遇到的问题是:每当触发发生时,我都会看到身份验证正常进行,但消息仅来自 Stackdriver 日志 "Undefined",因此云功能将失败,因为消息应该在 JSON 格式。不知道为什么会这样。我对 Salesforce 还很陌生。请提供一些提示。

如果我直接测试云函数(使用云函数中的测试选项),我会按预期看到对 BigQuery table 的插入,但从 Salesforce 触发器看来,消息没有被正确捕获。 Salesforce.Expecting 中使用的 PFB 代码与我们在 Salesforce 中作为 Rest API 请求

插入到 LEAD table 中的消息相同

销售人员Class:

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;

下面的代码在 Cloud Function 中进行了一些小改动后工作正常。谢谢

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);
    }
}