Skip to content

Attachments & Media ​

Every channel supports some form of inbound and outbound media — photos, videos, audio, documents. The inbox renders them inline with channel-appropriate controls.

What renders inline ​

TypeWhatsAppWeChatMessengerInstagramTelegramViber
Image✓ thumbnail + lightbox✓✓✓✓✓
Video✓ click-to-play✓✓✓✓—
Audio (voice note)✓ inline player✓✓—✓✓
Sticker✓ rendered bare✓✓—✓✓
GIF✓ bare + autoplay✓✓—✓—
Document (PDF)✓ link-out✓✓—✓✓
Location✓ static map—✓—✓✓
Contact card✓ formatted—✓—✓—

Inbound media is downloaded into your school's storage on receive and served via signed URLs from the conversation. We don't hot-link to Meta / WeChat URLs because those expire fast (Meta tokens are ~5 min, WeChat media is 3 days).

Sending attachments ​

The composer has a paperclip icon. Drag-and-drop also works.

  • Image / video / document — uploaded to your school's private chat-media storage, then handed to the channel's send endpoint as a hosted-media reference.
  • WhatsApp media size cap — 16 MB for image/video, 5 MB for stickers, 100 MB for documents.
  • WeChat media size cap — 2 MB images, 10 MB voice, 10 MB video. WeChat needs an extra media_id step (upload to WeChat first); Kinderpedia handles it transparently.
  • Filename + caption — the upload dialog lets you add a caption that goes alongside the media bubble.

WeChat media proxying ​

WeChat's media URLs are scoped to the OA's access_token and refuse to serve to anyone else. For inbound WeChat media, we proxy the bytes server-side and re-serve them to the inbox via short-lived per-attachment URLs, so the OA token never reaches the browser.

Voice messages ​

Inbound voice notes get an inline audio player with a play/pause control and a waveform-ish progress bar. Click-and-drag the progress bar to scrub.

For outbound voice messages, you can record directly in the composer (microphone icon) — the recording is encoded and uploaded as a audio attachment on supported channels.

Forwarded / quoted messages ​

Inbound messages that quote another message render with a small "reply pill" above the bubble showing the quoted message's snippet. Click the pill to scroll the thread to the quoted message.

What about PDFs and Office docs? ​

Inbound documents render as a link-out bubble (icon + filename + size + open button). Clicking opens the file in a new tab via its signed URL. If the document is a PDF, we set Content-Disposition: inline so it previews in-browser; for other types you'll get a download prompt.

Retention ​

Attachments live on S3 indefinitely (no auto-purge). Deleting an outbound message via the bubble menu removes it from the thread view but keeps the underlying file on S3 — for audit/legal hold purposes. A future "compliance purge" command will do hard removal on request.

Kinderpedia Admissions Help Center