Trabalhar com notificações - Amazon WorkMail

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Trabalhar com notificações

Com a API de notificações por push do Amazon WorkMail, é possível receber notificações por push sobre alterações na sua caixa de correio, incluindo e-mails novos e atualizações do calendário. Você deve registrar as URLs (ou respondentes de notificação por push) para receber notificações. Com esse atributo, os desenvolvedores podem criar aplicativos responsivos para usuários do Amazon WorkMail, já que os aplicativos são notificados rapidamente sobre alterações na caixa de correio do usuário.

Para obter mais informações, consulte Assinaturas de notificações, eventos de caixa postal e EWS no Exchange.

Você pode assinar pastas específicas, como Caixa de entrada ou Calendário, ou todas as pastas para eventos de alteração de caixa de correio (incluindo e-mails novos, criados e modificados).

É possível usar bibliotecas clientes, como API Java do EWS ou a API gerenciado do EWS C# para acessar esse atributo. Um aplicativo completo de amostra de respondente por push, desenvolvido com o AWS Lambda e API Gateway (usando o AWS Serverless Framework), está disponível na página GitHub da AWS. O aplicativo usa a API Java EWS.

Veja a seguir um exemplo de solicitação de assinatura via push:

<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <soap:Body> <m:Subscribe xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"> <m:PushSubscriptionRequest> <t:FolderIds> <t:DistinguishedFolderId Id="inbox" /> </t:FolderIds> <t:EventTypes> <t:EventType>NewMailEvent</t:EventType> <t:EventType>CopiedEvent</t:EventType> <t:EventType>CreatedEvent</t:EventType> <t:EventType>DeletedEvent</t:EventType> <t:EventType>ModifiedEvent</t:EventType> <t:EventType>MovedEvent</t:EventType> </t:EventTypes> <t:StatusFrequency>1</t:StatusFrequency> <t:URL>https://YOUR_PUSH_RESPONDER_URL</t:URL> </m:PushSubscriptionRequest> </m:Subscribe> </soap:Body> </soap:Envelope>

Veja a seguir um resultado bem-sucedido de solicitação de assinatura:

<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Header xmlns="http://schemas.xmlsoap.org/soap/envelope/"> <ServerVersionInfo xmlns="http://schemas.microsoft.com/exchange/services/2006/types" MajorVersion="14" MinorVersion="2" MajorBuildNumber="390" Version="Exchange2010_SP2" MinorBuildNumber="3" /> </Header> <soap:Body> <m:SubscribeResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types"> <m:ResponseMessages> <m:SubscribeResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:SubscriptionId>hKJETtoAdi9PPW0tZDQ4MThmMDoVYB</m:SubscriptionId> <m:Watermark>AAAAAAA=</m:Watermark> </m:SubscribeResponseMessage> </m:ResponseMessages> </m:SubscribeResponse> </soap:Body> </soap:Envelope>

Posteriormente, as notificações são enviadas para o URL especificado na solicitação de assinatura. Veja a seguir um exemplo de notificação:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <t:RequestServerVersion xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" Version="Exchange2010_SP2"> </t:RequestServerVersion> </soap:Header> <soap:Body> <m:SendNotification xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"> <m:ResponseMessages> <m:SendNotificationResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:Notification> <t:SubscriptionId>hKJETtoAdi9PPW0tZDQ4MThmMDoVYB</t:SubscriptionId> <t:PreviousWatermark>ygwAAAAAAAA=</t:PreviousWatermark> <t:MoreEvents>false</t:MoreEvents> <t:ModifiedEvent> <t:Watermark>ywwAAAAAAAA=</t:Watermark> <t:TimeStamp>2018-02-02T15:15:14Z</t:TimeStamp> <t:FolderId Id="AAB2L089bS1kNDgxOGYwOGE5OTQ0="></t:FolderId> <t:ParentFolderId Id="AAB2L089bS1kNDgxOGYwOGE="></t:ParentFolderId> </t:ModifiedEvent> </m:Notification> </m:SendNotificationResponseMessage> </m:ResponseMessages> </m:SendNotification> </soap:Body> </soap:Envelope>

Para confirmar que o respondente de notificações via push recebeu a notificação, ele deve responder com o seguinte:

<?xml version="1.0"?> <s:Envelope xmlns:s= "http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <SendNotificationResult xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"> <SubscriptionStatus>OK</SubscriptionStatus> </SendNotificationResult> </s:Body> </s:Envelope>

Para cancelar o recebimento de notificações via push, os clientes devem enviar uma resposta de cancelamento de inscrição no campo SubscriptionStatus, parecido ao seguinte:

<?xml version="1.0"?> <s:Envelope xmlns:s= "http://schemas.xmlsoap.org/soap/envelope/"> <s:Body> <SendNotificationResult xmlns="http://schemas.microsoft.com/exchange/services/2006/messages"> <SubscriptionStatus>Unsubscribe</SubscriptionStatus> </SendNotificationResult> </s:Body> </s:Envelope>

Para verificar a integridade do respondente de notificação por push, o Amazon WorkMail envia uma "pulsação" (também chamada StatusEvent). A frequência com que são enviadas é determinada pelo parâmetro StatusFrequency fornecido na solicitação de assinatura inicial. Por exemplo, se StatusFrequency for igual a 1, é enviado um StatusEvent a cada 1 minuto. Esse valor pode estar em um intervalo entre 1 e 1440 minutos. Este StatusEvent se parece ao seguinte:

<?xml version="1.0 (http://www.w3.org/TR/REC-xml/)" encoding="utf-8"?> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <soap:Header> <t:RequestServerVersion xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" Version="Exchange2010_SP2"/> </soap:Header> <soap:Body> <m:SendNotification xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages"> <m:ResponseMessages> <m:SendNotificationResponseMessage ResponseClass="Success"> <m:ResponseCode>NoError</m:ResponseCode> <m:Notification> <t:SubscriptionId>hKJETtoAdi9PPW0tZDQ4MThmMDoVYB</t:SubscriptionId> <t:PreviousWatermark>AAAAAAAAAAA=</t:PreviousWatermark> <t:MoreEvents>false</t:MoreEvents> <t:StatusEvent> <t:Watermark>AAAAAAAAAAA=</t:Watermark> </t:StatusEvent> </m:Notification> </m:SendNotificationResponseMessage> </m:ResponseMessages> </m:SendNotification> </soap:Body> </soap:Envelope>

Se um cliente respondente de notificação por push não responder com o mesmo status anterior de OK, a notificação será repetida por até StatusFrequency minutos. Por exemplo, se StatusFrequency for igual a 5, e a primeira notificação falhar, ela será repetida por, no máximo, 5 minutos com um recuo exponencial entre cada nova tentativa. Se a notificação não for entregue depois que o tempo de nova tentativa expirar, a assinatura será invalidada e não serão entregues novas notificações. Para continuar a receber notificações sobre eventos de caixa de correio, você deve criar uma nova assinatura. Atualmente, você pode se inscrever para, no máximo, três assinaturas por caixa postal.