• Модуль: messageservice
  • Путь к файлу: ~/bitrix/modules/messageservice/lib/sender/sms/twilio.php
  • Класс: BitrixMessageServiceSenderSmsTwilio
  • Вызов: Twilio::sendMessage
public function sendMessage(array $messageFields): SendMessage
{
	$sid = $this->getOption('account_sid');

	if (!$sid)
	{
		$result = new SendMessage();
		$result->addError(new Error(Loc::getMessage('MESSAGESERVICE_SENDER_SMS_TWILIO_CAN_USE_ERROR')));
		return $result;
	}

	$eventResults = self::fireEventBeforeMessageSend($messageFields);
	foreach ($eventResults as $eventResult)
	{
		$eventParams = $eventResult->getParameters();

		if ($eventResult->getType() === BitrixMainEventResult::ERROR)
		{
			$result = new SendMessage();
			if ($eventParams && is_string($eventParams))
			{
				$result->addError(new Error($eventParams));
			}
			else
			{
				$result->addError(new Error(Loc::getMessage("MESSAGESERVICE_SENDER_SMS_TWILIO_MESSAGE_HAS_NOT_BEEN_SENT")));
			}
			return $result;
		}

		if (is_array($eventParams))
		{
			$messageFields = array_merge($messageFields, $eventParams);
		}
	}

	if (isset($messageFields['MESSAGE_FROM_ALPHANUMERIC']))
	{
		$apiResult = $this->sendMessageByAlphanumericNumber($sid, $messageFields);
		if (
			!$apiResult->isSuccess()
			&& $this->checkSupportErrorAlphanumericNumber($apiResult->getErrorCollection())
		)
		{
			$apiResult = $this->sendMessageByNumber($sid, $messageFields);
		}
	}
	else
	{
		$apiResult = $this->sendMessageByNumber($sid, $messageFields);
	}

	$result = new SendMessage();
	$result->setServiceRequest($apiResult->getHttpRequest());
	$result->setServiceResponse($apiResult->getHttpResponse());

	if (!$apiResult->isSuccess())
	{
		$result->addErrors($apiResult->getErrors());
	}
	else
	{
		$resultData = $apiResult->getData();
		if (isset($resultData['sid']))
		{
			$result->setExternalId($resultData['sid']);
		}
		$result->setAccepted();
	}

	return $result;
}