Skip to content

Conversation

@splindsay-92
Copy link
Contributor

@splindsay-92 splindsay-92 commented Dec 15, 2025

Description

FTF-443

Originally this was just about adding a guide on data processing, but it's since expanded into a rework of the existing data-storage use-case guide into an expanded feature set under the Chat document root directory.

We now have a seperate section that deals with external storage and processing, under which data extraction, processing and storage all sit under.

Checklist

@coderabbitai
Copy link

coderabbitai bot commented Dec 15, 2025

Important

Review skipped

Auto reviews are disabled on this repository.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@splindsay-92 splindsay-92 force-pushed the chat/external-data-processing branch 4 times, most recently from 81034ca to 141f0a2 Compare December 18, 2025 21:26
@m-hulbert m-hulbert added the review-app Create a Heroku review app label Dec 19, 2025
@ably-ci ably-ci temporarily deployed to ably-docs-chat-external-czhado December 19, 2025 11:43 Inactive
@splindsay-92 splindsay-92 requested a review from m-hulbert January 5, 2026 11:01
@splindsay-92 splindsay-92 force-pushed the chat/external-data-processing branch from a491a26 to 6b0ffcc Compare January 5, 2026 18:38
@splindsay-92 splindsay-92 requested a review from AndyTWF January 13, 2026 13:37
@splindsay-92 splindsay-92 force-pushed the chat/external-data-processing branch from 6b0ffcc to 2be4b41 Compare January 21, 2026 13:40
@splindsay-92 splindsay-92 marked this pull request as ready for review January 21, 2026 13:40
@splindsay-92 splindsay-92 changed the title Add external data processing guide Add external data processing and storage section Jan 22, 2026
@AndyTWF AndyTWF added review-app Create a Heroku review app and removed review-app Create a Heroku review app labels Jan 22, 2026
@@ -0,0 +1,552 @@
---
title: "Extract messages via integrations"
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We do already have https://ably.com/docs/guides/chat/export-chat - is this intended to replace that?

```
</Code>

## Understanding channel names and room names <a id="channel-names"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think there's benefit here of encouraging users to group their chat rooms under a common namespace for simplicity, e.g gamechat:<room>

### Example webhook handler

<Code>
```javascript
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this add any value to the narrative? It's very abstract and is fairly obvious

```
</Code>
## Using queues <a id="queues"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would bump below streaming

await room.messages.send({
text: responseText
}, {
extras: {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This approach doesn't work with Chat - metadata goes into data and headers go specifically into extras.headers

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Something we should think about addressing)

await room.messages.send({
text: "Hello!",
metadata: {
intent: 'translate',
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would this decision be a client-side one, or something that the server would decide? If it's client side then you're up for spoofing.

Also for translation specifically on-device translation is something we'd consider

- **Consistency**: Webhook calls that fail will lead to inconsistencies between your data storage and Ably, which can be difficult to resolve. Detect if this happens using the `[meta]log` channel and use the [history endpoint](#history-endpoint) to backfill missing data.
- **[At-least-once delivery](/docs/platform/architecture/idempotency#protocol-support-for-exactly-once-delivery)**: You need to handle duplicate messages. Deduplication can be done by checking `serial` and `version.serial`.

## Using outbound streaming <a id="outbound-streaming"/>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some of these sections feel like repeating the above?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review-app Create a Heroku review app

Development

Successfully merging this pull request may close these issues.

5 participants