Μετάβαση στο κύριο περιεχόμενο

Ροή δεδομένων

Η Ροή δεδομένων προωθεί συμβάντα από το Joryio σε εξωτερικούς προορισμούς σχεδόν σε πραγματικό χρόνο. Κάθε stream συνδέει έναν προορισμό με ένα σύνολο συμβάντων και το Joryio παραδίδει τα συμβάντα που ταιριάζουν σε παρτίδες στον προορισμό.

Μεταβείτε στο Data → Data Streaming για να διαχειριστείτε τα streams σας.

Προορισμοί

ΠροορισμόςΤύποςΤι κάνει
WebhookHTTP endpointPOST κάθε συμβάν ως JSON σε οποιοδήποτε HTTPS URL
SnowflakeData warehouseΣυνεχής φόρτωση συμβάντων σε πίνακα Snowflake
BigQueryData warehouseΡοή συμβάντων σε dataset BigQuery
Amazon RedshiftData warehouseΦόρτωση συμβάντων σε cluster Amazon Redshift
Amazon S3Object storageΕγγραφή ομαδοποιημένων αρχείων JSON / NDJSON σε bucket
KafkaEvent streamΠαραγωγή συμβάντων σε topic Kafka
MixpanelProduct analyticsΠροώθηση συμβάντων σε έργο Mixpanel
AmplitudeProduct analyticsΠροώθηση συμβάντων σε έργο Amplitude

Πεδία σύνδεσης

Κάθε προορισμός ζητά τα δικά του στοιχεία σύνδεσης. Τα μυστικά (κωδικοί, κλειδιά, tokens, service-account JSON) κρυπτογραφούνται σε κατάσταση ηρεμίας.

  • Webhook - URL, signing Secret (προαιρετικό), πρόσθετα Headers (προαιρετικά)
  • Snowflake - Account, Username, Password, Role, Warehouse, Database, Schema, Table
  • BigQuery - Project ID, Dataset ID, Table ID, Service Account JSON
  • Amazon Redshift - Host, Port, Database, User, Password, Schema, Table
  • Amazon S3 - Bucket, Prefix, Region, Endpoint (προαιρετικό, για S3-compatible storage), Access Key ID, Secret Access Key
  • Kafka - Brokers, Topic, SASL Username/Password, SSL
  • Mixpanel - Project Token, Region (US / EU / India)
  • Amplitude - API Key, Region (US / EU)

Δημιουργία Stream

  1. Μεταβείτε στο Data → Data Streaming και επιλέξτε Create Stream.
  2. Δώστε όνομα στο stream (εμφανίζεται στη λίστα streams) και επιλέξτε προορισμό.
  3. Συμπληρώστε τα πεδία σύνδεσης του προορισμού.
  4. Επιλέξτε τη μορφή payload - JSON (ένα αντικείμενο ανά συμβάν) ή NDJSON (μία γραμμή, ένα συμβάν ανά γραμμή).
  5. Επιλέξτε ποια συμβάντα θα μεταδίδονται (δείτε παρακάτω).
  6. Ελέγξτε τη γραμμή σύνοψης και επιλέξτε Create Stream.

Επιλογή συμβάντων

Ελέγχετε ακριβώς ποια συμβάντα λαμβάνει ένα stream:

  • Όλα τα συμβάντα - ενεργοποιήστε το για μετάδοση κάθε τρέχοντος και μελλοντικού συμβάντος. Απενεργοποιήστε το για επιλογή συγκεκριμένων συμβάντων.
  • Ανά ομάδα - τα ενσωματωμένα συμβάντα ομαδοποιούνται (Messaging, In-App, Journeys, Campaigns, E-Commerce και Identity). Επιλέξτε ολόκληρη ομάδα ή μεμονωμένα συμβάντα.
  • Προσαρμοσμένα συμβάντα - κάτω από το Custom Event, αναζητήστε ή πληκτρολογήστε τα δικά σας tracked events (αυτά που στέλνετε με track(), όπως purchase ή page_view). Ο επιλογέας εμφανίζει συμβάντα που το workspace σας έχει πράγματι καταγράψει· μπορείτε επίσης να πληκτρολογήσετε συμβάν που δεν έχει καταγραφεί ακόμη και να επιλέξετε Add.

Κατάλογος συμβάντων

Αυτά είναι τα ενσωματωμένα συμβάντα που μπορείτε να μεταδώσετε. Μπορείτε επίσης να μεταδώσετε οποιοδήποτε προσαρμοσμένο συμβάν στείλετε με track().

ΟμάδαΣυμβάντα
Messagingmessage.sent, message.delivered, message.opened, message.clicked, message.failed, message.bounced, message.complained, message.spamreport, message.deferred, message.unsubscribed, message.queued, message.skipped
Inbound repliessms.message.received, whatsapp.message.received
In-Appin_app.displayed, in_app.clicked, in_app.dismissed, in_app.converted
Journeyscanvas.experiment.entered, canvas.ai_decision.entered
Campaignscampaign.sent, campaign.abtest.winner_declared, campaign.ai_decision.entered
E-CommerceOrder Completed
Identity$identify, $alias
Τα συμβάντα messaging είναι ανεξάρτητα από κανάλι

Δεν υπάρχουν ονόματα συμβάντων ανά κανάλι όπως email.delivered ή sms.delivered. Κάθε αποστολή μέσω Email, SMS, Push, WhatsApp και Webhook εκπέμπει τα ίδια συμβάντα message.* και κάθε payload περιέχει ιδιότητα channel - μία από email, sms, push, whatsapp ή webhook. Εγγραφείτε μία φορά στο message.delivered για να λαμβάνετε παραδόσεις από όλα τα κανάλια και φιλτράρετε έπειτα από την ιδιότητα channel.

Περιορισμός καναλιών στη ρύθμιση stream (προαιρετικό): Όταν επιλέγετε συμβάν message.*, εμφανίζεται φίλτρο ανά κανάλι στη φόρμα δημιουργίας/επεξεργασίας - επιλέξτε οποιοδήποτε από email, sms, push, whatsapp ή webhook για μετάδοση μόνο αυτών των καναλιών. Αφήστε το κενό για όλα τα κανάλια (προεπιλογή). Αυτό ισχύει μόνο για συμβάντα που περιέχουν ιδιότητα channel· συμβάντα χωρίς κανάλι (canvas.*, Order Completed κ.λπ.) δεν επηρεάζονται.

Ομαδοποίηση

Τα συμβάντα αποθηκεύονται προσωρινά και παραδίδονται σε παρτίδες. Ορίζετε:

  • Μέγεθος παρτίδας - πόσα συμβάντα συσσωρεύονται πριν από αποστολή.
  • Διάστημα αποστολής - τον μέγιστο χρόνο αναμονής πριν από την αποστολή μερικής παρτίδας.

Μια παρτίδα παραδίδεται όταν φτάσει το μέγεθος παρτίδας ή λήξει το διάστημα αποστολής, όποιο συμβεί πρώτο.

Πώς λειτουργεί

Τα συμβάντα παραδίδονται σε streams μέσω ενός ανθεκτικού fan-out bus που είναι αποσυνδεδεμένο από την αποθήκευση analytics. Κάθε stream βλέπει την πλήρη ροή συμβάντων σε όλα τα κανάλια, επομένως ένας προορισμός συνεχίζει να λαμβάνει συμβάντα ανεξάρτητα από τον τρόπο εγγραφής των analytics.

Όταν ένα συμβάν ταιριάζει με την επιλογή συμβάντων ενός stream, μπαίνει σε ουρά και παραδίδεται στον προορισμό στην επόμενη παρτίδα. Κάθε παράδοση περιλαμβάνει το όνομα συμβάντος, τις ιδιότητες, timestamp και αναγνωριστικό χρήστη - και, για συμβάντα messaging, το κανάλι προέλευσης channel. Οι προορισμοί warehouse και storage φορτώνουν την παρτίδα ως γραμμές/αρχεία· οι προορισμοί product analytics προωθούν κάθε συμβάν μέσω του ingestion API τους· τα webhooks λαμβάνουν σώμα JSON (ή NDJSON).

Κάθε stream ομαδοποιεί (με βάση μέγεθος παρτίδας και διάστημα αποστολής) και επαναλαμβάνει την προσπάθεια σε αποτυχία. Αν ένας προορισμός δεν είναι προσβάσιμος, τα μη παραδοθέντα συμβάντα επανεισάγονται στην ουρά και παραδίδονται ξανά μόλις ανακάμψει, ώστε μια διακοπή να μην χάνει τα δεδομένα σας.

Εγγυήσεις παράδοσης και διπλότυπα

Η παράδοση είναι τουλάχιστον μία φορά (at-least-once). Σε σπάνιες περιπτώσεις - μια επανάληψη μετά από σφάλμα δικτύου, ή επανεκκίνηση εργάτη στη μέση μιας παρτίδας - το ίδιο συμβάν μπορεί να παραδοθεί στον προορισμό σας περισσότερες από μία φορές.

Αυτό είναι σκόπιμο και είναι η ίδια εγγύηση που προσφέρει κάθε πλατφόρμα streaming. Η εναλλακτική, το πολύ μία φορά, θα σήμαινε σιωπηλή απώλεια ενός συμβάντος όταν το αποτέλεσμα της παράδοσης είναι άγνωστο· προτιμούμε να το στείλουμε δύο φορές παρά να το χάσουμε.

Κάθε συμβάν φέρει σταθερό eventId. Είναι η ίδια τιμή σε κάθε παράδοση του συμβάντος, οπότε μπορείτε να τη χρησιμοποιήσετε για απαλοιφή διπλότυπων:

ΠροορισμόςΤι κάνουμε
Amplitudeστέλνεται ως insert_id - το Amplitude απαλείφει διπλότυπα αυτόματα
Mixpanelστέλνεται ως $insert_id - το Mixpanel απαλείφει διπλότυπα αυτόματα
S3μια παρτίδα που ξαναπαραδίδεται γράφεται στο ίδιο κλειδί αντικειμένου, αντικαθιστώντας αντί να προσθέτει δεύτερο αρχείο
BigQuery, Snowflake, Redshiftαπαλείψτε διπλότυπα με βάση το eventId κατά τη φόρτωση, π.χ. ROW_NUMBER() OVER (PARTITION BY eventId)
Webhookαγνοήστε ένα eventId που έχετε ήδη επεξεργαστεί

Για αποθήκες δεδομένων και αποθήκευση, τα διπλότυπα είναι ακίνδυνα εφόσον τα απαλείφετε κατά τη φόρτωση. Για webhooks που εκτελούν ενέργεια σε κάθε συμβάν - δημιουργία αιτήματος, χρέωση - ελέγξτε το eventId πριν ενεργήσετε.

Παρακολούθηση

Η λίστα streams εμφανίζει KPI και κατάσταση ανά stream:

  • Active - κανονική παράδοση
  • Paused - προσωρινά διακοπεί (μπορείτε να συνεχίσετε οποιαδήποτε στιγμή)
  • Error - οι πρόσφατες παραδόσεις αποτυγχάνουν (ελέγξτε τη σύνδεση)

Μπορείτε επίσης να δείτε το σύνολο παραδόσεων, το σύνολο αποτυχιών, το ποσοστό παράδοσης και την ώρα τελευταίας παράδοσης. Ανοίξτε ένα stream για να δείτε τη σελίδα λεπτομερειών του, να το επεξεργαστείτε, να το θέσετε σε παύση/συνέχιση ή να το διαγράψετε.