У меня есть требование, где я хочу добавить политику фильтра номеров (UNIX timestamp) к подписке устройства, и при публикации уведомления в теме добавить атрибуты сообщения с политикой диапазона, но я получаю внутренний ответ сервера из AWS SDK.
Вот что я делаю при публикации сообщения на устройстве, подписанном в определенное время,
$filterMessageAttributes = [
"DataType" => "Binary",
"BinaryValue" => json_encode([
"numeric" => [
">=",
$filterStartUnixTime,
"<=",
$filterEndUnixTime
]
])
];
$res = $sns->publish([
'Message' => json_encode($message),
'TopicArn' => $appTopicARN,
'MessageStructure' => 'json',
'MessageAttributes' => [
"subscription_timestamp" => $filterMessageAttributes
]
]);
Это работает нормально, но подписка устройства на тему SNS и установка атрибутов подписки дает 500 код ответа от AWS
$res = $sns->createPlatformEndpoint([
"PlatformApplicationArn" => "<android app arn>",
"Token" => "<device token>",
"CustomUserData" => "<some user attributes>"]);
$endPointARN = $res->get("EndpointArn");
$res = $sns->subscribe([
"TopicArn" => "<android topic arn>",
"Protocol" => "application",
"Endpoint" => $endPointARN
]);
/**
* Add unix timestamp attribute to the above subscription
*/
$sns->setSubscriptionAttributes([
// SubscriptionArn is required
'SubscriptionArn' => $res->get("SubscriptionArn"),
// AttributeName is required
'AttributeName' => 'FilterPolicy',
'AttributeValue' => json_encode([
"subscription_timestamp" => [time()]
])]);
Ниже приведен ответ от AWS,
Error executing "SetSubscriptionAttributes" on "https://sns.us-west-2.amazonaws.com"; AWS HTTP error: Server error: `POST https://sns.us-west-2.amazonaws.com` resulted in a `500 Internal Server Error` response: <ErrorResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/"> <Error> <Type>Receiver</Type> <Code>InternalF (truncated...) InternalFailure (server): - <ErrorResponse xmlns="http://sns.amazonaws.com/doc/2010-03-31/"> <Error> <Type>Receiver</Type> <Code>InternalFailure</Code> </Error> <RequestId><REQUESTID></RequestId> </ErrorResponse>
Версия PHP AWS SDK: «3.52.31»
Задача ещё не решена.
Других решений пока нет …