#!/usr/bin/perl -w
use
lib
"$Bin/../../lib"
;
use
Google::Ads::GoogleAds::V13::Services::ConversionUploadService::CallConversion;
use
Google::Ads::GoogleAds::V13::Services::ConversionUploadService::CustomVariable;
my
$customer_id
=
"INSERT_CUSTOMER_ID_HERE"
;
my
$conversion_action_id
=
"INSERT_CONVERSION_ACTION_ID_HERE"
;
my
$caller_id
=
"INSERT_CALLER_ID_HERE"
;
my
$call_start_date_time
=
"INSERT_CALL_START_DATE_TIME_HERE"
;
my
$conversion_date_time
=
"INSERT_CONVERSION_DATE_TIME_HERE"
;
my
$conversion_value
=
"INSERT_CONVERSION_VALUE_HERE"
;
my
$conversion_custom_variable_id
=
undef
;
my
$conversion_custom_variable_value
=
undef
;
sub
upload_call_conversion {
my
(
$api_client
,
$customer_id
,
$conversion_action_id
,
$caller_id
,
$call_start_date_time
,
$conversion_date_time
,
$conversion_value
,
$conversion_custom_variable_id
,
$conversion_custom_variable_value
) =
@_
;
my
$call_conversion
=
Google::Ads::GoogleAds::V13::Services::ConversionUploadService::CallConversion
->new({
conversionAction
=>
Google::Ads::GoogleAds::V13::Utils::ResourceNames::conversion_action(
$customer_id
,
$conversion_action_id
),
callerId
=>
$caller_id
,
callStartDateTime
=>
$call_start_date_time
,
conversionDateTime
=>
$conversion_date_time
,
conversionValue
=>
$conversion_value
,
currencyCode
=>
"USD"
});
if
(
$conversion_custom_variable_id
&&
$conversion_custom_variable_value
) {
$call_conversion
->{customVariables} = [
Google::Ads::GoogleAds::V13::Services::ConversionUploadService::CustomVariable
->new({
conversionCustomVariable
=>
Google::Ads::GoogleAds::V13::Utils::ResourceNames::conversion_custom_variable(
$customer_id
,
$conversion_custom_variable_id
),
value
=>
$conversion_custom_variable_value
})];
}
my
$upload_call_conversions_response
=
$api_client
->ConversionUploadService()->upload_call_conversions({
customerId
=>
$customer_id
,
conversions
=> [
$call_conversion
],
partialFailure
=>
"true"
});
if
(
$upload_call_conversions_response
->{partialFailureError}) {
printf
"Partial error encountered: '%s'.\n"
,
$upload_call_conversions_response
->{partialFailureError}{message};
}
my
$uploaded_call_conversion
=
$upload_call_conversions_response
->{results}[0];
if
(
%$uploaded_call_conversion
) {
printf
"Uploaded call conversion that occurred at '%s' "
.
"for caller ID '%s' to the conversion action with resource name '%s'.\n"
,
$uploaded_call_conversion
->{callStartDateTime},
$uploaded_call_conversion
->{callerId},
$uploaded_call_conversion
->{conversionAction};
}
return
1;
}
if
(abs_path($0) ne abs_path(__FILE__)) {
return
1;
}
my
$api_client
= Google::Ads::GoogleAds::Client->new();
$api_client
->set_die_on_faults(1);
GetOptions(
"customer_id=s"
=> \
$customer_id
,
"conversion_action_id=i"
=> \
$conversion_action_id
,
"caller_id=s"
=> \
$caller_id
,
"call_start_date_time=s"
=> \
$call_start_date_time
,
"conversion_date_time=s"
=> \
$conversion_date_time
,
"conversion_value=f"
=> \
$conversion_value
,
"conversion_custom_variable_id=s"
=> \
$conversion_custom_variable_id
,
"conversion_custom_variable_value=s"
=> \
$conversion_custom_variable_value
);
pod2usage(2)
if
not check_params(
$customer_id
,
$conversion_action_id
,
$caller_id
,
$call_start_date_time
,
$conversion_date_time
,
$conversion_value
);
upload_call_conversion(
$api_client
,
$customer_id
=~ s/-//gr,
$conversion_action_id
,
$caller_id
,
$call_start_date_time
,
$conversion_date_time
,
$conversion_value
,
$conversion_custom_variable_id
,
$conversion_custom_variable_value
);