• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/lib/leadads/services/formfacebook.php
  • Класс: BitrixSeoLeadAdsServicesFormFacebook
  • Вызов: FormFacebook::add
public function add(array $data) : Response
{
	// https://developers.facebook.com/docs/marketing-api/guides/lead-ads/create/v2.9#create-forms
	$locale = $data['LOCALE'] ?? $this->getLocaleByLanguageId();
	$questions = static::convertFields($data['FIELDS']);
	$privacyPolicy = array(
		'url' => $data['PRIVACY_POLICY_URL']
	);

	$privacyPolicy['url'] = self::getPrivacyPolicyUrl();
	$contextCard = [
		'style' => 'PARAGRAPH_STYLE',
		'content' => [' '],
		'button_text' => $data['BUTTON_CAPTION']
	];
	if ($data['TITLE'])
	{
		$contextCard['title'] = $data['TITLE'];
	}
	if ($data['DESCRIPTION'])
	{
		$contextCard['content'] = [$data['DESCRIPTION']];
	}
	elseif ($data['TITLE'])
	{
		$contextCard['content'] = [$data['TITLE']];
	}

	$response = $this->getRequest()->send([
		'methodName' => 'leadads.form.create',
		'parameters' => [
			'page_id'=> $this->accountId,
			'params' => [
				'name' => $data['NAME'],
				'privacy_policy' => $privacyPolicy,
				'follow_up_action_url' => $data['SUCCESS_URL'],
				'locale' => mb_strtoupper($locale),
				'context_card' => $contextCard,
				'questions' => $questions
			]
		]
	]);

	if (!$response->isSuccess() || !$formId = $response->getData()["id"] ?? null)
	{
		return $response;
	}
	$response->setId($formId);

	$subscribeResult = $this->subscribeAppToPageEvents();
	if (!$subscribeResult->isSuccess())
	{
		$response->addError(new Error('Can not subscribe App to Page events.'));
		return $response;
	}

	if(!$this->registerFormWebHook($formId))
	{
		$response->addError(new Error('Can not register Form web hook.'));
		return $response;
	}

	return $response;
}