API de Mensagens
createMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createMessage
Cria uma nova notificação push.
Corpo da Solicitação
Anchor link to| Nome | Tipo | Descrição |
|---|---|---|
| auth* | string | Token de acesso à API do Painel de Controle da Pushwoosh. |
| application* | string | Código da aplicação Pushwoosh |
| notifications* | array | Array JSON de parâmetros da mensagem. Veja detalhes em um exemplo de solicitação abaixo. |
{ "status_code": 200, "status_message": "OK", "response": { "Messages": [ "C3F8-C3863ED4-334AD4F1" ] }}Exemplo de solicitação
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // obrigatório. Código da aplicação Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh. "notifications": [{ "send_date": "now", // opcional. AAAA-MM-DD HH:mm OU 'now' "content": { // opcional. objeto OU string. "en": "English", // Use "wns_content" em vez disso para Windows. "fr": "French" }, "title": { // opcional. objeto OU string. "en": "Title", // Ignorado se títulos específicos da plataforma forem especificados "fr": "Titre" // 'ios_title', 'android_header', etc. }, // veja os exemplos de parâmetros específicos da plataforma abaixo. "subtitle":{ // opcional. objeto OU string. "en": "Subtitle", // Ignorado se títulos específicos da plataforma forem especificados "fr": "Sous-titre" // 'ios_subtitle', etc. }, // veja os exemplos de parâmetros específicos da plataforma abaixo. "ignore_user_timezone": true, // opcional. "timezone": "America/New_York", // opcional. Se ignorado, UTC-0 é o padrão para "send_date". // Veja https://php.net/manual/timezones.php para // fusos horários suportados. "campaign": "CAMPAIGN_CODE", // opcional. Código da campanha à qual você deseja // atribuir esta mensagem push. "geozone": { // opcional. Enviar para Geozone "lat": 22.22, "lng": 33.33, "range": 110 }, "rich_media": "XXXXX-XXXXX", // opcional. Copie o código de Rich Media da barra de URL // da página do editor de Rich Media no Painel de Controle da Pushwoosh. "link": "https://google.com", // opcional. Para deeplinks, adicione "minimize_link": 0 "minimize_link": 0, // opcional. 0 — não minimizar, 2 — bitly. Padrão = 2. // Por favor, note que os encurtadores têm restrições // no número de chamadas. "data": { // opcional. String JSON ou objeto JSON, será passado como "key": "value" // parâmetro "u" no payload (convertido para string JSON). }, "transactionId": "unique UUID", // opcional. Identificador de mensagem único para evitar duplicação // em caso de problemas de rede. Armazenado no lado // da Pushwoosh por 5 minutos. "platforms": [ // opcional. 1 — iOS; 3 — Android; 7 — Mac OS X; 8 — Windows; 1, 3, 7, 8, 9, 10, // 9 — Amazon; 10 — Safari; 11 — Chrome; 11, 12, 17 // 12 — Firefox; 17 — Huawei ], "preset": "XXXXX-XXXXX", // opcional. Código do Preset de Push do seu Painel de Controle. // Se parâmetros específicos forem enviados na solicitação, // eles substituem os parâmetros do preset. "send_rate": 100, // opcional. Limitação de taxa. Valores válidos são de 100 a 1000 pushes/segundo. "send_rate_avoid": true, // opcional. Se definido como true, o limite de limitação de taxa não será aplicado a // esta notificação push específica. // Relacionado a templates, por favor, consulte o guia do Template Engine para saber mais "template_bindings": { // opcional. "TemplatePlaceholder": "Value" }, "dynamic_content_placeholders": { // opcional. Placeholders para conteúdo dinâmico em vez de tags de dispositivo. "firstname": "John", "lastname": "Doe" },
// Parâmetros de limitação de frequência. Certifique-se de que a limitação de frequência Global esteja configurada no Painel de Controle. "capping_days": 30, // opcional. Quantidade de dias para limitação de frequência (máx 30 dias) "capping_count": 10, // opcional. O número máximo de pushes que podem ser enviados de um // aplicativo específico para um dispositivo particular dentro de um período de 'capping_days'. // Caso a mensagem criada exceda o // limite de 'capping_count' para um dispositivo, ela não // será enviada para esse dispositivo. "capping_exclude": true, // opcional. Se definido como true, esta notificação push não // será contada para a limitação de futuros pushes. "capping_avoid": true, // opcional. Se definido como true, a limitação não será aplicada a // esta notificação push específica.
// Para salvar a mensagem na Caixa de Entrada via API, use "inbox_date" ou "inbox_image". // A mensagem é salva quando pelo menos um desses parâmetros é usado. "inbox_date": "2017-02-02", // opcional. Especifique quando remover uma mensagem da Caixa de Entrada. // A mensagem será removida da Caixa de Entrada às 00:00:01 UTC // da data especificada, então o dia anterior é o // último dia que um usuário pode ver a mensagem em sua Caixa de Entrada. // Se não especificado, a data de remoção padrão é o // dia seguinte à data de envio. "inbox_image": "Inbox image URL", // opcional. A imagem a ser mostrada perto da mensagem. "inbox_days": 5, // opcional. Especifique quando remover uma mensagem da // Caixa de Entrada (tempo de vida de uma mensagem na caixa de entrada em dias). // Pode ser usado em vez do parâmetro "inbox_date". // Até 30 dias.
"devices": [ // opcional. Especifique tokens ou hwids para enviar pushes direcionados "hwid_XXXX" // notificações. Não mais que 1000 tokens/hwids em ], // um array. Se definido, a mensagem só será enviada para // os dispositivos na lista. Grupo de Aplicações para lista de dispositivos // não é permitido. Tokens de push do iOS só podem estar em minúsculas. "to": [ // opcional. Para e-mail, SMS e canais similares. Lista de destinatários "email_1", "email_2" // (ex: endereços de e-mail, números de telefone). Máx 1000 itens. ], // Para push, use "devices" em vez disso. // Notificações push centradas no usuário "users": [ // opcional. Se definido, a mensagem só será entregue aos "user_XXXX" // IDs de usuário especificados (definidos via chamada /registerUser). ], // Se especificado junto com devices ou to, // os últimos serão ignorados. Não mais que 1000 // IDs de usuário em um array. Grupo de Aplicações para lista de usuários // não é permitido.
// Filtros e condições "filter": "FILTER_NAME", // opcional. "conditions": [ // opcional. Veja a observação abaixo. ["Country", "EQ", "fr"], ["Language", "EQ", "en"] ], "conditions_operator": "AND" // opcional. Operador lógico para arrays de condições. // Valores possíveis: AND | OR. AND é o padrão. }] }}Exemplo de solicitação de notificação VoIP
Anchor link toA Pushwoosh suporta notificações de chamada no estilo VoIP para iOS e Android.
Abaixo você pode encontrar exemplos de solicitações API createMessage para cada plataforma.
{ "request": { "application": "XXXXX-XXXXX", // obrigatório. Código da aplicação Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh. "notifications": [ { "voip_push": true, // obrigatório. Parâmetro é necessário para enviar uma notificação push VoIP. "ios_root_params": { "aps": { "mutable-content": 1 // obrigatório para anexos de mídia do iOS10+. }, "callerName": "CallerName", // opcional. Nome do chamador. Se não especificado, "chamador desconhecido" é mostrado. "video": true, // opcional. Indica se chamadas de vídeo são suportadas. "supportsHolding": true, // opcional. Indica se a funcionalidade de chamada em espera é suportada. "supportsDTMF": false, // opcional. Controla o suporte a sinal de Multi-Frequência de Tom Duplo. "callId": "42", // opcional. O identificador único da chamada a ser cancelada. "cancelCall": true // opcional. Defina como "true" para cancelar a chamada com o "callId" especificado. } } ] }}Android
Anchor link to{ "request": { "application": "XXXXX-XXXXX", // obrigatório. Código da aplicação Pushwoosh. "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh. "notifications": [ { "voip_push": true, // obrigatório. Parâmetro é necessário para enviar uma notificação push VoIP. "android_root_params": { "callerName": "callerName", // opcional. Nome do chamador. Se não especificado, "chamador desconhecido" é mostrado. "video": true, // opcional. Indica se chamadas de vídeo são suportadas. "callId": 42, // opcional. O identificador único da chamada a ser cancelada. "cancelCall": true // opcional. Defina como "true" para cancelar a chamada com o "callId" especificado. } } ] }}Parâmetros específicos da plataforma
Anchor link toParâmetros do iOS
Anchor link to{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "ios_title": { // opcional. Objeto OU string. Adiciona título específico do iOS para a notificação push. "en": "title" }, "ios_subtitle": { // opcional. Objeto OU string. Adiciona subtítulo específico do iOS para a notificação push. "en": "subtitle" }, "ios_content": { // opcional. Objeto OU string. Adiciona conteúdo específico do iOS para a notificação push. "en": "content" }, "ios_badges": 5, // opcional. Número do emblema da aplicação iOS. // Use "+n" ou "-n" para incrementar/decrementar o valor do emblema em n. "ios_sound": "sound file.wav", // opcional. Nome do arquivo de som no pacote principal da aplicação. // Se deixado em branco, o dispositivo produzirá um som padrão do sistema. "ios_sound_off": true, // opcional. Habilita/desabilita o som definido pelo campo "ios_sound". "ios_ttl": 3600, // opcional. Parâmetro de tempo de vida - tempo máximo de vida da mensagem em segundos. "ios_silent": 1, // opcional. Habilita notificações silenciosas (ignora "sound" e "content"). "ios_category_id": "1", // opcional. ID da categoria do iOS8 da Pushwoosh. "ios_root_params": { // opcional. Parâmetros de nível raiz para o dicionário aps. "aps": { "content-available": "0", // opcional. Defina "1" para enviar um push silencioso e "0" para um push regular. "mutable-content": 1 // obrigatório para anexos de mídia do iOS10+. }, "callerName": "CallerName", // opcional parâmetro VoIP. Nome do chamador. Se não especificado, "chamador desconhecido" é mostrado. "video": true, // opcional parâmetro VoIP. Indica se chamadas de vídeo são suportadas. "supportsHolding": true, // opcional parâmetro VoIP. Indica se a funcionalidade de chamada em espera é suportada. "supportsDTMF": false, // opcional parâmetro VoIP. Controla o suporte a sinal de Multi-Frequência de Tom Duplo. "data": {} // opcional Dados fornecidos pelo usuário, máx de 4KB }, "ios_attachment": "URL", // opcional. Insere conteúdo de mídia na notificação. "ios_thread_id": "some thread id", // opcional. Identificador para agrupar notificações relacionadas. // Mensagens com o mesmo ID de thread serão agrupadas // na tela de bloqueio e na Central de Notificações. "ios_critical": true, // opcional. Marca a notificação do iOS como um alerta crítico // reproduzindo som mesmo se o dispositivo estiver mudo ou // o modo Não Perturbe estiver ativado. "ios_category_custom": "category", // opcional. Categoria APNS personalizada. "ios_interruption_level": "active", // opcional. Um de "passive", "active", "time-sensitive", // "critical". Indica a importância e // o tempo de entrega de uma notificação. Consulte o // guia de push único para detalhes. "apns_trim_content": 1 // opcional. (0|1) Corta as strings de conteúdo excedentes com reticências. }] }}Parâmetros do Android
Anchor link to{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "android_header": { // opcional. Cabeçalho da notificação Android. "en": "header" }, "android_content": { // opcional. Conteúdo da notificação Android. "en": "content" }, "android_root_params": { // opcional. Objeto chave-valor personalizado. "key": "value", // Parâmetros de nível raiz para os destinatários do payload android. "CancelID": 12345678, // opcional. Cancela a notificação push com o "voip": true, // obrigatório parâmetro VoIP. Parâmetro é necessário para enviar notificações push VoIP. "callerName": "callerName", // opcional parâmetro VoIP. Nome do chamador. Se não especificado, "chamador desconhecido" é mostrado. "video": true, // opcional parâmetro VoIP. Indica se chamadas de vídeo são suportadas. }, // ID da Mensagem especificado (obtenha o ID do Histórico de Mensagens) "android_sound": "soundfile", // opcional. Sem extensão de arquivo. Se deixado em branco, // o dispositivo produzirá um som padrão do sistema. "android_sound_off": true, // opcional. Habilita/desabilita o som definido pelo campo "android_sound" "android_icon": "icon.png", // opcional. "android_custom_icon": "URL.png", // opcional. URL completa para o arquivo de imagem. "android_banner": "URL.png", // opcional. URL completa para o arquivo de imagem. "android_badges": 5, // opcional. Número do emblema do ícone da aplicação Android. // Use "+n" ou "-n" para incrementar/decrementar o valor do emblema em n. "android_gcm_ttl": 3600, // opcional. Parâmetro de tempo de vida — tempo máximo de vida da mensagem em segundos. "android_vibration": 0, // opcional. Vibração forçada no Android para pushes de alta prioridade. "android_led": "#rrggbb", // opcional. Cor hexadecimal do LED, o dispositivo fará sua melhor aproximação. "android_priority": -1, // opcional. Define o parâmetro "importance" para dispositivos com // Android 8.0 e superior, bem como o parâmetro "priority" // para dispositivos com Android 7.1 e inferior. Estabelece o // nível de interrupção de um canal de notificação ou uma notificação // particular. Valores válidos são -2, -1, 0, 1, 2. "android_delivery_priority": "normal", // opcional. "normal" ou "high". // Habilita a entrega da notificação quando o // dispositivo está no modo de economia de energia. "android_ibc": "#RRGGBB", // opcional. cor de fundo do ícone no Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow", etc. "android_silent": 1, // opcional. 0 ou 1. Habilita notificação silenciosa. // Ignora som e conteúdo "android_group_id": "123" // opcional. Identificador para agrupar notificações relacionadas. Mensagens com // o mesmo ID de thread serão agrupadas na // Central de Notificações. }] }}Parâmetros da Huawei
{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "huawei_android_header": { // opcional. Objeto OU string. Título da notificação "en": "header" }, "huawei_android_content": { // opcional. Objeto OU string. Conteúdo da notificação "en": "content" }, "huawei_android_badges": true, // opcional. "huawei_android_silent": 0, // opcional. 0 ou 1. Habilita notificação silenciosa. // Ignora som e conteúdo "huawei_android_icon": "URL.png", // opcional. "huawei_android_led": "#FF0011", // opcional. Cor hexadecimal do LED, o dispositivo fará sua melhor aproximação "huawei_android_vibration": 1, // opcional. Vibração forçada da Huawei para pushes de alta prioridade "huawei_android_sound": "sound.wav", // opcional. Se deixado em branco, o dispositivo produzirá // um som padrão do sistema "huawei_android_sound_off": true, // opcional. Habilita/desabilita o som definido pelo // campo "huawei_android_sound" "huawei_android_custom_icon": "URL.png", // opcional "huawei_android_gcm_ttl": 2400, // opcional. Parâmetro de tempo de vida - máximo // tempo de vida da mensagem em segundos "huawei_android_banner": "URL.png", // opcional. URL do caminho completo para o arquivo de imagem "huawei_android_root_params": { // opcional. Objeto chave-valor personalizado. "key": "value" // Parâmetros de nível raiz para os destinatários do payload da Huawei. }, "huawei_android_priority": 0, // opcional. Valores válidos: -2, -1, 0, 1, 2 "huawei_android_ibc": "#0011AA", // opcional. Cor de fundo do ícone no Lollipop "huawei_android_lockscreen": 1, // opcional "huawei_android_delivery_priority": "normal", // opcional. "normal" ou "high". Habilita a entrega de notificações // no modo de economia de energia "huawei_android_group_id": "group_id" // opcional. Identificador para agrupar notificações relacionadas }] }}Parâmetros do Safari
Anchor link to{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "safari_url_args": [ // obrigatório, mas o valor pode estar vazio "firstArgument", "secondArgument" ], "safari_title": { // opcional. Objeto OU string. Título da notificação. "en": "content" }, "safari_content": { // opcional. Objeto OU string. Conteúdo da notificação. "en": "content" }, "safari_action": "Click here", // opcional. "safari_ttl": 3600 // opcional. Parâmetro de tempo de vida — o máximo // tempo de vida de uma mensagem em segundos. }] }}Parâmetros do Chrome
Anchor link to{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "chrome_title": { // opcional. Objeto OU string. Você pode especificar o cabeçalho "en": "title" // da mensagem neste parâmetro. }, "chrome_content": { // opcional. Objeto OU string. Você pode especificar o conteúdo "en": "content" // da mensagem neste parâmetro. }, "chrome_icon": "URL.png", // opcional. URL completa para o ícone ou caminho do arquivo de recursos da extensão "chrome_gcm_ttl": 3600, // opcional. Parâmetro de tempo de vida – tempo máximo de vida da mensagem em segundos. "chrome_duration": 20, // opcional. máx 50 segundos. Altera o tempo de exibição do push do Chrome. // Defina como 0 para exibir o push até que o usuário interaja com ele. "chrome_image": "image_URL", // opcional. URL para imagem grande. "chrome_root_params": { // opcional. Define parâmetros específicos para mensagens enviadas para o Chrome. "key": "value" }, "chrome_button_text1": "text1", // opcional "chrome_button_url1": "button1_URL", // opcional. Ignorado se chrome_button_text1 não estiver definido. "chrome_button_text2": "text2", // opcional "chrome_button_url2": "button2_url" // opcional. Ignorado se chrome_button_text2 não estiver definido. }] }}Parâmetros do Firefox
Anchor link to{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "firefox_title": { // opcional. Objeto OU string. Você pode especificar o cabeçalho da mensagem aqui. "en": "title" }, "firefox_content": { // opcional. Objeto OU string. Você pode especificar o conteúdo da mensagem aqui. "en": "content" }, "firefox_icon": "URL.png", // opcional. URL do caminho completo para o ícone ou caminho para o // arquivo nos recursos da extensão. "firefox_root_params": { // opcional. Define parâmetros específicos para mensagens enviadas para o Firefox. "key": "value" } }] }}Parâmetros da Amazon
Anchor link to{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "adm_header": { // opcional. Objeto OU string. Você pode especificar o cabeçalho da mensagem aqui. "en": "header" }, "adm_content": { // opcional. Objeto OU string. Você pode especificar o conteúdo da mensagem aqui. "en": "content" }, "adm_root_params": { // opcional. Objeto chave-valor personalizado "key": "value" }, "adm_sound": "push.mp3", // opcional. "adm_sound_off": true, // opcional. Habilita/desabilita o som definido pelo campo "adm_sound" "adm_icon": "icon.png", // opcional. URL completa para o ícone. "adm_custom_icon": "URL.png", // opcional. "adm_banner": "URL.png", // opcional. "adm_ttl": 3600, // opcional. Parâmetro de tempo de vida — o máximo de tempo de vida da mensagem // em segundos. "adm_priority": -1 // opcional. Prioridade do push na gaveta de push da Amazon, // valores válidos são -2, -1, 0, 1 e 2. }] }}Parâmetros do Mac OS X
Anchor link to{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "mac_title": { // opcional. Objeto OU string. Adiciona Título para a notificação push. "en": "title" }, "mac_subtitle": { // opcional. Adiciona subtítulo para a notificação push. "en": "subtitle" }, "mac_content": { // opcional. Adiciona conteúdo para a notificação push. "en": "content" }, "mac_badges": 3, // opcional. "mac_sound": "sound.caf", // opcional. "mac_sound_off": true, // opcional. Habilita/desabilita o som definido pelo campo "mac_sound" "mac_root_params": { // opcional. "content-available": 1 }, "mac_ttl": 3600 // opcional. Parâmetro de tempo de vida — tempo máximo de vida da mensagem em segundos. }] }}Parâmetros do Windows
Anchor link to{ "request": { "application": "12345-67891", // obrigatório. Código da aplicação Pushwoosh "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "notifications": [{ "wns_content": { // obrigatório. Conteúdo (XML ou bruto) da notificação codificado em base64 do MIME // na forma de Objeto OU String "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // opcional. 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // opcional. Usado na política de substituição de Tile. // Uma string alfanumérica de não mais que 16 caracteres. "wns_cache": 1, // opcional. (1|0) Traduz para o valor X-WNS-Cache-Policy. "wns_ttl": 600 // opcional. Tempo de expiração para a notificação em segundos. }] }}Resposta:
| Código de status HTTP | status_code | Descrição |
|---|---|---|
| 200 | 200 | Mensagem criada com sucesso |
| 200 | 210 | Erro de argumento. Veja status_message para mais informações |
| 400 | N/A | String de solicitação malformada |
| 500 | 500 | Erro interno |
Rastreamento de mensagens da API
Anchor link toPara fins de balanceamento de carga, não armazenamos mensagens enviadas através da API com o parâmetro “devices” que contém menos de 10 dispositivos em um array. Devido a isso, tais mensagens não serão exibidas em seu Histórico de Mensagens.
Para ver relatórios de push durante a fase de testes, use o rastreamento de mensagens da API. Ativar esta opção ON permite que você substitua este limite por 1 hora e salve tais pushes no Histórico de Mensagens. O rastreamento de mensagens da API desliga-se automaticamente após 1 hora.
O rastreamento de mensagens da API pode ser ativado na página Histórico de Mensagens clicando em Iniciar rastreamento de mensagens da API no canto superior direito.
Condições de Tag
Anchor link toCada condição de tag é um array como [tagName, operator, operand] onde
- tagName: nome de uma tag
- operator: “EQ” | “IN” | “NOTEQ” | “NOTIN” | “LTE” | “GTE” | “BETWEEN” | “NOTSET” | “ANY”
- operand: string | integer | array | date
Descrição do operador
Anchor link to- EQ: o valor da tag é igual ao operando;
- IN: o valor da tag se cruza com o operando (o operando deve ser sempre um array);
- NOTEQ: o valor da tag não é igual a um operando;
- NOTIN: o valor da tag não se cruza com o operando (o operando deve ser sempre um array);
- GTE: o valor da tag é maior ou igual ao operando;
- LTE: o valor da tag é menor ou igual ao operando;
- BETWEEN: o valor da tag é maior ou igual ao valor mínimo do operando, mas menor ou igual ao valor máximo do operando (o operando deve ser sempre um array);
- NOTSET: tag não definida. O operando não é considerado;
- ANY: a tag tem qualquer valor. O operando não é considerado.
Tags de string
Anchor link toOperadores válidos: EQ, IN, NOTEQ, NOTIN, NOTSET, ANY
Operandos válidos:
- EQ, NOTEQ: o operando deve ser uma string;
- IN, NOTIN: o operando deve ser um array de strings como
["valor 1", "valor 2", "valor N"]; - NOTSET: tag não definida. O operando não é considerado;
- ANY: a tag tem qualquer valor. O operando não é considerado.
Tags de inteiro
Anchor link toOperadores válidos: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Operandos válidos:
- EQ, NOTEQ, GTE, LTE: o operando deve ser um inteiro;
- IN, NOTIN: o operando deve ser um array de inteiros como
[valor 1, valor 2, valor N]; - BETWEEN: o operando deve ser um array de inteiros como
[valor_min, valor_max]; - NOTSET: tag não definida. O operando não é considerado;
- ANY: a tag tem qualquer valor. O operando não é considerado.
Tags de data
Anchor link toOperadores válidos: EQ, IN, NOTEQ, NOTIN, BETWEEN, GTE, LTE, NOTSET, ANY
Operandos válidos:
"AAAA-MM-DD 00:00"(string)- timestamp unix
1234567890(inteiro) "N days ago"(string) para operadores EQ, BETWEEN, GTE, LTE
Tags booleanas
Anchor link toOperadores válidos: EQ, NOTSET, ANY
Operandos válidos: 0, 1, true, false
Tags de lista
Anchor link toOperadores válidos: IN, NOTIN, NOTSET, ANY
Operandos válidos: o operando deve ser um array de strings como ["valor 1", "valor 2", "valor N"].
Snippets de /createMessage
Anchor link toExemplos de solicitações /createMessage:
#!/bin/bash
#Usoif [ ! -n "$1" ] || [ ! -n "$2" ]then echo "`basename $0` uso: api_token appid mensagem"; exit 1;fi;MESSAGE="$3";if [ -z "$3" ]thenMESSAGE='Um push para governar todos!'fi;
echo -e "Resposta:"curl --data-binary "{\"request\": {\"application\":\"$2\", \"auth\":\"$1\", \"notifications\": [{ \"send_date\": \"now\", \"content\": \"$MESSAGE\" }] }}" \-H "Content-type: application/json" \"https://api.pushwoosh.com/json/1.3/createMessage"echo "";exit 0;<?phpdefine('PW_AUTH', 'API TOKEN');define('PW_APPLICATION', 'APPLICATION CODE');define('PW_DEBUG', true);
function pwCall($method, $data) { $url = 'https://api.pushwoosh.com/json/1.3/' . $method; $request = json_encode(['request' => $data]);
$ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate'); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $request);
$response = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch);
if (defined('PW_DEBUG') && PW_DEBUG) { print "[PW] request: $request"; print "[PW] response: $response"; print '[PW] info: ' . print_r($info, true); }}
pwCall('createMessage', array( 'application' => PW_APPLICATION, 'auth' => PW_AUTH, 'notifications' => array( array( 'send_date' => 'now', 'content' => 'test', 'data' => array('custom' => 'json data'), 'link' => 'https://pushwoosh.com/' ) ) ));-module(pushwoosh).-export([run/0, stop/0, sendMessage/1]).%% sendMessage argument: message text %%
%% Authentication & App_id %%-define(PW_AUTH, "YOUR_AUTH_TOKEN").-define(PW_APPLICATION, "YOUR_PUSHWOOSH_APP_CODE").
%% KickStart %%run() -> application:start(unicode), application:start(crypto), application:start(public_key), application:start(ssl), application:start(inets), %% HTTP Client verbosity options flase, verbose, debug httpc:set_options([{verbose, false}]).stop() -> application:stop(ssl), application:stop(public_key), application:stop(crypto), application:stop(inets).%% JSON Wars !encode(S) -> encode(S, [$"]).encode([], Acc) -> lists:reverse([$" | Acc]);encode([C | Cs], Acc) -> Hex = lists:flatten(io_lib:format("~4.16.0b", [C])), encode(Cs, lists:reverse(Hex) ++ "u\" ++ Acc).
sendMessage(Message_text) -> %% URL to JSON API 1.3 Url = "https://api.pushwoosh.com/json/1.3/createMessage", EncodedMessage = encode(Message_text), {ok, Response} = httpc:request( %%Method post, %%Request {Url, [{"User-Agent", "Erlang exemple"}], "application/json; charset=UTF-8", "{\"request\":{ \"application\": \""?PW_APPLICATION"\", \"auth\": \""?PW_AUTH"\", \"notifications\": [{ \"send_date\": \"now\", \"content\": "++EncodedMessage++" }]}}"}, %%HTTP options [{ssl,[{verify, verify_none}]}, {version, "HTTP/1.0"}], %%Options []), io:format("And received ~p", [Response]).class PushNotification
#- Documentação da API PushWoosh https://www.pushwoosh.com/programming-push-notification/pushwoosh-push-notification-remote-api/ #- Dois métodos aqui: # - PushNotification.new.notify_all(message) Notifica todos com a mesma opção # - PushNotification.new.notify_devices(notification_options = {}) Notifica dispositivos específicos com opções personalizadas
include HTTParty #Certifique-se de ter a gem HTTParty declarada em seu gemfile https://github.com/jnunemaker/httparty default_params :output => 'json' format :json
def initialize #- Altere para suas configurações @auth = {:application => "00000-00000",:auth => "auth_token"} end
# PushNotification.new.notify_all("Esta é uma notificação de teste para todos os dispositivos") def notify_all(message) notify_devices({:content => message}) end
# PushNotification.new.notify_device({ # :content => "TESTE", # :data => {:custom_data => value}, # :devices => array_of_tokens #}) def notify_devices(notification_options = {}) #- Opções padrão, descomente :data ou :devices se necessário default_notification_options = { # AAAA-MM-DD HH:mm OU 'now' :send_date => "now", # Objeto( idioma1: 'conteudo1', idioma2: 'conteudo2' ) OU string :content => { :fr => "Test", :en => "Test" }, # string JSON ou objeto JSON "custom": "json data" #:data => { # :custom_data => value #}, # omita este campo (a notificação push será entregue a todos os dispositivos da aplicação), ou forneça a lista de IDs de dispositivos #:devices => {} }
#- Mesclando com opções específicas final_notification_options = default_notification_options.merge(notification_options)
#- Construindo a chamada final options = @auth.merge({:notifications => [final_notification_options]}) options = {:request => options} #- Executando a Chamada da API POST com HTTPARTY - :body => options.to_json nos permite enviar o json como um objeto em vez de uma string response = self.class.post("https://api.pushwoosh.com/json/1.3/createMessage", :body => options.to_json,:headers => { 'Content-Type' => 'application/json' }) endend// Usa classes JSON de https://json.org/java/
package com.arellomobile;
import org.json.*;import java.io.*;import java.net.*;
public class SendPushNotificationSample{ public static final String PUSHWOOSH_SERVICE_BASE_URL = "https://api.pushwoosh.com/json/1.3/"; private static final String AUTH_TOKEN = "YOUR_AUTH_TOKEN"; private static final String APPLICATION_CODE = "PW_APPLICATION_CODE";
public static void main(String[] args) throws JSONException, MalformedURLException { String method = "createMessage"; URL url = new URL(PUSHWOOSH_SERVICE_BASE_URL + method);
JSONArray notificationsArray = new JSONArray() .put(new JSONObject().put("send_date", "now") .put("content", "test") .put("link", "https://pushwoosh.com/"));
JSONObject requestObject = new JSONObject() .put("application", APPLICATION_CODE) .put("auth", AUTH_TOKEN) .put("notifications", notificationsArray);
JSONObject mainRequest = new JSONObject().put("request", requestObject); JSONObject response = SendServerRequest.sendJSONRequest(url, mainRequest.toString());
System.out.println("Response is: " + response); }}
class SendServerRequest{ static JSONObject sendJSONRequest(URL url, String request) { HttpURLConnection connection = null; try { connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST"); connection.setRequestProperty("Content-Type", "application/json"); connection.setDoInput(true); connection.setDoOutput(true);
DataOutputStream writer = new DataOutputStream(connection.getOutputStream()); writer.write(request.getBytes("UTF-8")); writer.flush(); writer.close();
return parseResponse(connection); } catch (Exception e) { System.out.println("An error occurred: " + e.getMessage()); return null; } finally { if (connection != null) { connection.disconnect(); } } }
static JSONObject parseResponse(HttpURLConnection connection) throws IOException, JSONException { String line; BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); StringBuilder response = new StringBuilder();
while ((line = reader.readLine()) != null) { response.append(line).append(''); } reader.close();
return new JSONObject(response.toString()); }}import json
PW_AUTH = 'API TOKEN'PW_APPLICATION_CODE = 'APPLICATION CODE'
try: # Para Python 3.0 e posterior from urllib.request import urlopen from urllib.request import Requestexcept ImportError: # Recorre ao urllib2 do Python 2 from urllib2 import urlopen from urllib2 import Request
def pw_call(method, data): url = 'https://api.pushwoosh.com/json/1.3/' + method data = json.dumps({'request': data}) req = Request(url, data.encode('UTF-8'), {'Content-Type': 'application/json'}) try: f = urlopen(req) response = f.read() f.close() print('Pushwoosh response: ' + str(response)) except Exception as e: print ('Request error: ' + str(e))
if __name__ == '__main__': pw_call('createMessage', { 'auth': PW_AUTH, 'application': PW_APPLICATION_CODE, 'notifications': [ { 'send_date': 'now', 'content': 'test', 'data': {"custom": "json data"}, 'link': 'https://pushwoosh.com' } ] } )using System;using System.IO;using System.Net;using Newtonsoft.Json.Linq;
namespace WebApplication1{ public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { string pwAuth = "YOUR_AUTH_TOKEN"; string pwApplication = "PW_APPLICATION_CODE"; JObject json = new JObject( new JProperty("application", pwApplication), new JProperty("auth", pwAuth), new JProperty("notifications", new JArray( new JObject( new JProperty("send_date", "now"), new JProperty("content", "test"), new JProperty("wp_type", "Toast"), new JProperty("wp_count", 3), new JProperty("data", new JObject( new JProperty("custom", "json data"))), new JProperty("link", "https://pushwoosh.com/"), new JProperty("conditions", new JArray( (object)new JArray("Color", "EQ", "black"))))))); PWCall("createMessage", json); } private void PWCall(string action, JObject data) { Uri url = new Uri("https://api.pushwoosh.com/json/1.3/" + action); JObject json = new JObject(new JProperty("request", data)); DoPostRequest(url, json); } private void DoPostRequest(Uri url, JObject data) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url); req.ContentType = "text/json"; req.Method = "POST"; using (var streamWriter = new StreamWriter(req.GetRequestStream())) { streamWriter.Write(data.ToString()); } HttpWebResponse httpResponse; try { httpResponse = (HttpWebResponse)req.GetResponse(); } catch (Exception exc) { throw new Exception(string.Format("Problem with {0}, {1}", url, exc.Message)); } using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var responseText = streamReader.ReadToEnd(); Page.Response.Write(responseText); } } }}package main
import( "fmt" "encoding/json" "net/http" "bytes" "io/ioutil")
const ( PW_APPLICATION = "APPLICATION CODE" PW_AUTH = "API TOKEN" PW_ENDPOINT = "https://api.pushwoosh.com/json/1.3/")
func pwCall(method string, data []byte) (bool) { url := PW_ENDPOINT + method request, err := http.NewRequest("POST", url, bytes.NewBuffer(data)) request.Header.Set("Content-Type", "application/json")
client := http.Client{} response, err := client.Do(request) if err != nil { fmt.Println("Error occur: " + err.Error()) return false } defer response.Body.Close()
fmt.Println("Response Status: ", response.Status) if (response.StatusCode == 200) { body, _ := ioutil.ReadAll(response.Body) fmt.Println("Response Body: ", string(body)) return true } return false}
func main() { requestData := map[string]interface{}{ "request": map[string]interface{} { "auth": PW_AUTH, "application": PW_APPLICATION, "notifications": []interface{}{ map[string]interface{} { "send_date": "now", "content": "test", "link": "https://pushwoosh.com", }, }, }, } jsonRequest, _ := json.Marshal(requestData) requestString := string(jsonRequest) fmt.Println("Request body: " + requestString)
pwCall("createMessage", jsonRequest)}$.ajax({ type: "POST", url: "https://api.pushwoosh.com/json/1.3/createMessage", data: JSON.stringify({ "request": { "application": "APPLICATION CODE", "auth": "API TOKEN", "notifications": [{ "send_date": "now", "ignore_user_timezone": true, "content": "Hello world!" }] } }), dataType: "json"}).done(function(data) { console.log(data);});deleteMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/deleteMessage
Exclui uma mensagem agendada.
Corpo da Solicitação
Anchor link to| Nome | Tipo | Descrição |
|---|---|---|
| auth* | string | Token de acesso à API do Painel de Controle da Pushwoosh. |
| message* | string | Código da mensagem obtido na solicitação /createMessage. |
{ "status_code": 200, "status_message": "OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // obrigatório. Código da mensagem obtido em /createMessage }}Códigos de status:
| Código de status HTTP | status_code | Descrição |
|---|---|---|
| 200 | 200 | Mensagem excluída com sucesso |
| 200 | 210 | Erro de argumento. Veja status_message para mais informações |
| 400 | N/A | String de solicitação malformada |
| 500 | 500 | Erro interno |
<?php// veja https://gomoob.github.io/php-pushwoosh/delete-message.htmluse Gomoob\Pushwoosh\Model\Request\DeleteMessageRequest;
// cria instância da solicitação$request = DeleteMessageRequest::create()->setMessage('MESSAGE_CODE');
// chama o Web Service '/deleteMessage'$response = $pushwoosh->deleteMessage($request);
if($response->isOk()) { print 'Ótimo, minha mensagem foi excluída!';} else { print 'Opa, a exclusão falhou :-('; print 'Código de status: ' . $response->getStatusCode(); print 'Mensagem de status: ' . $response->getStatusMessage();}getMessageDetails
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getMessageDetails
Recupera os detalhes da mensagem.
Corpo da Solicitação
Anchor link to| Nome | Tipo | Descrição |
|---|---|---|
| auth* | string | Token de acesso à API do Painel de Controle da Pushwoosh. |
| message* | string | Código da mensagem ou ID da mensagem. |
{ "status_code": 200, "status_message": "OK", "response": { "message": { "id": 2068991743, "created": "2016-09-14 17:19:42", "send_date": "2016-09-14 17:19:41", "status": "done", "content": { "en": "Hello {Name|CapitalizeFirst|friend}! 🚀" }, "platforms": "[1]", "ignore_user_timezone": "1", "code": "XXXX-92B4C3C5-A7F5EF70", "data": { "key": "value" } } }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // obrigatório. código da mensagem ou ID da mensagem }}createTargetedMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/createTargetedMessage
Cria uma nova notificação push direcionada.
Corpo da Solicitação
Anchor link to| Nome | Tipo | Descrição |
|---|---|---|
| auth* | string | Token de acesso à API do Painel de Controle da Pushwoosh. |
| devices_filter* | string | Veja a observação abaixo. |
| send_date* | string | AAAA-MM-DD HH:mm ou ‘now’. |
| ignore_user_timezone | boolean | Se ignorado, UTC-0 é o padrão para “send_date”. |
| timezone | string | Se ignorado, UTC-0 é o padrão para “send_date”. |
| campaign | string | Código de uma campanha à qual você deseja atribuir esta mensagem push. |
| content* | string | Conteúdo da notificação. Veja o exemplo de solicitação para detalhes. |
| transactionId | string | Identificador de mensagem único para evitar a duplicação de mensagens em caso de problemas de rede. Armazenado no lado da Pushwoosh por 5 minutos. |
| link | string | Link a ser aberto assim que um usuário abrir uma mensagem push. |
| minimize_link | integer | 0 - não minimizar, 2 - bit.ly. Padrão = 2. |
| data | object | String JSON ou objeto JSON. Será passado como parâmetro “u” no payload (convertido para string JSON). |
| preset | string | Código do preset. |
| send_rate | integer | Limitação de taxa. Valores válidos são de 100 a 1000 pushes por segundo. |
| inbox_date | string | Especifique quando remover uma mensagem da Caixa de Entrada. |
| inbox_image | string | URL da imagem a ser mostrada perto da mensagem na Caixa de Entrada. |
{ "status_code": 200, "status_message": "OK", "response": { "messageCode": "97B0-C7473871-2FBDFDC6" }}A solicitação não pode ser atendida devido à sintaxe incorreta.Mais exemplos de resposta:
{ "status_code": 210, "status_message": "Ocorreram erros ao compilar o filtro", "response": { "errors": [{ "message": "Especificação de conjunto de tags inválida. \")\" esperado.", "type": "syntax" }] }}{ "status_code": 210, "status_message": "Ocorreram erros ao compilar o filtro", "response": { "errors": [{ "message": "Aplicação \"11111-11111\" não encontrada", "type": "semantic", "near": "\"11111-11111\"" }] }}{ "status_code": 210, "status_message": "Ocorreram erros ao compilar o filtro", "response": { "errors": [{ "message": "Caractere inválido \"/\" em 1:19", "type": "lexical" }] }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "devices_filter": "A(\"XXXXX-XXXXX\") * T(\"City\", EQ, \"Name\")", // obrigatório. Sintaxe explicada abaixo "send_date": "now", // opcional. AAAA-MM-DD HH:mm OU 'now' "ignore_user_timezone": true, // opcional. "timezone": "America/New_York", // opcional. Se ignorado, UTC-0 é o padrão para "send_date". // Mais informações https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // opcional. Código da campanha à qual você deseja atribuir esta mensagem push. "content": { // opcional. Objeto OU string. Use "wns_content" em vez disso para Windows. "en": "English", "de": "Deutsch" }, "transactionId": "unique UUID", // opcional. Identificador de mensagem único para evitar a duplicação de mensagens // em caso de problemas de rede. Armazenado no lado da // Pushwoosh por 5 minutos. "rich_media": "XXXXX-XXXXX", // opcional. Copie o código de Rich Media da barra de URL da // página do editor de Rich Media no Painel de Controle da Pushwoosh. "link": "https://google.com", // opcional. Para deeplinks, adicione "minimize_link": 0 "minimize_link": 0, // opcional. 0 — não minimizar, 2 — bitly. Padrão = 2. // O encurtador de URL do Google está desativado desde 30 de março de 2019. // Por favor, note que os encurtadores têm restrições // no número de chamadas. "data": { // opcional. String JSON ou objeto JSON. "key": "value" // Será passado como parâmetro "u" no payload }, // (convertido para string JSON). "preset": "XXXXX-XXXXX", // opcional. Código do Preset de Push do seu Painel de Controle. "send_rate": 100, // opcional. Limitação de taxa. Valores válidos são de 100 a 1000 pushes/segundo. "dynamic_content_placeholders": { // opcional. Placeholders para conteúdo dinâmico em vez de tags de dispositivo. "firstname": "John", "lastname": "Doe" },
// Para salvar a mensagem na Caixa de Entrada via API, use "inbox_date" ou "inbox_image". // A mensagem é salva quando pelo menos um desses parâmetros é usado. "inbox_image": "Inbox image URL", // opcional. A imagem a ser mostrada perto da mensagem. "inbox_date": "2017-02-02" // opcional. Especifique quando remover uma mensagem da Caixa de Entrada. // A mensagem será removida da Caixa de Entrada às 00:00:01 UTC da // data especificada, então o dia anterior é o último // dia que um usuário pode ver a mensagem em sua Caixa de Entrada. // Se não especificado, a data de remoção padrão é o dia seguinte // à data de envio. }}{ "request": { "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "devices_filter": "FILTER CONDITION", "send_date": "now", // opcional. AAAA-MM-DD HH:mm OU 'now' "content": { // opcional. Objeto OU string. "en": "English", // Use "wns_content" em vez disso para Windows. "de": "Deutsch" }, "ignore_user_timezone": true, // opcional. "timezone": "America/New_York", // opcional. Se ignorado, UTC-0 é o padrão para "send_date". // Mais informações https://php.net/manual/timezones.php. "campaign": "CAMPAIGN_CODE", // opcional. Código da campanha à qual você deseja atribuir esta mensagem push.
// Parâmetros relacionados ao iOS "ios_badges": 5, // opcional. Número do emblema da aplicação iOS. // Use "+n" ou "-n" para incrementar/decrementar o valor do emblema em n. "ios_sound": "sound file.wav", // opcional. Nome do arquivo de som no pacote principal da aplicação. // Se deixado em branco, o dispositivo não produzirá som // ao receber um push. "ios_sound_off": true, // opcional. Habilita/desabilita o som definido pelo campo "ios_sound". "ios_ttl": 3600, // opcional. Parâmetro de tempo de vida — tempo máximo de vida da mensagem em segundos. "ios_silent": 1, // opcional. Habilita notificações silenciosas (ignora "sound" e "content"). "ios_category_id": "1", // opcional. ID da categoria do iOS8 da Pushwoosh. "ios_category_custom": "category", // opcional. Categoria APNS personalizada. "ios_root_params": { // opcional. Parâmetros de nível raiz para o dicionário aps. "aps": { "content-available": "0", // opcional. Defina "1" para enviar um push silencioso e "0" para um push regular. "mutable-content": 1 // obrigatório para anexos de mídia do iOS10+. }, "attachment": "YOUR_ATTACHMENT_URL", // URL do anexo de mídia do iOS10+. "data": {} // opcional. Dados fornecidos pelo usuário, máx de 4KB }, "apns_trim_content": 1, // opcional. (0|1) Corta as strings de conteúdo excedentes com reticências. "ios_title": { // opcional. Adiciona título para a notificação push do iOS. "en": "title" }, "ios_subtitle": { // opcional. Adiciona subtítulo para a notificação push do iOS. "en": "subTitle" }, "ios_content": { // opcional. Adiciona conteúdo para a notificação push do iOS. "en": "content" },
// Parâmetros relacionados ao Android "android_root_params": { // opcional. Objeto chave-valor personalizado. "key": "value" // Parâmetros de nível raiz para os destinatários do payload android. }, "android_sound": "soundfile", // opcional. Sem extensão de arquivo. Se deixado em branco, o dispositivo // não produzirá som ao receber um push. "android_sound_off": true, // opcional. Habilita/desabilita o som definido pelo campo "android_sound" "android_header": { // opcional. Objeto OU string. Cabeçalho da notificação Android. "en": "header" }, "android_content": { // opcional. Objeto OU string. Conteúdo da notificação Android. "en": "content" }, "android_icon": "icon.png", "android_custom_icon": "URL.png", // opcional. URL do caminho completo para o arquivo de imagem. "android_banner": "URL.png", // opcional. URL do caminho completo para o arquivo de imagem. "android_badges": 5, // opcional. inteiro. Número do emblema do ícone da aplicação Android. // Use "+n" ou "-n" para incrementar/decrementar o valor do emblema em n. "android_gcm_ttl": 3600, // opcional. Parâmetro de tempo de vida — tempo máximo de vida da mensagem em segundos. "android_vibration": 0, // opcional. Vibração forçada no Android para pushes de alta prioridade. "android_led": "#rrggbb", // opcional. Cor hexadecimal do LED, o dispositivo fará sua melhor aproximação. "android_priority": -1, // opcional. Define o parâmetro "importance" para dispositivos com Android 8.0 // e superior, bem como o parâmetro "priority" para dispositivos // com Android 7.1 e inferior. Estabelece o nível de interrupção // de um canal de notificação ou uma notificação particular. // Valores válidos são -2, -1, 0, 1, 2. "android_delivery_priority": "normal", // opcional. "normal" ou "high". Habilita a entrega da notificação // quando o dispositivo está no modo de economia de energia. "android_ibc": "#RRGGBB", // opcional. cor de fundo do ícone no Lollipop, #RRGGBB, // #AARRGGBB, "red", "black", "yellow", etc. "android_silent": 1, // opcional. 0 ou 1. Habilita notificação silenciosa. // Ignora som e conteúdo
// Parâmetros relacionados à Amazon "adm_root_params": { // opcional. Objeto chave-valor personalizado "key": "value" }, "adm_sound": "push.mp3", "adm_sound_off": true, // opcional. Habilita/desabilita o som definido pelo campo "adm_sound" "adm_header": { "en": "Header" }, "adm_content": { "en": "content" }, "adm_icon": "icon.png", "adm_custom_icon": "URL.png", "adm_banner": "URL.png", "adm_ttl": 3600, // opcional. Parâmetro de tempo de vida — o máximo de tempo de vida da mensagem // em segundos. "adm_priority": -1, // opcional. Prioridade do push na gaveta de push da Amazon, // valores válidos são -2, -1, 0, 1 e 2.
// Parâmetros relacionados ao Mac OS X "mac_badges": 3, "mac_sound": "sound.caf", "mac_sound_off": true, "mac_root_params": { "content-available": 1 }, "mac_ttl": 3600, // opcional. Parâmetro de tempo de vida — tempo máximo de vida da mensagem em segundos. "mac_title": { // opcional. Adiciona Título para a notificação push. "en": "title" }, "mac_subtitle": { // opcional. Adiciona subtítulo para a notificação push do MacOS. "en": "subtitle" }, "mac_content": { // opcional. Adiciona conteúdo para a notificação push do MacOS. "en": "content" },
// Parâmetros relacionados ao Windows "wns_content": { // obrigatório. Conteúdo (XML ou bruto) da notificação codificado // em base64 do MIME na forma de Objeto OU String "en": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9ImF2YWlsYWJsZSIvPg==", "de": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48YmFkZ2UgdmFsdWU9Im5ld01lc3NhZ2UiLz4=" }, "wns_type": "Badge", // 'Tile' | 'Toast' | 'Badge' | 'Raw' "wns_tag": "myTag", // opcional. Usado na política de substituição de Tile. // Uma string alfanumérica de não mais que 16 caracteres. "wns_cache": 1, // opcional. (1|0) Traduz para o valor X-WNS-Cache-Policy. "wns_ttl": 600, // opcional. Tempo de expiração para a notificação em segundos.
// Parâmetros relacionados ao Safari "safari_title": { // opcional. Objeto OU string. Título da notificação. "en": "title" }, "safari_content": { // opcional. Objeto OU string. Conteúdo da notificação. "en": "content" }, "safari_action": "Click here", // opcional. "safari_url_args": [ // obrigatório. mas o valor pode estar vazio "firstArgument", "secondArgument" ], "safari_ttl": 3600, // opcional. Parâmetro de tempo de vida — o máximo // tempo de vida de uma mensagem em segundos.
// Parâmetros relacionados ao Chrome "chrome_title": { // opcional. Você pode especificar o cabeçalho da mensagem neste parâmetro. "en": "title" }, "chrome_content": { // opcional. Você pode especificar o conteúdo da mensagem neste parâmetro. "en": "content" }, "chrome_icon": "icon_URL", // opcional. URL do caminho completo para o ícone ou caminho do arquivo de recursos da extensão "chrome_gcm_ttl": 3600, // opcional. Parâmetro de tempo de vida – tempo máximo de vida da mensagem em segundos. "chrome_duration": 20, // opcional. Altera o tempo de exibição do push do Chrome. Defina como 0 para exibir o push // até que o usuário interaja com ele. "chrome_image": "image_URL", // opcional. URL para imagem grande "chrome_root_params": { // opcional. Define parâmetros específicos para mensagens enviadas para o Chrome. "key": "value" }, "chrome_button_text1": "text1", // opcional. "chrome_button_url1": "button1_URL", // opcional. Ignorado se chrome_button_text1 não estiver definido. "chrome_button_text2": "text2", // opcional. "chrome_button_url2": "button2_url", // opcional. Ignorado se chrome_button_text2 não estiver definido.
// Parâmetros relacionados ao Firefox "firefox_title": { // opcional. Objeto OU string. Você pode especificar o cabeçalho da mensagem aqui. "en": "title" }, "firefox_content": { // opcional. Objeto OU string. Você pode especificar o conteúdo da mensagem aqui. "en": "content" }, "firefox_icon": "icon_URL", // opcional. URL do caminho completo para o ícone ou caminho // para o arquivo nos recursos da extensão. "firefox_root_params": { // opcional. Define parâmetros específicos para mensagens enviadas para o Firefox. "key": "value" } }}O básico é muito simples – todos os filtros são realizados nos conjuntos de entidades.
Conjuntos
Anchor link toOs conjuntos são definidos como:
1. Dispositivos inscritos na aplicação específica (A);
2. Dispositivos que correspondem aos valores de tag especificados (T) ou valor de tag específico da aplicação (AT);\
Sintaxe
Anchor link toVamos tentar com alguns exemplos de acordo com a lista acima.
Direcionando assinantes de aplicativos
Anchor link toO filtro “A” define um conjunto de dispositivos inscritos em um aplicativo específico:
A("XXXXX-XXXXX", ["iOS", "Android", "OsX", "Windows", "Amazon", "Safari", "Chrome", "Firefox"])
onde
- “XXXXX-XXXXX” – Código da Aplicação Pushwoosh
- [“iOS”, “Android”, …] – array de plataformas direcionadas. Se omitido, a mensagem será enviada para todas as plataformas disponíveis para este aplicativo.
Filtrando por valores de tag
Anchor link toO filtro “T” define um conjunto de dispositivos que têm valores de tag especificados atribuídos.
T(\"Age\", IN, [17,20])
Define o conjunto de dispositivos que têm a tag “age” definida para um dos valores: 17, 18, 19, 20.
Tipos de tags e operadores
Anchor link toO mais importante a entender é que as tags são compartilhadas entre os aplicativos, e isso representa um instrumento muito poderoso para segmentar e filtrar seus usuários-alvo sem se prender a um aplicativo específico.
A tag pode ser de um dos três tipos diferentes: String, Integer, List. O tipo de tag define quais operadores você pode usar para uma tag específica.
Tags de string
Anchor link toOperadores aplicáveis:
- EQ – direciona dispositivos com um valor de tag especificado
- IN – direciona dispositivos com qualquer um dos valores de tag especificados
- NOTIN – direciona dispositivos sem valores de tag especificados
- NOTEQ – direciona dispositivos com um valor de tag diferente do especificado
- NOTSET – direciona dispositivos sem valor para uma tag especificada
- ANY – direciona dispositivos com qualquer valor definido para uma tag especificada
Exemplos:
T (\"Age\", EQ, 30) – filtra usuários com 30 anos
T (\"favorite_color\", IN, [\"red\",\"green\",\"blue\"]) – filtra usuários que escolheram vermelho, verde ou azul como sua cor favorita.
T (\"Name", NOTSET, \"\") – direciona dispositivos sem valor para a tag Name.
Você pode usar valores numéricos com as tags de string, mas tais valores serão convertidos para uma string.
Tags de inteiro
Anchor link toOperadores aplicáveis:
- GTE – maior ou igual a um valor especificado
- LTE– menor ou igual a um valor especificado
- EQ – igual a um valor especificado
- BETWEEN – entre os valores mínimo e máximo especificados
- IN – qualquer um dos valores especificados
- NOTIN – nenhum valor especificado atribuído a um dispositivo
- NOTEQ – dispositivos com um valor de tag diferente do especificado
- NOTSET – dispositivos sem valor para uma tag especificada
- ANY – dispositivos com qualquer valor definido para uma tag especificada
Exemplos:
T (\"Level\", EQ, 14) – filtra usuários apenas no nível 14.
T (\"Level\", BETWEEN, [1,5) – filtra usuários nos níveis 1, 2, 3, 4 e 5.
T (\"Level", GTE, 29) – direciona usuários que alcançaram pelo menos o nível 29.
Tags de lista
Anchor link toOperadores aplicáveis:
- IN – dispositivos com qualquer um dos valores de tag especificados
Exemplo: T("Category", IN, ["breaking_news","business","politics"])
Tags de data
Anchor link toOperadores aplicáveis:
- GTE – maior ou igual a um valor especificado
- LTE– menor ou igual a um valor especificado
- EQ – igual a um valor especificado
- BETWEEN – entre os valores mínimo e máximo especificados
- NOTEQ – dispositivos com um valor de tag diferente do especificado
- NOTSET – dispositivos sem valor para uma tag especificada
- ANY – dispositivos com qualquer valor definido para uma tag especificada
Exemplos:
AT("7777D-322A7","Last Application Open", BETWEEN, ["2022-02-28", "2022-03-02"])
AT("7777D-322A7","Last Application Open", GTE, "90 days ago")
Operações
Anchor link to- “+” – une dois conjuntos (equivale a OU)
- “*” – cruza dois conjuntos (equivale a E)
- “\” – subtrai um conjunto de outro (equivale a NÃO)
Todas as operações são associativas à esquerda. ”+” e ”*” têm a mesma prioridade. "" tem prioridade maior. Você pode usar parênteses para definir as prioridades dos cálculos.
Note que a operação “\” não é comutativa. A("12345-12345") \ A("67890-67890") não é o mesmo que A("67890-67890") \ A("12345-12345").
getPushHistory
Anchor link toPOST https://api.pushwoosh.com/json/1.3/getPushHistory
Obtém o histórico de mensagens com detalhes do push.
Corpo da Solicitação
Anchor link to| Nome | Tipo | Descrição |
|---|---|---|
| auth* | string | Token de acesso à API do Painel de Controle da Pushwoosh. |
| limitMessages | integer | Limita o número de mensagens em uma resposta. Valores possíveis de 10 a 1000. |
| source | string | Fonte do histórico de push. Pode ser nulo ou: “CP”, “API”, “GeoZone”, “RSS”, “AutoPush”, “A/B Test”. |
| searchBy | string | Valores possíveis para pesquisar. Pode ser nulo ou: “notificationID”, “notificationCode”, “applicationCode”, “campaignCode”. |
| value | string | Valor de pesquisa definido de acordo com o campo “searchBy”. |
| lastNotificationID | string | Usado para paginação. Último messageId da chamada /getPushHistory anterior. Veja detalhes abaixo. |
{ "status_code": 200, "status_message": "OK", "response": { "rows": [{ "id": 10191611434, "code": "8071-07AD1171-77238AD1", "createDate": "2020-09-14 12:26:21", "sendDate": "2020-09-14 12:26:21", "content": { "en": "Hello!" }, "url": null, "ios_title": null, "ios_subtitle": null, "ios_root_params": null, "android_header": null, "android_root_params": null, "conditions": null, "conditions_operator": "AND", "filter_code": "E3A64-A5F3C", "filter_conditions": "#In-app Purchase(≠0)", "filter_name": "Purchased something", "geozone": null, "campaignId": "", "campaignName": "", "subscription_segments": null, "open": { "C90C0-0E786": { "IOS": 0 } }, "sent": { "C90C0-0E786": { "IOS": 1 } }, "ctr": { "C90C0-0E786": 0 } }, { "id": 10191609202, "code": "41CA-83F8E0D7-7A63822B", "createDate": "2020-09-14 12:25:55", "sendDate": "2020-09-14 12:25:55", "content": { "en": "Hi!" }, "url": null, "ios_title": null, "ios_subtitle": null, "ios_root_params": null, "android_header": null, "android_root_params": null, "conditions": null, "conditions_operator": "AND", "filter_code": null, "filter_conditions": null, "filter_name": null, "geozone": null, "campaignId": "", "campaignName": "", "subscription_segments": { "2D732-BB981": "News" }, "open": { "C90C0-0E786": { "CHROME": 0, "IOS": 0 } }, "sent": { "C90C0-0E786": { "CHROME": 1, "IOS": 2 } }, "ctr": { "C90C0-0E786": 0 } }] }}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "source": null, // opcional. Valores possíveis são nulo, "CP", "API", "GeoZone", // "RSS", "AutoPush", "A/B Test" "searchBy": "applicationCode", // opcional. Valores possíveis são "", "notificationID", // "notificationCode", "applicationCode", "campaignCode" "value": "C8717-703F2", // opcional. Valor de pesquisa definido de acordo com o campo "searchBy". "lastNotificationID": 0, // opcional. Usado para paginação. Último messageId da // chamada /getPushHistory anterior. Veja detalhes abaixo. "limitMessages": 1000 // opcional. Valor possível de 10 a 1000. }}Este método retornará 1000 mensagens da conta ordenadas por Id da mensagem. Para obter a segunda página, especifique o último Id da mensagem da resposta anterior no parâmetro lastNotificationId.
Tipos de dados de resposta
Anchor link toid -- int | 0code -- stringcreateDate -- string (data: %Y-%m-%d %H:%M:%S)sendDate -- string (data: %Y-%m-%d %H:%M:%S)content -- array ( dict {lang: value} | list [])title -- array ( dict {lang: value} | list [])subtitle -- array ( dict {lang: value} | list [])url -- stringios_title -- string | array ( dict {lang: value} ) | nullios_subtitle -- string | array ( dict {lang: value} ) | nullios_root_params -- dict (JSON) | nullandroid_header -- string | array ( dict {lang: value} ) | nullandroid_root_params -- dict (JSON) | nullconditions -- list (JSON) | nullconditions_operator -- string | nullfilter_code -- string | nullfilter_name -- string | nullfilter_conditions -- string | nullgeozone -- string | nullcampaignId -- string | ""campaignName -- string | ""subscription_segments (obsoleto) -- list (JSON) | nulldata -- dict (JSON) | nullopen -- dict [dict [string: int]] | "" Exemplo: 'open': {'AAAAA-BBBBB': {'IOS': 1, 'ANDROID': 1}}sent -- dict [dict [string: int]] | "" Exemplo: 'sent': {'AAAAA-BBBBB': {'IOS': 10, 'ANDROID': 10}}ctr -- dict [string: int] | "" Exemplo: {'AAAAA-BBBBB': 1}errors -- dict [string: int] | "" Exemplo: {'ANDROID': 1, 'IOS': 1}cancelMessage
Anchor link toPOST https://api.pushwoosh.com/json/1.3/cancelMessage
Exclui uma mensagem agendada.
Corpo da Solicitação
Anchor link to| Nome | Tipo | Descrição |
|---|---|---|
| auth* | string | Token de acesso à API do Painel de Controle da Pushwoosh. |
| message* | string | O Código da mensagem obtido na resposta /createMessage. |
{ "status_code":200, "status_message":"OK"}{ "request":{ "auth": "yxoPUlwqm…………pIyEX4H", // obrigatório. Token de acesso à API do Painel de Controle da Pushwoosh "message": "xxxx-xxxxxxx-xxxxxx" // obrigatório. O código da mensagem obtido na resposta /createMessage }}Códigos de status:
| Código de status HTTP | status_code | Descrição |
|---|---|---|
| 200 | 200 | Mensagem cancelada com sucesso |
| 200 | 210 | Erro de argumento. Veja status_message para mais informações. |
| 400 | N/A | String de solicitação malformada |
| 500 | 500 | Erro interno |