sendMessageToParticipant method
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,
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,
},
);
}
}