/** * Передача сообщения по 200 шт * * @param array $messages * @param SmsInterface[] $smsCollection Массив sms объектов * @param \DateTime|null $scheduledAt Дата для отложенной отправки сообщения * @param string $statusQueueName Название очереди статусов отправленных сообщений * * @return SmsInterface[] with defined status and code */ private function sendBulk(array $messages, array &$smsCollection, \DateTime $scheduledAt = null, $statusQueueName = 'default') { if (!$scheduledAt instanceof \DateTime) { $scheduledAt = new \DateTime(); } $scheduledAt->setTimezone(new \DateTimeZone('UTC')); $args = ['statusQueueName' => $statusQueueName, 'scheduleTime' => $scheduledAt->format('Y-m-d\\TH:i:s\\Z'), 'messages' => $messages]; $response = parent::send($args); foreach ($response['messages'] as $smsStatuses) { foreach ($smsCollection as $sms) { if ($sms->getId() != $smsStatuses['clientId']) { continue; } $status = strtolower(str_ireplace(' ', '_', $smsStatuses['status'])); $sms->setStatus($status); if (isset($smsStatuses['smscId'])) { $sms->setInternalId($smsStatuses['smscId']); } } } }