env('AI_VOICE_QUEUE', 'ai'), /* | The instruction sent to the provider for every call. Administrators can | override it on the settings page; that override is stored globally and | this value is the fallback. */ 'default_prompt' => 'You are a call-center quality analyst writing a short internal note for a ' .'supervisor. Summarize the call in 4 to 6 sentences of plain text. State who called (or who was ' .'called), why, what was agreed, and any follow-up owed. Use only facts present in the transcript. ' .'Do not rate the agent, do not add headings and do not use bullet points.', /* | Global settings key (Laravelbap\Settings) holding the administrator | override of the prompt above. */ 'settings_key_prompt' => 'ai_voice_prompt', /* | Transcription language handed to the provider. An empty code means | "auto-detect": the vendor decides from the audio, which is the right | answer on a line where callers switch between Arabic and English. */ 'languages' => [ '' => 'Auto-detect (provider decides)', 'ar' => 'Arabic', 'en' => 'English', ], /* | Language the summary is written in. An empty value means "same as the | call": the model follows whatever the transcript turned out to be. */ 'summary_languages' => [ '' => 'Same as the call', 'ar' => 'Arabic', 'en' => 'English', ], 'limits' => [ // One upload per 10 minutes of audio keeps every chunk well under the // providers' per-request size caps. 'max_chunk_seconds' => 600, 'max_audio_seconds' => 7200, 'ffmpeg_binary' => env('AI_VOICE_FFMPEG', '/usr/bin/ffmpeg'), 'ffprobe_binary' => env('AI_VOICE_FFPROBE', '/usr/bin/ffprobe'), // Scratch space for ffmpeg. A relative name lives under storage/app; an // absolute AI_VOICE_TEMP_DIR points straight at a volume the queue // worker can write, for boxes whose deployed storage/ is not writable // by the PHP user. 'temp_dir' => env('AI_VOICE_TEMP_DIR', 'ai-voice'), ], // Transcription and analysis calls can legitimately take minutes. 'http_timeout' => 900, ];