Add support for custom transcription prompts in voicemail processing (#7908)

This commit is contained in:
Antonio Fernandez
2026-05-25 10:45:02 -04:00
committed by GitHub
parent 695b7d7410
commit 1b225840c4
7 changed files with 245 additions and 1 deletions
@@ -170,6 +170,8 @@
//$voicemail_mail_to = $row["voicemail_mail_to"];
//$voicemail_sms_to = $row["voicemail_sms_to "];
$voicemail_transcription_enabled = $row["voicemail_transcription_enabled"];
$voicemail_transcription_prompt_enabled = $row["voicemail_transcription_prompt_enabled"] ?? false;
$voicemail_transcription_prompt = $row["voicemail_transcription_prompt"] ?? '';
//$voicemail_attach_file = $row["voicemail_attach_file"];
$voicemail_file = $row["voicemail_file"];
//$voicemail_local_after_email = $row["voicemail_local_after_email"];
@@ -246,6 +248,25 @@
echo "transcribe message: ".$transcribe_message."\n";
$prompt_is_enabled = in_array($voicemail_transcription_prompt_enabled ?? false, [true, 'true', 't'], true);
echo "prompt_enabled raw: ".var_export($voicemail_transcription_prompt_enabled ?? 'NOT SET', true)."\n";
echo "prompt_is_enabled: ".($prompt_is_enabled ? 'true' : 'false')."\n";
echo "prompt template length: ".strlen($voicemail_transcription_prompt ?? '')."\n";
echo "transcribe_prompt class exists: ".(class_exists('transcribe_prompt') ? 'true' : 'false')."\n";
if (!empty($transcribe_message)
&& $prompt_is_enabled
&& !empty($voicemail_transcription_prompt)
&& class_exists('transcribe_prompt')
) {
$prompt_processor = new transcribe_prompt($settings);
$prompt_result = $prompt_processor->process($transcribe_message, $voicemail_transcription_prompt);
echo "prompt result length: ".strlen($prompt_result)."\n";
if (!empty($prompt_result)) {
$transcribe_message = $prompt_result;
}
echo "prompt processed message: ".$transcribe_message."\n";
}
//prepare the email body
$email_body = str_replace('${message_text}', $transcribe_message, $email_body);
}
+108
View File
@@ -2914,6 +2914,114 @@ $text['description-voicemail_transcription_enabled']['zh-cn'] = "选择是否为
$text['description-voicemail_transcription_enabled']['ja-jp'] = "この内線番号でボイスメールの文字起こしを有効にするかどうかを選択します";
$text['description-voicemail_transcription_enabled']['ko-kr'] = "이 확장 프로그램에 음성 메일 녹음이 활성화되어 있는지 선택하십시오.";
$text['label-voicemail_transcription_prompt_enabled']['en-us'] = "Custom Prompt Processing";
$text['label-voicemail_transcription_prompt_enabled']['en-gb'] = "Custom Prompt Processing";
$text['label-voicemail_transcription_prompt_enabled']['ar-eg'] = "معالجة موجه مخصص";
$text['label-voicemail_transcription_prompt_enabled']['de-at'] = "Benutzerdefinierte Eingabeaufforderungsverarbeitung";
$text['label-voicemail_transcription_prompt_enabled']['de-ch'] = "Benutzerdefinierte Eingabeaufforderungsverarbeitung";
$text['label-voicemail_transcription_prompt_enabled']['de-de'] = "Benutzerdefinierte Eingabeaufforderungsverarbeitung";
$text['label-voicemail_transcription_prompt_enabled']['el-gr'] = "Επεξεργασία Προσαρμοσμένης Προτροπής";
$text['label-voicemail_transcription_prompt_enabled']['es-cl'] = "Procesamiento de Indicación Personalizada";
$text['label-voicemail_transcription_prompt_enabled']['es-mx'] = "Procesamiento de Indicación Personalizada";
$text['label-voicemail_transcription_prompt_enabled']['fr-ca'] = "Traitement d'Invite Personnalisée";
$text['label-voicemail_transcription_prompt_enabled']['fr-fr'] = "Traitement d'Invite Personnalisée";
$text['label-voicemail_transcription_prompt_enabled']['he-il'] = "עיבוד פקודה מותאמת אישית";
$text['label-voicemail_transcription_prompt_enabled']['it-it'] = "Elaborazione Prompt Personalizzato";
$text['label-voicemail_transcription_prompt_enabled']['ka-ge'] = "მორგებული მოთხოვნის დამუშავება";
$text['label-voicemail_transcription_prompt_enabled']['nl-nl'] = "Aangepaste Promptverwerking";
$text['label-voicemail_transcription_prompt_enabled']['pl-pl'] = "Przetwarzanie Niestandardowego Monitu";
$text['label-voicemail_transcription_prompt_enabled']['pt-br'] = "Processamento de Prompt Personalizado";
$text['label-voicemail_transcription_prompt_enabled']['pt-pt'] = "Processamento de Prompt Personalizado";
$text['label-voicemail_transcription_prompt_enabled']['ro-ro'] = "Procesarea Promptului Personalizat";
$text['label-voicemail_transcription_prompt_enabled']['ru-ru'] = "Обработка пользовательского запроса";
$text['label-voicemail_transcription_prompt_enabled']['sv-se'] = "Anpassad Promptbehandling";
$text['label-voicemail_transcription_prompt_enabled']['uk-ua'] = "Обробка користувацького запиту";
$text['label-voicemail_transcription_prompt_enabled']['tr-tr'] = "Özel İstem İşleme";
$text['label-voicemail_transcription_prompt_enabled']['zh-cn'] = "自定义提示处理";
$text['label-voicemail_transcription_prompt_enabled']['ja-jp'] = "カスタムプロンプト処理";
$text['label-voicemail_transcription_prompt_enabled']['ko-kr'] = "사용자 지정 프롬프트 처리";
$text['description-voicemail_transcription_prompt_enabled']['en-us'] = "When enabled, the transcription is sent to the configured AI provider with a custom prompt before being included in the voicemail email.";
$text['description-voicemail_transcription_prompt_enabled']['en-gb'] = "When enabled, the transcription is sent to the configured AI provider with a custom prompt before being included in the voicemail email.";
$text['description-voicemail_transcription_prompt_enabled']['ar-eg'] = "عند التمكين، يتم إرسال النص المكتوب إلى موفر الذكاء الاصطناعي المكوّن مع موجه مخصص قبل تضمينه في البريد الإلكتروني للبريد الصوتي.";
$text['description-voicemail_transcription_prompt_enabled']['de-at'] = "Wenn aktiviert, wird die Transkription mit einer benutzerdefinierten Eingabeaufforderung an den konfigurierten KI-Anbieter gesendet, bevor sie in die Voicemail-E-Mail aufgenommen wird.";
$text['description-voicemail_transcription_prompt_enabled']['de-ch'] = "Wenn aktiviert, wird die Transkription mit einer benutzerdefinierten Eingabeaufforderung an den konfigurierten KI-Anbieter gesendet, bevor sie in die Voicemail-E-Mail aufgenommen wird.";
$text['description-voicemail_transcription_prompt_enabled']['de-de'] = "Wenn aktiviert, wird die Transkription mit einer benutzerdefinierten Eingabeaufforderung an den konfigurierten KI-Anbieter gesendet, bevor sie in die Voicemail-E-Mail aufgenommen wird.";
$text['description-voicemail_transcription_prompt_enabled']['el-gr'] = "Όταν είναι ενεργοποιημένο, η μεταγραφή αποστέλλεται στον διαμορφωμένο πάροχο τεχνητής νοημοσύνης με μια προσαρμοσμένη προτροπή πριν συμπεριληφθεί στο email του τηλεφωνητή.";
$text['description-voicemail_transcription_prompt_enabled']['es-cl'] = "Cuando está habilitado, la transcripción se envía al proveedor de IA configurado con una indicación personalizada antes de incluirse en el correo electrónico del buzón de voz.";
$text['description-voicemail_transcription_prompt_enabled']['es-mx'] = "Cuando está habilitado, la transcripción se envía al proveedor de IA configurado con una indicación personalizada antes de incluirse en el correo electrónico del buzón de voz.";
$text['description-voicemail_transcription_prompt_enabled']['fr-ca'] = "Lorsqu'activé, la transcription est envoyée au fournisseur d'IA configuré avec une invite personnalisée avant d'être incluse dans l'e-mail de messagerie vocale.";
$text['description-voicemail_transcription_prompt_enabled']['fr-fr'] = "Lorsqu'activé, la transcription est envoyée au fournisseur d'IA configuré avec une invite personnalisée avant d'être incluse dans l'e-mail de messagerie vocale.";
$text['description-voicemail_transcription_prompt_enabled']['he-il'] = "כאשר מופעל, התמלול נשלח לספק ה-AI המוגדר עם פקודה מותאמת אישית לפני הכללתו בדואר האלקטרוני של תא הקול.";
$text['description-voicemail_transcription_prompt_enabled']['it-it'] = "Quando abilitato, la trascrizione viene inviata al provider AI configurato con un prompt personalizzato prima di essere inclusa nell'e-mail della segreteria telefonica.";
$text['description-voicemail_transcription_prompt_enabled']['ka-ge'] = "ჩართვისას, ტრანსკრიფცია გაიგზავნება კონფიგურირებულ AI პროვაიდერთან მორგებული მოთხოვნით ვოისმეილის ელ-ფოსტაში ჩართვამდე.";
$text['description-voicemail_transcription_prompt_enabled']['nl-nl'] = "Indien ingeschakeld, wordt de transcriptie met een aangepaste prompt naar de geconfigureerde AI-provider gestuurd voordat deze in de voicemail-e-mail wordt opgenomen.";
$text['description-voicemail_transcription_prompt_enabled']['pl-pl'] = "Po włączeniu transkrypcja jest wysyłana do skonfigurowanego dostawcy AI z niestandardowym monitem przed dołączeniem do wiadomości e-mail poczty głosowej.";
$text['description-voicemail_transcription_prompt_enabled']['pt-br'] = "Quando ativado, a transcrição é enviada ao provedor de IA configurado com um prompt personalizado antes de ser incluída no e-mail do correio de voz.";
$text['description-voicemail_transcription_prompt_enabled']['pt-pt'] = "Quando ativado, a transcrição é enviada ao fornecedor de IA configurado com um prompt personalizado antes de ser incluída no e-mail da caixa de voz.";
$text['description-voicemail_transcription_prompt_enabled']['ro-ro'] = "Când este activat, transcrierea este trimisă furnizorului de AI configurat cu un prompt personalizat înainte de a fi inclusă în e-mailul căsuței vocale.";
$text['description-voicemail_transcription_prompt_enabled']['ru-ru'] = "При включении транскрипция отправляется настроенному AI-провайдеру с пользовательским запросом перед включением в электронное письмо голосовой почты.";
$text['description-voicemail_transcription_prompt_enabled']['sv-se'] = "När aktiverat skickas transkriptionen till den konfigurerade AI-leverantören med en anpassad prompt innan den inkluderas i röstmeddelandets e-post.";
$text['description-voicemail_transcription_prompt_enabled']['uk-ua'] = "При увімкненні транскрипцію надсилають до налаштованого AI-провайдера з користувацьким запитом перед включенням до електронного листа голосової пошти.";
$text['description-voicemail_transcription_prompt_enabled']['tr-tr'] = "Etkinleştirildiğinde, transkript sesli posta e-postasına eklenmeden önce özel bir istemle yapılandırılmış AI sağlayıcısına gönderilir.";
$text['description-voicemail_transcription_prompt_enabled']['zh-cn'] = "启用后,转录文本将连同自定义提示一起发送至已配置的AI提供商,然后再包含在语音邮件电子邮件中。";
$text['description-voicemail_transcription_prompt_enabled']['ja-jp'] = "有効にすると、文字起こしがボイスメールメールに含まれる前に、カスタムプロンプトと共に設定されたAIプロバイダーに送信されます。";
$text['description-voicemail_transcription_prompt_enabled']['ko-kr'] = "활성화하면 음성메일 이메일에 포함되기 전에 사용자 지정 프롬프트와 함께 구성된 AI 제공업체로 전사본이 전송됩니다.";
$text['label-voicemail_transcription_prompt']['en-us'] = "Transcription Prompt";
$text['label-voicemail_transcription_prompt']['en-gb'] = "Transcription Prompt";
$text['label-voicemail_transcription_prompt']['ar-eg'] = "موجه النسخ";
$text['label-voicemail_transcription_prompt']['de-at'] = "Transkriptions-Eingabeaufforderung";
$text['label-voicemail_transcription_prompt']['de-ch'] = "Transkriptions-Eingabeaufforderung";
$text['label-voicemail_transcription_prompt']['de-de'] = "Transkriptions-Eingabeaufforderung";
$text['label-voicemail_transcription_prompt']['el-gr'] = "Προτροπή Μεταγραφής";
$text['label-voicemail_transcription_prompt']['es-cl'] = "Indicación de Transcripción";
$text['label-voicemail_transcription_prompt']['es-mx'] = "Indicación de Transcripción";
$text['label-voicemail_transcription_prompt']['fr-ca'] = "Invite de Transcription";
$text['label-voicemail_transcription_prompt']['fr-fr'] = "Invite de Transcription";
$text['label-voicemail_transcription_prompt']['he-il'] = "פקודת תמלול";
$text['label-voicemail_transcription_prompt']['it-it'] = "Prompt di Trascrizione";
$text['label-voicemail_transcription_prompt']['ka-ge'] = "ტრანსკრიფციის მოთხოვნა";
$text['label-voicemail_transcription_prompt']['nl-nl'] = "Transcriptieprompt";
$text['label-voicemail_transcription_prompt']['pl-pl'] = "Monit Transkrypcji";
$text['label-voicemail_transcription_prompt']['pt-br'] = "Prompt de Transcrição";
$text['label-voicemail_transcription_prompt']['pt-pt'] = "Prompt de Transcrição";
$text['label-voicemail_transcription_prompt']['ro-ro'] = "Promptul de Transcriere";
$text['label-voicemail_transcription_prompt']['ru-ru'] = "Запрос транскрипции";
$text['label-voicemail_transcription_prompt']['sv-se'] = "Transkriptionsprompt";
$text['label-voicemail_transcription_prompt']['uk-ua'] = "Запит транскрипції";
$text['label-voicemail_transcription_prompt']['tr-tr'] = "Transkripsiyon İstemi";
$text['label-voicemail_transcription_prompt']['zh-cn'] = "转录提示";
$text['label-voicemail_transcription_prompt']['ja-jp'] = "文字起こしプロンプト";
$text['label-voicemail_transcription_prompt']['ko-kr'] = "전사 프롬프트";
$text['description-voicemail_transcription_prompt']['en-us'] = "Enter the prompt template. Use \${transcription} as a placeholder for the raw transcription text. If omitted, the transcription is appended after the prompt.";
$text['description-voicemail_transcription_prompt']['en-gb'] = "Enter the prompt template. Use \${transcription} as a placeholder for the raw transcription text. If omitted, the transcription is appended after the prompt.";
$text['description-voicemail_transcription_prompt']['ar-eg'] = "أدخل قالب الموجه. استخدم \${transcription} كعنصر نائب لنص النسخ الخام. إذا تم حذفه، يُضاف النص بعد الموجه.";
$text['description-voicemail_transcription_prompt']['de-at'] = "Geben Sie die Eingabeaufforderungsvorlage ein. Verwenden Sie \${transcription} als Platzhalter für den unbearbeiteten Transkriptionstext. Wenn weggelassen, wird die Transkription nach der Eingabeaufforderung angehängt.";
$text['description-voicemail_transcription_prompt']['de-ch'] = "Geben Sie die Eingabeaufforderungsvorlage ein. Verwenden Sie \${transcription} als Platzhalter für den unbearbeiteten Transkriptionstext. Wenn weggelassen, wird die Transkription nach der Eingabeaufforderung angehängt.";
$text['description-voicemail_transcription_prompt']['de-de'] = "Geben Sie die Eingabeaufforderungsvorlage ein. Verwenden Sie \${transcription} als Platzhalter für den unbearbeiteten Transkriptionstext. Wenn weggelassen, wird die Transkription nach der Eingabeaufforderung angehängt.";
$text['description-voicemail_transcription_prompt']['el-gr'] = "Εισαγάγετε το πρότυπο προτροπής. Χρησιμοποιήστε το \${transcription} ως σύμβολο κράτησης θέσης για το ακατέργαστο κείμενο μεταγραφής. Αν παραλειφθεί, η μεταγραφή προστίθεται μετά την προτροπή.";
$text['description-voicemail_transcription_prompt']['es-cl'] = "Ingrese la plantilla de indicación. Use \${transcription} como marcador de posición para el texto de transcripción sin procesar. Si se omite, la transcripción se agrega después de la indicación.";
$text['description-voicemail_transcription_prompt']['es-mx'] = "Ingrese la plantilla de indicación. Use \${transcription} como marcador de posición para el texto de transcripción sin procesar. Si se omite, la transcripción se agrega después de la indicación.";
$text['description-voicemail_transcription_prompt']['fr-ca'] = "Saisissez le modèle d'invite. Utilisez \${transcription} comme espace réservé pour le texte de transcription brut. S'il est omis, la transcription est ajoutée après l'invite.";
$text['description-voicemail_transcription_prompt']['fr-fr'] = "Saisissez le modèle d'invite. Utilisez \${transcription} comme espace réservé pour le texte de transcription brut. S'il est omis, la transcription est ajoutée après l'invite.";
$text['description-voicemail_transcription_prompt']['he-il'] = "הזן את תבנית הפקודה. השתמש ב-\${transcription} כמציין מיקום עבור טקסט התמלול הגולמי. אם הושמט, התמלול מצורף לאחר הפקודה.";
$text['description-voicemail_transcription_prompt']['it-it'] = "Inserire il modello di prompt. Utilizzare \${transcription} come segnaposto per il testo di trascrizione grezzo. Se omesso, la trascrizione viene aggiunta dopo il prompt.";
$text['description-voicemail_transcription_prompt']['ka-ge'] = "შეიყვანეთ მოთხოვნის შაბლონი. გამოიყენეთ \${transcription} როგორც ადგილმდებარეობის მარკერი ნედლი ტრანსკრიფციის ტექსტისთვის. გამოტოვების შემთხვევაში, ტრანსკრიფცია დაემატება მოთხოვნის შემდეგ.";
$text['description-voicemail_transcription_prompt']['nl-nl'] = "Voer de promptsjabloon in. Gebruik \${transcription} als tijdelijke aanduiding voor de ruwe transcriptietekst. Indien weggelaten, wordt de transcriptie na de prompt toegevoegd.";
$text['description-voicemail_transcription_prompt']['pl-pl'] = "Wprowadź szablon monitu. Użyj \${transcription} jako symbolu zastępczego dla surowego tekstu transkrypcji. Jeśli pominięto, transkrypcja jest dołączana po monicie.";
$text['description-voicemail_transcription_prompt']['pt-br'] = "Insira o modelo de prompt. Use \${transcription} como marcador de posição para o texto de transcrição bruto. Se omitido, a transcrição é adicionada após o prompt.";
$text['description-voicemail_transcription_prompt']['pt-pt'] = "Introduza o modelo de prompt. Use \${transcription} como marcador de posição para o texto de transcrição bruto. Se omitido, a transcrição é anexada após o prompt.";
$text['description-voicemail_transcription_prompt']['ro-ro'] = "Introduceți șablonul de prompt. Utilizați \${transcription} ca marcator pentru textul brut de transcriere. Dacă este omis, transcrierea este adăugată după prompt.";
$text['description-voicemail_transcription_prompt']['ru-ru'] = "Введите шаблон запроса. Используйте \${transcription} в качестве заполнителя для необработанного текста транскрипции. Если опущено, транскрипция добавляется после запроса.";
$text['description-voicemail_transcription_prompt']['sv-se'] = "Ange promptmallen. Använd \${transcription} som platshållare för den råa transkriptionstexten. Om utelämnat läggs transkriptionen till efter prompten.";
$text['description-voicemail_transcription_prompt']['uk-ua'] = "Введіть шаблон запиту. Використовуйте \${transcription} як заповнювач для необробленого тексту транскрипції. Якщо опущено, транскрипцію додають після запиту.";
$text['description-voicemail_transcription_prompt']['tr-tr'] = "İstem şablonunu girin. Ham transkripsiyon metni için yer tutucu olarak \${transcription} kullanın. Atlanırsa, transkripsiyon istemden sonra eklenir.";
$text['description-voicemail_transcription_prompt']['zh-cn'] = "输入提示模板。使用 \${transcription} 作为原始转录文本的占位符。如果省略,转录文本将附加在提示之后。";
$text['description-voicemail_transcription_prompt']['ja-jp'] = "プロンプトテンプレートを入力してください。生の文字起こしテキストのプレースホルダーとして \${transcription} を使用してください。省略した場合、文字起こしはプロンプトの後に追加されます。";
$text['description-voicemail_transcription_prompt']['ko-kr'] = "프롬프트 템플릿을 입력하세요. 원시 전사 텍스트의 자리 표시자로 \${transcription}을 사용하세요. 생략하면 전사본이 프롬프트 뒤에 추가됩니다.";
$text['description-voicemail_file']['en-us'] = "Select a listening option to include with the email notification.";
$text['description-voicemail_file']['en-gb'] = "Select a listening option to include with the email notification.";
$text['description-voicemail_file']['ar-eg'] = "اختاري خياراً للاستماع إلى الإخطار بالبريد الإلكتروني.";
+41
View File
@@ -187,6 +187,8 @@ if (!empty($_POST)) {
$voicemail_enabled = $_POST["voicemail_enabled"];
$voicemail_mail_to = $_POST["voicemail_mail_to"];
$voicemail_transcription_enabled = $_POST["voicemail_transcription_enabled"];
$voicemail_transcription_prompt_enabled = $_POST["voicemail_transcription_prompt_enabled"] ?? 'false';
$voicemail_transcription_prompt = $_POST["voicemail_transcription_prompt"] ?? '';
$voicemail_file = $_POST["voicemail_file"];
$voicemail_local_after_email = $_POST["voicemail_local_after_email"];
$user_context = $_POST["user_context"];
@@ -814,6 +816,10 @@ if (!empty($_POST) && empty($_POST["persistformvar"])) {
$array["voicemails"][$i]["voicemail_local_after_email"] = $voicemail_local_after_email;
}
$array["voicemails"][$i]["voicemail_transcription_enabled"] = $voicemail_transcription_enabled;
if ($transcribe_enabled && permission_exists('voicemail_transcription_enabled')) {
$array["voicemails"][$i]["voicemail_transcription_prompt_enabled"] = $voicemail_transcription_prompt_enabled;
$array["voicemails"][$i]["voicemail_transcription_prompt"] = $voicemail_transcription_prompt;
}
$array["voicemails"][$i]["voicemail_tutorial"] = $voicemail_tutorial ?? null;
$array["voicemails"][$i]["voicemail_enabled"] = $voicemail_enabled;
$array["voicemails"][$i]["voicemail_description"] = $description;
@@ -1000,6 +1006,8 @@ if (!empty($_GET) && (empty($_POST["persistformvar"]) || $_POST["persistformvar"
$voicemail_password = str_replace("#", "", $row["voicemail_password"] ?? '');
$voicemail_mail_to = str_replace(" ", "", $row["voicemail_mail_to"] ?? '');
$voicemail_transcription_enabled = $row["voicemail_transcription_enabled"];
$voicemail_transcription_prompt_enabled = $row["voicemail_transcription_prompt_enabled"] ?? false;
$voicemail_transcription_prompt = $row["voicemail_transcription_prompt"] ?? '';
$voicemail_tutorial = $row["voicemail_tutorial"];
$voicemail_file = $row["voicemail_file"];
$voicemail_local_after_email = $row["voicemail_local_after_email"];
@@ -1172,6 +1180,12 @@ if (!isset($voicemail_enabled)) {
if (!isset($voicemail_transcription_enabled)) {
$voicemail_transcription_enabled = $settings->get('voicemail', 'transcription_enabled_default', false);
}
if (!isset($voicemail_transcription_prompt_enabled)) {
$voicemail_transcription_prompt_enabled = false;
}
if (!isset($voicemail_transcription_prompt)) {
$voicemail_transcription_prompt = '';
}
if (!isset($voicemail_tutorial)) {
$voicemail_tutorial = false;
}
@@ -1900,6 +1914,32 @@ if (permission_exists('voicemail_edit') && is_dir(dirname(__DIR__, 2) . '/app/vo
echo $text['description-voicemail_transcription_enabled'] . "\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " " . $text['label-voicemail_transcription_prompt_enabled'] . "\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='voicemail_transcription_prompt_enabled' id='voicemail_transcription_prompt_enabled' onchange=\"document.getElementById('voicemail_transcription_prompt_row').style.display = (this.value === 'true') ? '' : 'none';\">\n";
echo " <option value='false' " . (!in_array($voicemail_transcription_prompt_enabled, [true, 'true', 't'], true) ? "selected='selected'" : null) . ">" . $text['option-false'] . "</option>\n";
echo " <option value='true' " . (in_array($voicemail_transcription_prompt_enabled, [true, 'true', 't'], true) ? "selected='selected'" : null) . ">" . $text['option-true'] . "</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-voicemail_transcription_prompt_enabled'] . "\n";
echo "</td>\n";
echo "</tr>\n";
$prompt_row_style = in_array($voicemail_transcription_prompt_enabled, [true, 'true', 't'], true) ? '' : 'display:none;';
echo "<tr id='voicemail_transcription_prompt_row' style='" . $prompt_row_style . "'>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " " . $text['label-voicemail_transcription_prompt'] . "\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <textarea class='formfld' name='voicemail_transcription_prompt' rows='4' style='width:100%;'>" . escape($voicemail_transcription_prompt) . "</textarea>\n";
echo "<br />\n";
echo $text['description-voicemail_transcription_prompt'] . "\n";
echo "</td>\n";
echo "</tr>\n";
}
if (permission_exists('voicemail_file')) {
@@ -1918,6 +1958,7 @@ if (permission_exists('voicemail_edit') && is_dir(dirname(__DIR__, 2) . '/app/vo
echo "</td>\n";
echo "</tr>\n";
}
}
if (permission_exists('voicemail_local_after_email')) {
echo "<tr>\n";
+8
View File
@@ -474,6 +474,14 @@
$apps[$x]['db'][$y]['fields'][$z]['type'] = "boolean";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "If voicemail transcription is enabled for this user";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "voicemail_transcription_prompt_enabled";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "boolean";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "If custom prompt post-processing of transcriptions is enabled";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "voicemail_transcription_prompt";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Custom prompt template; use \${transcription} as placeholder for the raw STT text";
$z++;
$apps[$x]['db'][$y]['fields'][$z]['name'] = "voicemail_attach_file";
$apps[$x]['db'][$y]['fields'][$z]['type'] = "text";
$apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Choose whether to attach the file to the email.";
+9
View File
@@ -1701,6 +1701,15 @@ $text['description-voicemail_transcription_enabled']['zh-cn'] = "选择是否为
$text['description-voicemail_transcription_enabled']['ja-jp'] = "この内線番号に対してボイスメールの文字起こしを有効にするかどうかを選択します。";
$text['description-voicemail_transcription_enabled']['ko-kr'] = "이 확장 프로그램에 음성 메일 전사가 활성화되어 있는지 선택하십시오.";
$text['label-voicemail_transcription_prompt_enabled']['en-us'] = "Custom Prompt Processing";
$text['label-voicemail_transcription_prompt_enabled']['en-gb'] = "Custom Prompt Processing";
$text['description-voicemail_transcription_prompt_enabled']['en-us'] = "When enabled, the transcription is sent to the configured AI provider with a custom prompt before being included in the voicemail email.";
$text['description-voicemail_transcription_prompt_enabled']['en-gb'] = "When enabled, the transcription is sent to the configured AI provider with a custom prompt before being included in the voicemail email.";
$text['label-voicemail_transcription_prompt']['en-us'] = "Transcription Prompt";
$text['label-voicemail_transcription_prompt']['en-gb'] = "Transcription Prompt";
$text['description-voicemail_transcription_prompt']['en-us'] = "Enter the prompt template. Use \${transcription} as a placeholder for the raw transcription text. If omitted, the transcription is appended after the prompt.";
$text['description-voicemail_transcription_prompt']['en-gb'] = "Enter the prompt template. Use \${transcription} as a placeholder for the raw transcription text. If omitted, the transcription is appended after the prompt.";
$text['description-voicemail_message']['en-us'] = "A list of recorded voice messages which shows when the message was created, caller ID information, length, file size and download or delete the message.";
$text['description-voicemail_message']['en-gb'] = "A list of recorded voice messages which shows when the message was created, caller ID information, length, file size and download or delete the message.";
$text['description-voicemail_message']['ar-eg'] = "قائمة بالرسائل الصوتية المسجلة التي تظهر وقت إنشاء الرسالة ومعلومات هوية المتصل وطولها وحجم الملف وتنزيل الرسالة أو حذفها.";
@@ -1183,6 +1183,23 @@ class voicemail {
$transcribe->audio_filename = basename($voicemail_message_file);
$message_transcription = $transcribe->transcribe('text');
if (!empty($message_transcription) && class_exists('transcribe_prompt')) {
$sql = "select voicemail_transcription_prompt_enabled, voicemail_transcription_prompt "
. "from v_voicemails where voicemail_uuid = :voicemail_uuid ";
$parameters['voicemail_uuid'] = $this->voicemail_uuid;
$vm_row = $this->database->select($sql, $parameters, 'row');
unset($sql, $parameters);
if (in_array($vm_row['voicemail_transcription_prompt_enabled'] ?? null, [true, 'true', 't'], true)
&& !empty($vm_row['voicemail_transcription_prompt'])
) {
$prompt_processor = new transcribe_prompt($settings);
$prompt_result = $prompt_processor->process($message_transcription, $vm_row['voicemail_transcription_prompt']);
if (!empty($prompt_result)) {
$message_transcription = $prompt_result;
}
}
}
//build voicemail message data array
if (!empty($message_transcription)) {
$array['voicemail_messages'][0]['voicemail_message_uuid'] = $this->voicemail_message_uuid;
+40
View File
@@ -127,6 +127,8 @@
$voicemail_mail_to = $_POST["voicemail_mail_to"];
$voicemail_sms_to = $_POST["voicemail_sms_to"] ?? null;
$voicemail_transcription_enabled = $_POST["voicemail_transcription_enabled"];
$voicemail_transcription_prompt_enabled = $_POST["voicemail_transcription_prompt_enabled"] ?? 'false';
$voicemail_transcription_prompt = $_POST["voicemail_transcription_prompt"] ?? '';
$voicemail_file = $_POST["voicemail_file"];
$voicemail_local_after_email = $_POST["voicemail_local_after_email"];
$voicemail_destination = $_POST["voicemail_destination"];
@@ -204,6 +206,10 @@
$array['voicemails'][0]['voicemail_mail_to'] = $voicemail_mail_to;
$array['voicemails'][0]['voicemail_sms_to'] = $voicemail_sms_to;
$array['voicemails'][0]['voicemail_transcription_enabled'] = $voicemail_transcription_enabled;
if ($transcribe_enabled && permission_exists('voicemail_transcription_enabled')) {
$array['voicemails'][0]['voicemail_transcription_prompt_enabled'] = $voicemail_transcription_prompt_enabled;
$array['voicemails'][0]['voicemail_transcription_prompt'] = $voicemail_transcription_prompt;
}
$array['voicemails'][0]['voicemail_tutorial'] = $voicemail_tutorial;
if (permission_exists('voicemail_recording_instructions')) {
$array['voicemails'][0]['voicemail_recording_instructions'] = $voicemail_recording_instructions;
@@ -370,6 +376,10 @@
$sql .= "voicemail_mail_to, ";
$sql .= "voicemail_sms_to, ";
$sql .= "voicemail_transcription_enabled, ";
if ($transcribe_enabled && permission_exists('voicemail_transcription_enabled')) {
$sql .= "voicemail_transcription_prompt_enabled, ";
$sql .= "voicemail_transcription_prompt, ";
}
$sql .= "voicemail_tutorial, ";
$sql .= "voicemail_recording_instructions, ";
$sql .= "voicemail_recording_options, ";
@@ -393,6 +403,8 @@
$voicemail_mail_to = $row["voicemail_mail_to"];
$voicemail_sms_to = $row["voicemail_sms_to"];
$voicemail_transcription_enabled = $row["voicemail_transcription_enabled"];
$voicemail_transcription_prompt_enabled = $row["voicemail_transcription_prompt_enabled"] ?? false;
$voicemail_transcription_prompt = $row["voicemail_transcription_prompt"] ?? '';
$voicemail_tutorial = $row["voicemail_tutorial"];
$voicemail_recording_instructions = $row["voicemail_recording_instructions"];
$voicemail_recording_options = $row["voicemail_recording_options"];
@@ -419,6 +431,8 @@
$voicemail_local_after_email = $voicemail_local_after_email ?? true;
$voicemail_enabled = $voicemail_enabled ?? $settings->get('voicemail', 'enabled_default', true);
$voicemail_transcription_enabled = $voicemail_transcription_enabled ?? $settings->get('voicemail', 'transcription_enabled_default', false);
$voicemail_transcription_prompt_enabled = $voicemail_transcription_prompt_enabled ?? false;
$voicemail_transcription_prompt = $voicemail_transcription_prompt ?? '';
$voicemail_tutorial = $voicemail_tutorial ?? false;
$voicemail_recording_instructions = $voicemail_recording_instructions ?? true;
$voicemail_recording_options = $voicemail_recording_options ?? true;
@@ -923,6 +937,32 @@
echo $text['description-voicemail_transcription_enabled']."\n";
echo "</td>\n";
echo "</tr>\n";
echo "<tr>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-voicemail_transcription_prompt_enabled']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <select class='formfld' name='voicemail_transcription_prompt_enabled' id='voicemail_transcription_prompt_enabled' onchange=\"document.getElementById('voicemail_transcription_prompt_row').style.display = (this.value === 'true') ? '' : 'none';\">\n";
echo " <option value='false' ".(!in_array($voicemail_transcription_prompt_enabled, [true, 'true', 't'], true) ? "selected='selected'" : null).">".$text['option-false']."</option>\n";
echo " <option value='true' ".(in_array($voicemail_transcription_prompt_enabled, [true, 'true', 't'], true) ? "selected='selected'" : null).">".$text['option-true']."</option>\n";
echo " </select>\n";
echo "<br />\n";
echo $text['description-voicemail_transcription_prompt_enabled']."\n";
echo "</td>\n";
echo "</tr>\n";
$prompt_row_style = in_array($voicemail_transcription_prompt_enabled, [true, 'true', 't'], true) ? '' : 'display:none;';
echo "<tr id='voicemail_transcription_prompt_row' style='".$prompt_row_style."'>\n";
echo "<td class='vncell' valign='top' align='left' nowrap='nowrap'>\n";
echo " ".$text['label-voicemail_transcription_prompt']."\n";
echo "</td>\n";
echo "<td class='vtable' align='left'>\n";
echo " <textarea class='formfld' name='voicemail_transcription_prompt' rows='4' style='width:100%;'>".escape($voicemail_transcription_prompt)."</textarea>\n";
echo "<br />\n";
echo $text['description-voicemail_transcription_prompt']."\n";
echo "</td>\n";
echo "</tr>\n";
}
if (permission_exists('voicemail_file')) {