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);
}
}
我正在尝试使用 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);
}
}