[OneSignal Plugin] 400 Bad Request

[OneSignal Plugin] 400 Bad Request

  
Forge Component
(5)
Published on 27 Apr by OutSystems R&D
5 votes
Published on 27 Apr by OutSystems R&D

Não está sendo possível enviar notificação, estou tendo problemas com este erro: "400 Bad Request"

Viva, Eduardo,

Assumindo que verificou a chave da API, mais o App Identifier e os preencheu adequadamente, outra falha comum é não incluir um valor de "Lang" da estrutura Content em Inglês (screenshot).

Se isso não resolver, já experimentou aumentar o nível de logging para a Integração 'Onesignal', do modulo 'OneSignalAPI'? Isso dá maior visibilidade do problema que pode estar acontecendo.

Se conseguir resolver o problema ou se precisar de mais ajuda, esteja a vontade para dizer.

Cumprimentos,

Carlos Simões

Olá Eduardo o componente novo OneSignal oficial da OutSystems tem um bug no preenchimento da propriedade send_after internamente o componente verifica se essa propriedade não é enviada e caso não seja preenche com CurrDateTime() isso vai funcionar quando o servidor estiver configurado para o padrão americano de datas mas como você colocou a mensagem em português aqui imagino que seu padrão de data seja diferente, basta abrir o projeto OneSignalAPI na pasta ServerActions/PushNotifications/PostNotification e alterar o Assign na opção false do Has Deeplink para 

SyntaxEditor Code Snippet

If(DateTimeToDate(SendAfter) = NullDate(), "", SendAfter)

ao invés de 

If(DateTimeToDate(SendAfter) = NullDate(), CurrDateTime(), SendAfter)


isso irá resolvero seu bad request, infelizmente mesmo preenchendo a propriedade continuará com erro pois a propriedade está como datetime não te dando a liberdade de configurar a mesma o correto nesse caso seria a propriedade ser texto para cada um formatar de maneira adequada conforme sua situação ou uma inteligência melhor dentro do componente para fazer isso levando no formato que o OneSignal espera obter.

Espero ter ajudado.

Alexandre Costa wrote: Funcionou corretamente Alexandre, muito obrigado!

Olá Eduardo o componente novo OneSignal oficial da OutSystems tem um bug no preenchimento da propriedade send_after internamente o componente verifica se essa propriedade não é enviada e caso não seja preenche com CurrDateTime() isso vai funcionar quando o servidor estiver configurado para o padrão americano de datas mas como você colocou a mensagem em português aqui imagino que seu padrão de data seja diferente, basta abrir o projeto OneSignalAPI na pasta ServerActions/PushNotifications/PostNotification e alterar o Assign na opção false do Has Deeplink para 

SyntaxEditor Code Snippet

If(DateTimeToDate(SendAfter) = NullDate(), "", SendAfter)

ao invés de 

If(DateTimeToDate(SendAfter) = NullDate(), CurrDateTime(), SendAfter)


isso irá resolvero seu bad request, infelizmente mesmo preenchendo a propriedade continuará com erro pois a propriedade está como datetime não te dando a liberdade de configurar a mesma o correto nesse caso seria a propriedade ser texto para cada um formatar de maneira adequada conforme sua situação ou uma inteligência melhor dentro do componente para fazer isso levando no formato que o OneSignal espera obter.

Espero ter ajudado.



Olá Eduardo apesar de termos conversado off apenas para registrar aqui para mais alguém além dos passos acima é necessário retirar o Default value que está como CurrDateTime() das variáveis de entrada SendAfter dos métodos PostNotification e SendPushNotificationToUserId senão mesmo passando vazio o componente irá insitir em enviar a data e hora no formato incorreto.

Espero ter ajudado.

Olá, eu consegui resolver este problema da seguinte forma:


  1. Alterei os parâmetros InitialDate e DateFormate do meu Input_Caledar para os seguintes valores:
    1. InitialDate: SyntaxEditor Code Snippet
      AddHours(CurrDateTime(),-3)
    2. DateFormat: SyntaxEditor Code Snippet
      "%Y/%m/%d %H:%M:%S"
  2. Na função SendPushNotificationToAll, a qual eu decidi utilizar, defini o valor do parâmetro SendAfter da seguinte forma:
    1. SendAfter: SyntaxEditor Code Snippet
      AddHours(NotificacaoForm.Record.Notificacao.Data,3)

Isso resolveu o problema do "400 Bad Request" e eu pude definir a data e hora de agendamento corretamente na API do OneSignal.


Espero ter ajudado.