Skip to content

Commit

Permalink
Merge pull request #143 from BFoucher/new-supported-tags
Browse files Browse the repository at this point in the history
add support of new facebook tags
  • Loading branch information
ker0x authored Jan 27, 2020
2 parents 3ad45c2 + 34f2c6e commit 56d8218
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 2 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@ The Messenger library follows [SemVer](http://semver.org/).

## 3.x

**Changelog** (since [`3.3.0`](https://github.com/ker0x/messenger/compare/3.3.0...3.3.1))

- 3.3.1 (2020-01)
- Add Support of `CONFIRMED_EVENT_UPDATE` and `POST_PURCHASE_UPDATE` message tags.
- Deprecated old message tags which will be disabled on March 4th, 2020 (see: [Current Supported Tags](https://developers.facebook.com/docs/messenger-platform/send-messages/message-tags#current_supported_tags))

**Changelog** (since [`3.2.0`](https://github.com/ker0x/messenger/compare/3.2.0...3.3.0))

- 3.3.0 (2019-11)
Expand Down
37 changes: 36 additions & 1 deletion src/Helper/ValidatorTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -196,10 +196,20 @@ protected function isValidNotificationType(string $notificationType): void
protected function isValidTag(string $tag, $message = null): void
{
$allowedTag = $this->getAllowedTag();
$deprecatedTag = $this->getDeprecatedTags();
if (!\in_array($tag, $allowedTag, true)) {
throw new InvalidKeyException(sprintf('tag must be either "%s".', implode(', ', $allowedTag)));
}

if (\in_array($tag, $deprecatedTag, true)) {
$message = sprintf('The %s tag is deprecated, use %s, %s, %s instead.',
$tag,
SendInterface::TAG_CONFIRMED_EVENT_UPDATE,
SendInterface::TAG_POST_PURCHASE_UPDATE,
SendInterface::TAG_ACCOUNT_UPDATE);
@trigger_error($message, E_USER_DEPRECATED);
}

if ($tag === SendInterface::TAG_ISSUE_RESOLUTION && $message !== null && !$message instanceof GenericTemplate) {
throw new InvalidClassException(sprintf('message must be an instance of %s if tag is set to %s.', GenericTemplate::class, SendInterface::TAG_ISSUE_RESOLUTION));
}
Expand All @@ -224,6 +234,32 @@ protected function getAllowedNotificationType(): array
}

protected function getAllowedTag(): array
{
return [
SendInterface::TAG_CONFIRMED_EVENT_UPDATE,
SendInterface::TAG_POST_PURCHASE_UPDATE,
SendInterface::TAG_ACCOUNT_UPDATE,
//Tags supported until March 4th, 2020.
SendInterface::TAG_BUSINESS_PRODUCTIVITY,
SendInterface::TAG_COMMUNITY_ALERT,
SendInterface::TAG_CONFIRMED_EVENT_REMINDER,
SendInterface::TAG_NON_PROMOTIONAL_SUBSCRIPTION,
SendInterface::TAG_PAIRING_UPDATE,
SendInterface::TAG_APPLICATION_UPDATE,
SendInterface::TAG_PAYMENT_UPDATE,
SendInterface::TAG_PERSONAL_FINANCE_UPDATE,
SendInterface::TAG_SHIPPING_UPDATE,
SendInterface::TAG_RESERVATION_UPDATE,
SendInterface::TAG_ISSUE_RESOLUTION,
SendInterface::TAG_APPOINTMENT_UPDATE,
SendInterface::TAG_GAME_EVENT,
SendInterface::TAG_TRANSPORTATION_UPDATE,
SendInterface::TAG_FEATURE_FUNCTIONALITY_UPDATE,
SendInterface::TAG_TICKET_UPDATE,
];
}

protected function getDeprecatedTags(): array
{
return [
SendInterface::TAG_BUSINESS_PRODUCTIVITY,
Expand All @@ -232,7 +268,6 @@ protected function getAllowedTag(): array
SendInterface::TAG_NON_PROMOTIONAL_SUBSCRIPTION,
SendInterface::TAG_PAIRING_UPDATE,
SendInterface::TAG_APPLICATION_UPDATE,
SendInterface::TAG_ACCOUNT_UPDATE,
SendInterface::TAG_PAYMENT_UPDATE,
SendInterface::TAG_PERSONAL_FINANCE_UPDATE,
SendInterface::TAG_SHIPPING_UPDATE,
Expand Down
2 changes: 2 additions & 0 deletions src/SendInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ interface SendInterface
public const TAG_TRANSPORTATION_UPDATE = 'TRANSPORTATION_UPDATE';
public const TAG_FEATURE_FUNCTIONALITY_UPDATE = 'FEATURE_FUNCTIONALITY_UPDATE';
public const TAG_TICKET_UPDATE = 'TICKET_UPDATE';
public const TAG_CONFIRMED_EVENT_UPDATE = 'CONFIRMED_EVENT_UPDATE';
public const TAG_POST_PURCHASE_UPDATE = 'POST_PURCHASE_UPDATE';

public const MESSAGING_TYPE_RESPONSE = 'RESPONSE';
public const MESSAGING_TYPE_UPDATE = 'UPDATE';
Expand Down
2 changes: 1 addition & 1 deletion tests/TestCase/Api/SendTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -138,7 +138,7 @@ public function testBadNotificationType(): void
public function testBadTagType(): void
{
$this->expectException(MessengerException::class);
$this->expectExceptionMessage('tag must be either "BUSINESS_PRODUCTIVITY, COMMUNITY_ALERT, CONFIRMED_EVENT_REMINDER, NON_PROMOTIONAL_SUBSCRIPTION, PAIRING_UPDATE, APPLICATION_UPDATE, ACCOUNT_UPDATE, PAYMENT_UPDATE, PERSONAL_FINANCE_UPDATE, SHIPPING_UPDATE, RESERVATION_UPDATE, ISSUE_RESOLUTION, APPOINTMENT_UPDATE, GAME_EVENT, TRANSPORTATION_UPDATE, FEATURE_FUNCTIONALITY_UPDATE, TICKET_UPDATE".');
$this->expectExceptionMessage('tag must be either "CONFIRMED_EVENT_UPDATE, POST_PURCHASE_UPDATE, ACCOUNT_UPDATE, BUSINESS_PRODUCTIVITY, COMMUNITY_ALERT, CONFIRMED_EVENT_REMINDER, NON_PROMOTIONAL_SUBSCRIPTION, PAIRING_UPDATE, APPLICATION_UPDATE, PAYMENT_UPDATE, PERSONAL_FINANCE_UPDATE, SHIPPING_UPDATE, RESERVATION_UPDATE, ISSUE_RESOLUTION, APPOINTMENT_UPDATE, GAME_EVENT, TRANSPORTATION_UPDATE, FEATURE_FUNCTIONALITY_UPDATE, TICKET_UPDATE".');
$this->sendApi->message('1008372609250235', 'Hello World!', [
'notification_type' => SendInterface::NOTIFICATION_TYPE_REGULAR,
'tag' => 'INVOICE_UPDATE',
Expand Down

0 comments on commit 56d8218

Please sign in to comment.