Zasílání PUSH/In-App zpráv

Jaroslav Bouška Jaroslav Bouška
1. července 2025

Zasílání PUSH/In-App zpráv z aplikace Boldem je realizováno vytvořením textové zprávy na základě vygenerování z šablony a následného zaslání na předem definovaný HTTP endpoint.
Zasílaná zpráva je ve formátu HTTP POST a zasílaný JSON lze definovat pomocí šablonovacího systému.

Výsledný formát vygenerované PUSH zprávy je text, obohacený o nahrazené proměnné, slevové kupóny, oslovení apod. jako v případě emailové zprávy. Lze využít veškeré možnosti práce s proměnnými a šablonovacího systému.

U In-App zprávy je generován základní HTML kód, který lze následně uživateli zobrazit v mobilní aplikaci za pomoci výchozího webového prohlížeče. U tohoto typu zprávy už můžeme využít i obrázky uložené na Boldem CDN, můžeme měřit prokliky odkazů a také otevření jednotlivých zpráv za pomocí trackovacího odkazu. Pokud nechcete přenášet celý HTML kód, lze předat pouze odkaz na webovou verzi dané zprávy a tuto URL následně uživateli načíst v aplikaci.

V předávaném JSONu na cílové API můžeme nahradit i uživatelské proměnné, např. ID uživatele ve vašem systému pro efektivnější spárování ve vaší aplikaci.

Na API můžeme také předávat vlastní parametry zprávy, které budou společné pro všechny zprávy z dané kampaně – např. slevový kupón a jeho platnost. Tyto vlastní parametry se nastavují na úrovní kampaně/automatizace.

Ukázka API konektoru pro jednotlivou zprávu, kde se z uživatelských dat předává vyplnění userId a podle typu zprávy se vyplňuje body (pro PUSH notifikaci) a nebo webViewUrl (pro In-App zprávu).

{
   "messageId": {{message.messageId}},
   "appType": "PAS",
   "userId": "{{contact.user_ids}}",
    "type": "{{(message.messageSubType == 1 ? "IN_APP" : "PUSH")}}",
    "title": "{{message.title | string.strip_newlines}}",
    {{if(message.messageSubType == 2)}}
    "body": "{{message.content | string.strip_newlines}}",
    {{end}}
    {{if(message.messageSubType == 1)}}
    "webViewUrl": "{{webMailUrl}}",
    {{end}}
    "validity": "{{messageCustomHeaders?.validity}}",
    "showAlways": "{{messageCustomHeaders?.showAlways}}",
    "coupon": "{{messageCustomHeaders?.coupon}}",
    "campaignId": {{if message.automationId != null}}"AUTOMATION_{{message.automationId}}"{{else}}"AUTOMATION_{{ math.uuid }}"{{end}},
    "distributionId": {{if message.generatorExecutionId != null}}{{message.generatorExecutionId}}{{else if message.automationId != null}}"{{date.now | date.to_string '%y%m%d'}}"{{else}}"{{ math.uuid }}"{{end}}
    }

Zprávy lze na API zasílat buď jednotlivě a nebo v dávkách, např. po 20 zprávách.

Ukázka generování finální dávky zprávy kde překontrolujeme, že každá zpráva má vyplněné userId z uživatelských dat.

{{ func filterForItemsWithUserId(item)
    ret (item.userId != null && !(string.empty item.userId))
end }}
{
"items": {{items | array.filter @filterForItemsWithUserId  | printJson}}
}

Ukázka message modelu

{
  "messageId": 1,  
  "campaignId": 10,
  "generatorExecutionId": 15,
  "dataSourceId": 1,
  "guid": "4e19a13d-cab0-467b-8776-423eaee61f2b",
  "messageType": 5, // 5 - mass message type, 7 - transactional message type
  "messageSubType": 1,
  "to": "example@example.com",
  "isHtml": true,
  "contact": {
    "contactId": 123,
    "guid": "4e19a13d-cab0-467b-8776-423eaee61f2b",
    "email": "example@example.com",
    "mobilePhone": "555-555-5555",
    "name": "John",
    "surname": "Doe",
    "title": "Mr.",
    "street": "123 Main St",
    "city": "Anytown",
    "zip": "12345",
    "sex": 1,
    "company": "Acme Inc.",
    "mujUzivatelskySloupec": "vase hodnota",
    "oblibenaKapela": "Red Hot Chili Peppers",
  },
  "created": "2025-08-01T10:00:00Z",
  "title": "Welcome to our service",
  "content": "Hello John, use your code ABC to save today!",
  "templateId": 5,
  "customHeaders": [
    {
      "name": "X-Custom-Header",
      "value": "HeaderValue"
    }
  ],
  "automationId": null,
  "automationBlockId": null,
  "automationStateId": null,
  "tags": ["welcome", "promo"],
  "groupId": null,
  "trackOpens": true,
  "trackClicks": true
}

Požadavky můžeme obohatit o vlastní HTTP hlavičky, např. pro autorizaci za pomocí API klíče.

Konektor můžete využít jak pro zasílání hromadných zpráv tak i pro transakční zprávy, např. generované na základě definované logiky z automatizací.

Notifikace o doručení zprávy lze do Boldem zpětně notifikovat pomocí api.boldem.cz s využitím Endpointu POST ​/v1​/mass-message-delivery, kde v zaslaném JSONu zasíláte ID dané zprávy a datum doručení.