sendMessage method
Future
sendMessage(
- Map<
String, dynamic> messageOptions, - String channelSid,
- TwilioConversationsClient? _chatClient
Implementation
Future<dynamic> sendMessage(
Map<String, dynamic> messageOptions,
String channelSid,
TwilioWebClient.TwilioConversationsClient? _chatClient) async {
try {
final channel = await promiseToFuture<TwilioConversationsChannel>(
_chatClient!.getConversationBySid(channelSid));
final messagePreparator = await channel.prepareMessage();
if ((messageOptions["body"]) != null) {
messagePreparator.setBody(messageOptions["body"]);
} else {
messagePreparator.setBody('');
}
if (messageOptions["attributes"] != null) {
messagePreparator.setAttributes(jsify(messageOptions["attributes"]));
}
if (messageOptions["input"] != null &&
(messageOptions["mimeType"] as String?) != null) {
final input = messageOptions["input"] as String;
final mimeType = messageOptions["mimeType"] as String?;
final media = FormData.fromMap({
'contentType': mimeType,
'filename': DateTime.now().toIso8601String(),
'media': await MultipartFile.fromFile(input, filename: 'upload.txt'),
});
messagePreparator.addMedia(media);
}
final index = await promiseToFuture<int>(
messagePreparator.build().send(),
);
final messages =
await promiseToFuture<JSPaginator<TwilioConversationsMessage>>(
channel.getMessages(1, index, "forward"),
);
if (messages.items.length == 0) {
return null;
}
return Mapper.messageToMap(messages.items[0]);
} catch (e) {
Logging.debug('error: sendMessage ${e}');
return null;
}
}