Using the SDK, you can craft messages with text and/or media attachments and send them to other participants in your Conversation.
If you'd like to send your Message as a one-shot method call, you can use this basic method.
We also provide a more flexible method that allows you to programmatically build your message. This method is more robust and is typically ideal for most use cases.
The Message Builder class allows you to build a new text and/or media Message and makes the Message ready to be sent to the Conversation.
When creating the MessageBuilder
object, you'll set each property of the message individually. For example, you'll set the body and the message attributes separately.
You can add photos, videos, and other types of media files to your Conversation. Media is displayed seamlessly between all participating channels.
To add a media Message (i.e. photos, videos) to your Conversation, you'll need to create a Message and add a media file, filename and content type to the Message Builder.
1const file = await fetch("https://v.fastcdn.co/u/ed1a9b17/52533501-0-logo.svg");2const fileBlob = await file.blob();34// Send a media message5const sendMediaOptions = {6contentType: file.headers.get("Content-Type"),7filename: "twilio-logo.svg",8media: fileBlob9};1011await conversation.prepareMessage().addMedia(sendMediaOptions);
Each SDK accepts media input differently:
For JS, use:
String
or Node.js Buffer
containing a media byte streamfilename
, content-type
, size
, and all required FormData
informationFor iOS, use:
InputStream
NSInputStream-compliant
streamNSData
bufferFor Android, use:
java.io.InputStream-compliant
streamThe maximum combined size of attachments is 150 MB.
You can also attach multiple media items to a single message by using the Message Builder.
1/* Send multiple media */23const file = await fetch("https://v.fastcdn.co/u/ed1a9b17/52533501-0-logo.svg");4const fileBlob = await file.blob();56const mediaFormData = new FormData();7mediaFormData.set("twilio-logo", fileBlob, "twilio-logo.svg");89const sendMediaOptions = {10contentType: file.headers.get("Content-Type"),11filename: "twilio-logo.svg",12media: fileBlob13};1415await testConversation.prepareMessage()16.setBody("Hello!")17// add multiple media18.addMedia(mediaFormData)19.addMedia(sendMediaOptions)20// ...21.addMedia(mediaN)22.build()23.send();
You can get a short-lived, temporary URL to download the media content in a Conversation.
If a message has more than one attachment, an array of media Messages can be retrieved, but it has to match the specific category of media.
media
is currently the only category available
You can use your preferred method to retrieve the content from the temporary URL and render it in your UI.
1/* Check and update Media samples */23// Return all media attachments, without temporary urls4const media = message.attachedMedia;56// Return a (possibly empty) array of media matching a specific set of categories. Allowed category is so far only 'media'7const categorizedMedia = await message.getMediaByCategory(["media"]);89//Get a temporary URL for the first media returned by the previous method10const mediaUrl = await categorizedMedia[0].getContentTemporaryUrl();
Conversations is a cross-channel messaging product, so each channel has a different set of limitations about incoming media files. Please refer to theMedia Limits documentation for channel-specific information and supported file types.
Media content is encrypted and can not be downloaded directly. When required, only authenticated users can generate temporary/expiring URLs to download the media content. The temporary URLs are valid for 300 seconds, after which a new temporary URL must be requested.
Let's learn other features in Twilio Conversations: