Vai al contenuto principale

Endpoint Messaging

Il modulo Messaging gestisce le conversazioni in tempo reale, i messaggi di chat, le notifiche push, l'invio SMS/email, le connessioni WebSocket, la messaggistica privata, la registrazione dei dispositivi e i provider di messaggistica testuale. Fornisce il livello di comunicazione utilizzato in tutte le applicazioni ChurchApps sia per la chat in diretta streaming che per le notifiche asincrone.

Percorso base: /messaging

Conversazioni

Percorso base: /messaging/conversations

MetodoPercorsoAuthPermessoDescrizione
GET/timeline/ids?ids=JWTCarica le conversazioni per ID separati da virgola con primo/ultimo messaggio
GET/messages/:contentType/:contentIdJWTCarica le conversazioni per contenuto con messaggi paginati (?page=&limit=)
GET/postsJWTOttieni le conversazioni di tipo post per i gruppi dell'utente corrente
GET/posts/group/:groupIdJWTOttieni le conversazioni di tipo post per un gruppo specifico
GET/current/:churchId/:contentType/:contentIdPubblicoOttieni o crea la conversazione corrente per un contenuto (decrittografa automaticamente il contentId)
GET/:churchId/:contentType/:contentIdPubblicoCarica le conversazioni per tipo di contenuto e ID
GET/:churchId/:idPubblicoCarica una singola conversazione per ID
POST/JWTCrea o aggiorna conversazioni (batch)
POST/startJWTAvvia una nuova conversazione con un messaggio di commento iniziale
DELETE/:churchId/:idJWTElimina una conversazione

Esempio: Avvia una Conversazione

POST /messaging/conversations/start
Authorization: Bearer <token>

{
"groupId": "group-123",
"contentType": "group",
"contentId": "group-123",
"title": "Weekly Discussion",
"comment": "Welcome to this week's discussion thread!"
}
{
"id": "conv-456",
"churchId": "church-789",
"contentType": "group",
"contentId": "group-123",
"title": "Weekly Discussion",
"dateCreated": "2026-02-17T10:00:00.000Z",
"visibility": "public",
"allowAnonymousPosts": false,
"groupId": "group-123"
}

Messaggi

Percorso base: /messaging/messages

MetodoPercorsoAuthPermessoDescrizione
GET/conversation/:conversationIdJWTCarica tutti i messaggi per una conversazione
GET/catchup/:churchId/:conversationIdPubblicoCarica tutti i messaggi per una conversazione (recupero pubblico per chat dal vivo)
GET/:churchId/:idPubblicoCarica un singolo messaggio per ID
POST/JWTSalva messaggi (batch). Invia aggiornamenti in tempo reale e attiva le notifiche
POST/sendPubblicoInvia messaggi (batch, pubblico). Invia aggiornamenti in tempo reale tramite WebSocket e attiva le notifiche
POST/setCalloutJWTTrasmetti un messaggio di richiamo a una conversazione in tempo reale
DELETE/:churchId/:idJWTElimina un messaggio e trasmetti l'eliminazione in tempo reale

Esempio: Invia un Messaggio

POST /messaging/messages/send

[
{
"churchId": "church-789",
"conversationId": "conv-456",
"personId": "person-123",
"displayName": "John Smith",
"content": "Hello everyone!",
"messageType": "comment"
}
]
[
{
"id": "msg-001",
"churchId": "church-789",
"conversationId": "conv-456",
"personId": "person-123",
"displayName": "John Smith",
"timeSent": "2026-02-17T10:05:00.000Z",
"content": "Hello everyone!",
"messageType": "comment"
}
]

Messaggi Privati

Percorso base: /messaging/privatemessages

MetodoPercorsoAuthPermessoDescrizione
GET/JWTCarica tutti i messaggi privati per l'utente corrente (include l'ultimo messaggio per conversazione, segna tutti come letti)
GET/existing/:personIdJWTTrova una conversazione privata esistente con una persona specifica
GET/:idJWTCarica un messaggio privato per ID (cancella la notifica se indirizzato all'utente corrente)
POST/JWTInvia messaggi privati (batch). Attiva la notifica push al destinatario

Notifiche

Percorso base: /messaging/notifications

MetodoPercorsoAuthPermessoDescrizione
GET/unreadCountJWTOttieni il conteggio delle notifiche non lette per l'utente corrente
GET/myJWTCarica tutte le notifiche per l'utente corrente (segna tutte come lette)
GET/tmpEmailPubblicoAttiva il digest email giornaliero delle notifiche (endpoint di debug/cron)
GET/:churchId/person/:personIdJWTCarica le notifiche per una persona specifica
GET/:churchId/:idJWTCarica una notifica per ID
POST/JWTCrea o aggiorna notifiche (batch)
POST/createJWTCrea notifiche per più persone. Body: { peopleIds, contentType, contentId, message, link }
POST/markRead/:churchId/:personIdJWTSegna tutte le notifiche come lette per una persona
POST/sendTestJWTInvia una notifica push di test. Body: { personId, title }
POST/pingPubblicoCrea una notifica da un trigger esterno. Body: { personId, churchId, contentType, contentId, message, triggeredByPersonId }
DELETE/:churchId/:idJWTElimina una notifica

Esempio: Crea Notifiche

POST /messaging/notifications/create
Authorization: Bearer <token>

{
"peopleIds": ["person-123", "person-456"],
"contentType": "group",
"contentId": "group-789",
"message": "New event posted in your group",
"link": "/groups/group-789"
}

Preferenze di Notifica

Percorso base: /messaging/notificationpreferences

Estende il CRUD standard. La classe base fornisce POST / (crea o aggiorna, nessun permesso richiesto).

MetodoPercorsoAuthPermessoDescrizione
POST/JWTCrea o aggiorna le preferenze di notifica (dalla classe base CRUD)
GET/myJWTCarica le preferenze di notifica per l'utente corrente (crea automaticamente i valori predefiniti se non esistono)

Connessioni

Percorso base: /messaging/connections

Gestisce le connessioni WebSocket/in tempo reale per la chat in diretta streaming.

MetodoPercorsoAuthPermessoDescrizione
GET/:churchId/:conversationIdPubblicoCarica tutte le connessioni per una conversazione
POST/PubblicoRegistra connessioni (batch). Numera automaticamente gli utenti anonimi e invia aggiornamenti di presenza/IP bloccati
POST/setNamePubblicoAggiorna il nome visualizzato per una connessione tramite ID socket. Body: { socketId, name }
POST/tmpSendAlertPubblicoInvia un avviso di notifica alle connessioni di una persona. Body: { churchId, personId }

Dispositivi

Percorso base: /messaging/devices

Gestisce la registrazione dei dispositivi per le notifiche push e l'abbinamento dei contenuti (es. app Lessons su display TV).

MetodoPercorsoAuthPermessoDescrizione
POST/enrollJWTRegistra o aggiorna un dispositivo (registrazione push mobile). Corrisponde per token FCM o ID dispositivo
POST/enrollAnonPubblicoRegistra un dispositivo anonimo e genera un codice di abbinamento a 4 caratteri
POST/PubblicoSalva dispositivi (batch)
GET/pair/:pairingCodeJWTAbbina un dispositivo utilizzando il suo codice di abbinamento. Opzionale ?contentType=&contentId= per assegnare il contenuto
GET/status/:deviceIdPubblicoVerifica lo stato di abbinamento di un dispositivo
GET/:churchIdJWTCarica tutti i dispositivi per una chiesa
GET/:churchId/person/:personIdJWTCarica tutti i dispositivi per una persona
GET/:churchId/:idJWTCarica un dispositivo per ID
DELETE/:churchId/:idJWTElimina un dispositivo

Esempio: Registra un Dispositivo

POST /messaging/devices/enroll
Authorization: Bearer <token>

{
"fcmToken": "firebase-token-abc123",
"appName": "B1Mobile",
"label": "John's iPhone",
"deviceInfo": "iOS 17, iPhone 15"
}
{
"id": "device-001",
"churchId": "church-789",
"fcmToken": "firebase-token-abc123",
"appName": "B1Mobile",
"label": "John's iPhone",
"registrationDate": "2026-02-17T10:00:00.000Z",
"lastActiveDate": "2026-02-17T10:00:00.000Z"
}

Contenuti dei Dispositivi

Percorso base: /messaging/devicecontents

Gestisce le assegnazioni di contenuto per i dispositivi abbinati (es. quale lezione è visualizzata su una TV).

MetodoPercorsoAuthPermessoDescrizione
GET/deviceId/:deviceIdJWTCarica le assegnazioni di contenuto per un dispositivo
POST/JWTSalva le assegnazioni di contenuto del dispositivo (batch)
DELETE/:idJWTElimina un'assegnazione di contenuto del dispositivo

Messaggistica Testuale

Percorso base: /messaging/texting

Gestisce i provider di messaggistica SMS, la messaggistica di gruppo e il tracciamento delle consegne.

MetodoPercorsoAuthPermessoDescrizione
GET/providersJWTCarica i provider di messaggistica testuale per la chiesa (le credenziali sono mascherate)
GET/preview/:groupIdJWTAnteprima dei destinatari per un messaggio di gruppo (conteggi idonei, rinunce, senza telefono)
GET/sentJWTCarica tutti i record dei messaggi di testo inviati per la chiesa
GET/sent/:id/detailsJWTCarica un messaggio inviato con i log di consegna per destinatario
POST/providersJWTSalva i provider di messaggistica testuale (batch). Crittografa le credenziali API
POST/sendJWTInvia un SMS a tutti i membri idonei di un gruppo. Body: { groupId, message }
POST/sendPersonJWTInvia un SMS a una singola persona. Body: { personId, phoneNumber, message }
DELETE/providers/:idJWTElimina un provider di messaggistica testuale

Esempio: Invia Messaggio di Testo al Gruppo

POST /messaging/texting/send
Authorization: Bearer <token>

{
"groupId": "group-123",
"message": "Reminder: Service starts at 10 AM this Sunday!"
}
{
"totalMembers": 50,
"recipientCount": 42,
"successCount": 40,
"failCount": 2,
"optedOutCount": 5,
"noPhoneCount": 3
}

IP Bloccati

Percorso base: /messaging/blockedips

Gestisce il blocco degli IP per le conversazioni chat in diretta streaming.

MetodoPercorsoAuthPermessoDescrizione
POST/JWTSalva gli IP bloccati (batch). Trasmetti la lista aggiornata dei blocchi alla conversazione
POST/clearJWTCancella tutti gli IP bloccati per servizi specifici. Body: [{ serviceId, churchId }]

Log di Consegna

Percorso base: /messaging/deliverylogs

Traccia lo stato di consegna per i messaggi inviati (SMS, notifiche push, email).

MetodoPercorsoAuthPermessoDescrizione
GET/content/:contentType/:contentIdJWTCarica i log di consegna per tipo di contenuto e ID
GET/person/:personIdJWTCarica i log di consegna per una persona. Filtri opzionali ?startDate=&endDate=
GET/recentJWTCarica i log di consegna recenti per la chiesa. Opzionale ?limit= (predefinito 100)
GET/:idJWTCarica un log di consegna per ID

Pagine Correlate