Viewing file: OutboundMessage.php (4.85 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php
/** * Vonage Client Library for PHP * * @copyright Copyright (c) 2016-2020 Vonage, Inc. (http://vonage.com) * @license https://github.com/Vonage/vonage-php-sdk-core/blob/master/LICENSE.txt Apache License 2.0 */
declare(strict_types=1);
namespace Vonage\SMS\Message;
use InvalidArgumentException;
use function array_merge; use function is_null; use function strlen;
abstract class OutboundMessage implements Message { /** * @var ?string */ protected $accountRef;
/** * @var string */ protected $clientRef;
/** * @var ?string */ protected $deliveryReceiptCallback;
/** * @var string */ protected $from;
/** * @var int */ protected $messageClass;
/** * @var bool */ protected $requestDeliveryReceipt = true;
/** * @var string */ protected $to;
/** * TTL of the SMS delivery, in milliseconds * * @var int */ protected $ttl = 259200000;
/** * Type of message, set by the child class * * @var string */ protected $type;
public function __construct(string $to, string $from) { $this->to = $to; $this->from = $from; }
abstract public function toArray(): array;
public function getTtl(): int { return $this->ttl; }
/** * @return $this */ public function setTtl(int $ttl): self { if ($ttl < 20000 || $ttl > 604800000) { throw new InvalidArgumentException('SMS TTL must be in the range of 20000-604800000 milliseconds'); }
$this->ttl = $ttl;
return $this; }
public function getRequestDeliveryReceipt(): bool { return $this->requestDeliveryReceipt; }
/** * @return $this */ public function setRequestDeliveryReceipt(bool $requestDeliveryReceipt): self { $this->requestDeliveryReceipt = $requestDeliveryReceipt;
return $this; }
public function getDeliveryReceiptCallback(): ?string { return $this->deliveryReceiptCallback; }
/** * @return $this */ public function setDeliveryReceiptCallback(string $deliveryReceiptCallback): self { $this->deliveryReceiptCallback = $deliveryReceiptCallback; $this->setRequestDeliveryReceipt(true);
return $this; }
public function getMessageClass(): int { return $this->messageClass; }
/** * @return $this */ public function setMessageClass(int $messageClass): self { if ($messageClass < 0 || $messageClass > 3) { throw new InvalidArgumentException('Message Class must be 0-3'); }
$this->messageClass = $messageClass;
return $this; }
public function getClientRef(): string { return $this->clientRef; }
/** * @return $this */ public function setClientRef(string $clientRef): self { if (strlen($clientRef) > 40) { throw new InvalidArgumentException('Client Ref can be no more than 40 characters'); }
$this->clientRef = $clientRef;
return $this; }
/** * This adds any additional options to an individual SMS request * This allows the child classes to set their special request options, * and then filter through here for additional request options; */ protected function appendUniversalOptions(array $data): array { $data = array_merge($data, [ 'to' => $this->getTo(), 'from' => $this->getFrom(), 'type' => $this->getType(), 'ttl' => $this->getTtl(), 'status-report-req' => (int)$this->getRequestDeliveryReceipt(), ]);
if ($this->getRequestDeliveryReceipt() && !is_null($this->getDeliveryReceiptCallback())) { $data['callback'] = $this->getDeliveryReceiptCallback(); }
if (!is_null($this->messageClass)) { $data['message-class'] = $this->getMessageClass(); }
if ($this->accountRef) { $data['account-ref'] = $this->getAccountRef(); }
if ($this->clientRef) { $data['client-ref'] = $this->getClientRef(); }
return $data; }
public function getFrom(): string { return $this->from; }
public function getTo(): string { return $this->to; }
public function getAccountRef(): ?string { return $this->accountRef; }
/** * @return $this */ public function setAccountRef(string $accountRef): OutboundMessage { $this->accountRef = $accountRef;
return $this; }
public function getType(): string { return $this->type; }
public function setType(string $type): OutboundMessage { $this->type = $type;
return $this; } }
|