9namespace Bitrix\Sender\Integration\Seo\Ads;
12use Bitrix\Main\Localization\Loc;
13use Bitrix\Main\Web\Json;
14use Bitrix\Sender\Entity;
15use Bitrix\Sender\Message;
16use Bitrix\Sender\Message\EventResult;
17use Bitrix\Sender\Message\iMarketing;
18use Bitrix\Sender\Message\Result;
19use Bitrix\Seo\Marketing;
51 return Loc::getMessage(
'SENDER_INTEGRATION_SEO_MESSAGE_NAME_ADS_FACEBOOK');
56 $this->configuration->setArrayOptions(
60 'code' =>
'CLIENT_ID',
72 'code' =>
'ACCOUNT_ID',
73 'name' => Loc::getMessage(
'SENDER_INTEGRATION_SEO_MESSAGE_CONFIG_ACCOUNT_ID'),
78 'code' =>
'INSTAGRAM_ACCOUNT_ID',
84 'code' =>
'PERMALINK',
89 'code' =>
'TARGET_URL',
94 'code' =>
'AUDIENCE_ID',
108 'code' =>
'DURATION',
118 'code' =>
'AD_SET_ID',
123 'code' =>
'CAMPAIGN_ID',
128 'code' =>
'CREATIVE_ID',
138 'code' =>
'INTERESTS',
153 'code' =>
'AGE_FROM',
163 'code' =>
'MEDIA_ID',
168 'code' =>
'INSTAGRAM_ACTOR_ID',
173 'code' =>
'IMAGE_URL',
178 'code' =>
'AUDIENCE_PHONE_ID',
183 'code' =>
'AUDIENCE_EMAIL_ID',
200 $adsType = self::CODE;
207 if (
$type == $adsType)
231 if (!$this->configuration->hasOptions())
236 Entity\Message::create()
238 ->loadConfiguration($id, $this->configuration);
243 $this->configuration->setView(
254 $autoRemoveDays =
$configuration->getOption(
'AUTO_REMOVE_DAY_NUMBER') ?
255 $configuration->getOption(
'AUTO_REMOVE_DAY_NUMBER')->getValue() :
null;
257 $GLOBALS[
'APPLICATION']->IncludeComponent(
258 'bitrix:seo.ads.builder',
261 'INPUT_NAME_PREFIX' =>
'CONFIGURATION_',
262 'CONTAINER_NODE_ID' => $containerNodeId,
264 'SUBTYPE' => $self->getAdsType(),
265 'ACCOUNT_ID' =>
$configuration->getOption(
'ACCOUNT_ID')->getValue(),
266 'CLIENT_ID' =>
$configuration->getOption(
'CLIENT_ID')->getValue(),
267 'AUTO_REMOVE_DAY_NUMBER' => $autoRemoveDays,
268 'JS_DESTROY_EVENT_NAME' =>
'',
269 'TITLE_NODE_SELECTOR' =>
'[data-role="letter-title"]',
289 return array(static::CODE);
306 $body =
$config->getOption(
'BODY')->getValue();
307 $targetUrl =
$config->getOption(
'TARGET_URL')->getValue();
308 $campaignName =
$config->getOption(
'TITLE')->getValue();
314 new Error(Loc::getMessage(
'SENDER_INTEGRATION_SEO_MESSAGE_ERROR_NO_CLIENT'))
320 if(!filter_var($targetUrl, FILTER_VALIDATE_URL))
324 new Error(Loc::getMessage(
'SENDER_INTEGRATION_SEO_MESSAGE_ERROR_NO_TARGET_URL'))
331 [
'CODE' =>
'utm_source',
'VALUE' =>
'b24_sender_'.static::CODE],
332 [
'CODE' =>
'utm_medium',
'VALUE' =>
'ads'],
333 [
'CODE' =>
'utm_campaign',
'VALUE' => $campaignName]
336 if (!mb_strpos($targetUrl,
'b24_sender_'.static::CODE))
339 foreach($utmMarks as $utmMark)
341 $preparedMarks[$utmMark[
'CODE']] = $utmMark[
'VALUE'];
344 $config->getOption(
'TARGET_URL')->setValue(sprintf(
'%s/?%s',$targetUrl, http_build_query($preparedMarks)));
347 return Entity\Message::create()
350 ->saveConfiguration($this->configuration);
373 return Entity\Message::create()
375 ->copyConfiguration($id);
398 $accountId =
$config->get(
'ACCOUNT_ID');
399 $instagramActorId =
$config->get(
'INSTAGRAM_ACTOR_ID');
400 $permalink =
$config->get(
'PERMALINK');
401 $targetUrl =
$config->get(
'TARGET_URL');
402 $campaignId =
$config->get(
'CAMPAIGN_ID');
403 $adSetId =
$config->get(
'AD_SET_ID');
404 $creativeId =
$config->get(
'CREATIVE_ID');
406 $budget =
$config->get(
'BUDGET');
407 $duration =
$config->get(
'DURATION');
408 $adsId =
$config->get(
'ADS_ID');
411 $imageUrl =
$config->get(
'IMAGE_URL');
412 $audienceId =
$config->get(
'AUDIENCE_ID');
413 $mediaId =
$config->get(
'MEDIA_ID');
414 $phoneAudienceId =
$config->get(
'AUDIENCE_PHONE_ID');
415 $emailAudienceId =
$config->get(
'AUDIENCE_EMAIL_ID');
416 $ageFrom =
$config->get(
'AGE_FROM');
417 $ageTo =
$config->get(
'AGE_TO');
418 $genders =
$config->get(
'GENDERS') ? Json::decode(
$config->get(
'GENDERS')) : [];
419 $interests =
$config->get(
'INTERESTS') ? Json::decode(
$config->get(
'INTERESTS')) : [];
420 $regions =
$config->get(
'REGIONS') ? Json::decode(
$config->get(
'REGIONS')) : [];
427 'accountId' => $accountId,
428 'instagramAccountId' => $instagramActorId,
430 'permalink' => $permalink,
431 'targetUrl' => $targetUrl,
432 'mediaId' => $mediaId,
433 'imageUrl' => $imageUrl,
434 'audience' => $audienceId,
435 'campaignId' => $campaignId,
436 'adSetId' => $adSetId,
437 'creativeId' => $creativeId,
438 'audienceId' => $audienceId,
439 'phoneAudienceId' => $phoneAudienceId,
440 'emailAudienceId' => $emailAudienceId,
441 'regions' => $regions,
442 'interests' => $interests,
443 'genders' => $genders,
445 'ageFrom' => $ageFrom,
447 'budget' => ($budget?: 100) * 100,
448 'duration' => $duration,
449 'type' => static::CODE,
452 'status' => self::STATUS_ACTIVE
460 $config->set(
'STATUS', self::STATUS_ACTIVE);
467 $responseResult = json_decode(
$response[
'RESULT'],
true);
470 $errors[] = new \Bitrix\Main\Error($responseResult[
'error'][
'message']??
'');
if(!Loader::includeModule('messageservice')) $provider
setConfigurationOptions()
loadConfiguration($id=null)
saveConfiguration(Message\Configuration $configuration)
static getAdsProvider($adsType, $clientId=null)
static getProviders(array $types=null)
static createCampaign($type, $data)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$GLOBALS['____1690880296']