import { useConversation } from '@elevenlabs/react-native'; import { View, Button, Text, ScrollView } from 'react-native'; import { z } from 'zod'; import { useState } from 'react'; export default function VoiceAgent() { const [transcript, setTranscript] = useState>([]); const { startConversation, stopConversation, status } = useConversation({ agentId: process.env.EXPO_PUBLIC_ELEVENLABS_AGENT_ID!, // Use signed URL (most secure) signedUrl: async () => { const response = await fetch('https://your-api.com/elevenlabs/auth'); const { signedUrl } = await response.json(); return signedUrl; }, clientTools: { updateProfile: { description: "Update user profile", parameters: z.object({ name: z.string() }), handler: async ({ name }) => { console.log('Updating profile:', name); return { success: true }; } } }, onEvent: (event) => { if (event.type === 'transcript') { setTranscript(prev => [...prev, { role: 'user', text: event.data.text }]); } else if (event.type === 'agent_response') { setTranscript(prev => [...prev, { role: 'agent', text: event.data.text }]); } } }); return ( Voice Agent