sendMessage method

Future<bool> sendMessage(
  1. RemoteMessageContent content, {
  2. String? uuid,
})

Send a user message to the remote session via HTTP POST.

Returns true if the server acknowledged the message successfully.

Implementation

Future<bool> sendMessage(
  RemoteMessageContent content, {
  String? uuid,
}) async {
  developer.log(
    'Sending message to session ${_config.sessionId}',
    name: 'RemoteSessionManager',
  );

  try {
    final client = HttpClient();
    // POST to the teleport API endpoint.
    final uri = Uri.parse(
      'https://api.anthropic.com/v1/sessions/${_config.sessionId}/events',
    );
    final request = await client.postUrl(uri);
    request.headers.set(
      'Authorization',
      'Bearer ${_config.getAccessToken()}',
    );
    request.headers.set('Content-Type', 'application/json');
    request.headers.set('anthropic-version', '2023-06-01');

    final body = <String, dynamic>{'content': content};
    if (uuid != null) body['uuid'] = uuid;
    request.add(utf8.encode(jsonEncode(body)));

    final response = await request.close();
    client.close(force: false);

    if (response.statusCode >= 200 && response.statusCode < 300) {
      return true;
    }
    developer.log(
      'Failed to send message: HTTP ${response.statusCode}',
      name: 'RemoteSessionManager',
    );
    return false;
  } catch (e) {
    developer.log(
      'Failed to send message: $e',
      name: 'RemoteSessionManager',
    );
    return false;
  }
}