sendMessageToParticipant method

Future<void> sendMessageToParticipant({
  1. required Participant participant,
  2. required String path,
  3. required ChatMessage message,
  4. String messageType = "chat",
  5. bool useAgentMessages = false,
  6. String? turnId,
  7. TurnMcpConfig? mcp,
  8. List<ClientToolkitDescription>? clientToolkits,
  9. AgentToolChoice? toolChoice,
  10. bool store = false,
})

Implementation

Future<void> sendMessageToParticipant({
  required Participant participant,
  required String path,
  required ChatMessage message,
  String messageType = "chat",
  bool useAgentMessages = false,
  String? turnId,
  TurnMcpConfig? mcp,
  List<ClientToolkitDescription>? clientToolkits,
  AgentToolChoice? toolChoice,
  bool store = false,
}) async {
  if (message.text.trim().isNotEmpty || message.attachments.isNotEmpty) {
    final room = _requireRoom('Sending a participant message');
    if (useAgentMessages) {
      final isSteer = messageType == "steer";
      final payload = isSteer
          ? TurnSteer(
              threadId: path,
              messageId: message.id,
              turnId: turnId != null && turnId.trim().isNotEmpty ? turnId.trim() : message.id,
              content: _agentInputContentFromMessage(message),
            )
          : TurnStart(
              threadId: path,
              messageId: message.id,
              content: _agentInputContentFromMessage(message),
              mcp: mcp,
              clientToolkits: clientToolkits != null && clientToolkits.isNotEmpty ? clientToolkits : null,
              toolChoice: toolChoice == null ? null : ToolChoice(toolkitName: toolChoice.toolkitName, toolName: toolChoice.toolName),
            );
      await room.messaging.sendMessage(to: participant, type: agentRoomMessageType, message: payload.toJson());
      return;
    }

    await room.messaging.sendMessage(
      to: participant,
      type: messageType,
      message: {
        "path": path,
        "text": message.text,
        "attachments": message.attachments.map((a) => {"path": a}).toList(),
        "store": store,
      },
    );
  }
}