• Модуль: salescenter
  • Путь к файлу: ~/bitrix/modules/salescenter/lib/integration/crmmanager.php
  • Класс: BitrixSalesCenterIntegrationCrmManager
  • Вызов: CrmManager::sendPaymentBySms
public function sendPaymentBySms(OrderPayment $payment, array $sendingInfo, OrderShipment $shipment = null)
{
	/** @var OrderOrder $order */
	$order = $payment->getOrder();

	$entityCommunication = $order->getContactCompanyCollection()->getEntityCommunication();
	if (!$entityCommunication)
	{
		return false;
	}

	$messageTo = $order->getContactCompanyCollection()->getEntityCommunicationPhone();
	if (!$messageTo)
	{
		return false;
	}

	$paymentLink = LandingManager::getInstance()->getUrlInfoByOrder(
		$order,
		['paymentId' => $payment->getId()]
	)['shortUrl'];

	$messageBody = str_replace(
		'#LINK#',
		$paymentLink,
		$sendingInfo['text']
	);

	$senderId = (mb_strpos($sendingInfo['provider'], '|') === false) ? $sendingInfo['provider'] : 'rest';

	$result = CrmMessageSenderMessageSender::send(
		[
			CrmIntegrationNotificationsManager::getSenderCode() => [
				'ACTIVITY_PROVIDER_TYPE_ID' => BaseMessage::PROVIDER_TYPE_SALESCENTER_PAYMENT_SENT,
				'TEMPLATE_CODE' => 'ORDER_LINK',
				'PLACEHOLDERS' => [
					'NAME' => $entityCommunication->getCustomerName(),
					'URL' => $paymentLink,
				],
			],
			CrmIntegrationSmsManager::getSenderCode() => [
				'ACTIVITY_PROVIDER_TYPE_ID' => BaseMessage::PROVIDER_TYPE_SALESCENTER_PAYMENT_SENT,
				'MESSAGE_BODY' => $messageBody,
				'SENDER_ID' => $senderId,
				'MESSAGE_FROM' => $senderId === 'rest' ? $sendingInfo['provider'] : null,
			]
		],
		[
			'COMMON_OPTIONS' => [
				'PHONE_NUMBER' => $messageTo,
				'USER_ID' => $order->getField('RESPONSIBLE_ID'),
				'ADDITIONAL_FIELDS' => [
					'ENTITY_TYPE' => $entityCommunication::getEntityTypeName(),
					'ENTITY_TYPE_ID' => $entityCommunication::getEntityType(),
					'ENTITY_ID' => $entityCommunication->getField('ENTITY_ID'),
					'ENTITIES' => [
						'ORDER' => $order,
						'PAYMENT' => $payment,
						'SHIPMENT' => $shipment,
					],
					'BINDINGS' => ActivityBindingsMaker::makeByPayment(
						$payment,
						[
							'extraBindings' => [
								[
									'TYPE_ID' => $entityCommunication::getEntityType(),
									'ID' => $entityCommunication->getField('ENTITY_ID')
								]
							]
						]
					),
					'ACTIVITY_AUTHOR_ID' => $order->getField('RESPONSIBLE_ID'),
					'ACTIVITY_DESCRIPTION' => $messageBody,
					'HIGHLIGHT_URL' => $paymentLink,
				]
			]
		]
	);

	return $result->isSuccess();
}