google_multimodal_assistant_real_time_with_daily 1.0.0
google_multimodal_assistant_real_time_with_daily: ^1.0.0 copied to clipboard
A Flutter plugin for integrating Pipecat's iOS SDK with real-time audio and video communication.
example/lib/main.dart
import 'package:google_multimodal_assistant_real_time_with_daily/google_multimodal_assistant_real_time_with_daily.dart';
class SimpleAssistantExample {
final assistant = GoogleMultimodalAssistantRealTimeWithDaily();
Future<void> setup() async {
// Inicializar el asistente
await assistant.initialize(
baseUrl: 'https://api.pipecat.ai', // URL base de Pipecat
enableMic: true,
enableCamera: true,
config: {
// Configuración de Daily para WebRTC
'service': 'daily',
'options': [
{
'name': 'url',
'value':
'https://your-domain.daily.co/room-name' // Tu URL de sala Daily
},
{
'name': 'token',
'value': 'your-daily-token' // Tu token de Daily
}
],
// Configuración del modelo LLM
'service': 'llm',
'options': [
{'name': 'model', 'value': 'meta-llama/Llama-2-7b-chat-hf'},
{
'name': 'messages',
'value': [
{'role': 'system', 'content': 'You are a helpful assistant.'}
]
}
],
// Configuración de Text-to-Speech si lo necesitas
'service': 'tts',
'options': [
{'name': 'voice', 'value': 'your-voice-id'}
]
},
);
// Iniciar la sesión
await assistant.startSession();
// Escuchar diferentes tipos de eventos
assistant.eventStream.listen((event) {
if (event is Map<String, dynamic>) {
switch (event['type']) {
case 'transcript':
print('Transcripción: ${event['text']}');
break;
case 'tracks':
print('Cambios en tracks de media: ${event['tracks']}');
break;
case 'participant':
print('Actualización de participante: ${event['participant']}');
break;
default:
print('Evento recibido: $event');
}
}
});
// Ejemplo de interacción
await assistant.sendMessage('Hello, assistant!');
}
// Métodos adicionales útiles
Future<void> toggleMicrophone(bool enabled) async {
await assistant.setMicrophoneEnabled(enabled);
}
Future<void> toggleCamera(bool enabled) async {
await assistant.setCameraEnabled(enabled);
}
Future<void> sendMessage(String message) async {
await assistant.sendMessage(message);
}
Future<void> disconnect() async {
await assistant.disconnect();
}
}
// Uso del ejemplo
void main() async {
final example = SimpleAssistantExample();
try {
await example.setup();
// Ejemplo de uso
await example.sendMessage("¿Cómo puedo ayudarte hoy?");
// Recuerda desconectar cuando termines
await example.disconnect();
} catch (e) {
print('Error: $e');
}
}