Sample code for 30+ languages & platforms
Dart

MessageMedia - Send Messages

See more MessageMedia Examples

Submit one or more (up to 100 per request) SMS, MMS, or text to voice messages for delivery.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example assumes the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

  // Implements the following CURL command:

  // curl --request POST \
  //      --header "Content-Type: application/json" \
  //      --header "Accept: application/json" \
  //      --data-binary "{
  //     \"messages\": [
  //         {
  //             \"callback_url\": \"https://my.callback.url.com\",
  //             \"content\": \"My first message\",
  //             \"destination_number\": \"+61491570156\",
  //             \"delivery_report\": true,
  //             \"format\": \"SMS\",
  //             \"message_expiry_timestamp\": \"2016-11-03T11:49:02.807Z\",
  //             \"metadata\": {
  //                 \"myKey\": \"myValue\",
  //                 \"anotherKey\": \"anotherValue\"
  //             },
  //             \"scheduled\": \"2016-11-03T11:49:02.807Z\",
  //             \"source_number\": \"+61491570157\",
  //             \"source_number_type\": \"INTERNATIONAL\"
  //         },
  //         {
  //             \"callback_url\": \"https://my.callback.url.com\",
  //             \"content\": \"My second message\",
  //             \"destination_number\": \"+61491570158\",
  //             \"delivery_report\": true,
  //             \"format\": \"MMS\",
  //             \"subject\": \"This is an MMS message\",
  //             \"media\": [ \"https://images.pexels.com/photos/1018350/pexels-photo-1018350.jpeg?cs=srgb&dl=architecture-buildings-city-1018350.jpg\" ],
  //             \"message_expiry_timestamp\": \"2016-11-03T11:49:02.807Z\",
  //             \"metadata\": {
  //                 \"myKey\": \"myValue\",
  //                 \"anotherKey\": \"anotherValue\"
  //             },
  //             \"scheduled\": \"2016-11-03T11:49:02.807Z\",
  //             \"source_number\": \"+61491570159\",
  //             \"source_number_type\": \"INTERNATIONAL\"
  //         }
  //     ]
  // }" \
  // https://private-anon-ecbaffbc28-messages32.apiary-mock.com/v1/messages

  // Use the following online tool to generate HTTP code from a CURL command
  // Convert a cURL Command to HTTP Source Code

  // Use this online tool to generate code from sample JSON:
  // Generate Code to Create JSON

  // The following JSON is sent in the request body.

  // {
  //   "messages": [
  //     {
  //       "callback_url": "https://my.callback.url.com",
  //       "content": "My first message",
  //       "destination_number": "+61491570156",
  //       "delivery_report": true,
  //       "format": "SMS",
  //       "message_expiry_timestamp": "2016-11-03T11:49:02.807Z",
  //       "metadata": {
  //         "myKey": "myValue",
  //         "anotherKey": "anotherValue"
  //       },
  //       "scheduled": "2016-11-03T11:49:02.807Z",
  //       "source_number": "+61491570157",
  //       "source_number_type": "INTERNATIONAL"
  //     },
  //     {
  //       "callback_url": "https://my.callback.url.com",
  //       "content": "My second message",
  //       "destination_number": "+61491570158",
  //       "delivery_report": true,
  //       "format": "MMS",
  //       "subject": "This is an MMS message",
  //       "media": [
  //         "https://images.pexels.com/photos/1018350/pexels-photo-1018350.jpeg?cs=srgb&dl=architecture-buildings-city-1018350.jpg"
  //       ],
  //       "message_expiry_timestamp": "2016-11-03T11:49:02.807Z",
  //       "metadata": {
  //         "myKey": "myValue",
  //         "anotherKey": "anotherValue"
  //       },
  //       "scheduled": "2016-11-03T11:49:02.807Z",
  //       "source_number": "+61491570159",
  //       "source_number_type": "INTERNATIONAL"
  //     }
  //   ]
  // }

  final json = CkJsonObject();
  json.updateString('messages[0].callback_url', 'https://my.callback.url.com');
  json.updateString('messages[0].content', 'My first message');
  json.updateString('messages[0].destination_number', '+61491570156');
  json.updateBool('messages[0].delivery_report', true);
  json.updateString('messages[0].format', 'SMS');
  json.updateString('messages[0].message_expiry_timestamp', '2016-11-03T11:49:02.807Z');
  json.updateString('messages[0].metadata.myKey', 'myValue');
  json.updateString('messages[0].metadata.anotherKey', 'anotherValue');
  json.updateString('messages[0].scheduled', '2016-11-03T11:49:02.807Z');
  json.updateString('messages[0].source_number', '+61491570157');
  json.updateString('messages[0].source_number_type', 'INTERNATIONAL');
  json.updateString('messages[1].callback_url', 'https://my.callback.url.com');
  json.updateString('messages[1].content', 'My second message');
  json.updateString('messages[1].destination_number', '+61491570158');
  json.updateBool('messages[1].delivery_report', true);
  json.updateString('messages[1].format', 'MMS');
  json.updateString('messages[1].subject', 'This is an MMS message');
  json.updateString('messages[1].media[0]', 'https://images.pexels.com/photos/1018350/pexels-photo-1018350.jpeg?cs=srgb&dl=architecture-buildings-city-1018350.jpg');
  json.updateString('messages[1].message_expiry_timestamp', '2016-11-03T11:49:02.807Z');
  json.updateString('messages[1].metadata.myKey', 'myValue');
  json.updateString('messages[1].metadata.anotherKey', 'anotherValue');
  json.updateString('messages[1].scheduled', '2016-11-03T11:49:02.807Z');
  json.updateString('messages[1].source_number', '+61491570159');
  json.updateString('messages[1].source_number_type', 'INTERNATIONAL');

  http.setRequestHeader('Content-Type', 'application/json');
  http.setRequestHeader('Accept', 'application/json');

  final resp = CkHttpResponse();
  try {
    http.httpJson('POST', 'https://private-anon-ecbaffbc28-messages32.apiary-mock.com/v1/messages', json, 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final sbResponseBody = CkStringBuilder();
  resp.getBodySb(sbResponseBody);

  final jResp = CkJsonObject();
  jResp.loadSb(sbResponseBody);
  jResp.emitCompact = false;

  print('Response Body:');
  print(jResp.emit());

  final respStatusCode = resp.statusCode;
  print('Response Status Code = $respStatusCode');
  if (respStatusCode >= 400) {
    print('Response Header:');
    print(resp.header);
    print('Failed.');
    return;
  }

  // Sample JSON response:
  // (Sample code for parsing the JSON response is shown below)

  // {
  //   "messages": [
  //     {
  //       "message_id": "04fe9a97-a579-43c5-bb1a-58ed29bf0a6a",
  //       "callback_url": "https://my.url.com",
  //       "status": "delivered",
  //       "content": "My first message",
  //       "destination_number": "+61491570156",
  //       "delivery_report": true,
  //       "format": "SMS",
  //       "message_expiry_timestamp": "2016-11-03T11:49:02.807Z",
  //       "metadata": {
  //         "myKey": "myValue",
  //         "anotherKey": "anotherValue"
  //       },
  //       "scheduled": "2016-11-03T11:49:02.807Z",
  //       "source_number": "+61491570157",
  //       "source_number_type": "INTERNATIONAL"
  //     }
  //   ]
  // }

  // Sample code for parsing the JSON response...
  // Use the following online tool to generate parsing code from sample JSON:
  // Generate Parsing Code from JSON

  var messageId = '';
  var callbackUrl = '';
  var status = '';
  var content = '';
  var destinationNumber = '';
  var format = '';
  var messageExpiryTimestamp = '';
  var myKey = '';
  var anotherKey = '';
  var scheduled = '';
  var sourceNumber = '';
  var sourceNumberType = '';

  var i = 0;
  final countI = jResp.sizeOfArray('messages');
  while (i < countI) {
    jResp.i = i;
    messageId = jResp.stringOf('messages[i].message_id');
    callbackUrl = jResp.stringOf('messages[i].callback_url');
    status = jResp.stringOf('messages[i].status');
    content = jResp.stringOf('messages[i].content');
    destinationNumber = jResp.stringOf('messages[i].destination_number');
    jResp.boolOf('messages[i].delivery_report');
    format = jResp.stringOf('messages[i].format');
    messageExpiryTimestamp = jResp.stringOf('messages[i].message_expiry_timestamp');
    myKey = jResp.stringOf('messages[i].metadata.myKey');
    anotherKey = jResp.stringOf('messages[i].metadata.anotherKey');
    scheduled = jResp.stringOf('messages[i].scheduled');
    sourceNumber = jResp.stringOf('messages[i].source_number');
    sourceNumberType = jResp.stringOf('messages[i].source_number_type');
    i++;
  }
}