diff --git a/app/switch/resources/scripts/app/voicemail/index.lua b/app/switch/resources/scripts/app/voicemail/index.lua index 6c43c5d014..42153bc22d 100644 --- a/app/switch/resources/scripts/app/voicemail/index.lua +++ b/app/switch/resources/scripts/app/voicemail/index.lua @@ -288,16 +288,20 @@ voicemail_mail_to = row["voicemail_mail_to"]; voicemail_attach_file = row["voicemail_attach_file"]; voicemail_local_after_email = row["voicemail_local_after_email"]; + voicemail_local_after_forward = row["voicemail_local_after_forward"]; voicemail_transcription_enabled = row["voicemail_transcription_enabled"]; voicemail_tutorial = row["voicemail_tutorial"]; end); --set default values + if (voicemail_attach_file == nil) then + voicemail_attach_file = "true"; + end if (voicemail_local_after_email == nil) then voicemail_local_after_email = "true"; end - if (voicemail_attach_file == nil) then - voicemail_attach_file = "true"; + if (voicemail_local_after_forward == nil) then + voicemail_local_after_forward = "true"; end --valid voicemail @@ -392,15 +396,19 @@ end dbh:query(sql, params, function(row) voicemail_local_after_email = row["voicemail_local_after_email"]; + voicemail_local_after_forward = row["voicemail_local_after_forward"]; end); --set default values if (voicemail_local_after_email == nil) then voicemail_local_after_email = "true"; end + if (voicemail_local_after_forward == nil) then + voicemail_local_after_forward = "true"; + end --get the message count and send the mwi event - if (voicemail_local_after_email == 'true') then + if (voicemail_local_after_email == 'true' or voicemail_local_after_forward == 'true') then message_waiting(voicemail_id, domain_uuid); end end @@ -672,6 +680,37 @@ end end --for + --whether to keep the voicemail message and details local after forward + if (voicemail_local_after_email == "false" and voicemail_local_after_forward == "false") then + --delete the voicemail message details + local sql = [[DELETE FROM v_voicemail_messages + WHERE domain_uuid = :domain_uuid + AND voicemail_uuid = :voicemail_uuid + AND voicemail_message_uuid = :uuid]] + local params = { + domain_uuid = domain_uuid, + voicemail_uuid = voicemail_uuid, + uuid = uuid + }; + if (debug["sql"]) then + freeswitch.consoleLog("notice", "[voicemail] SQL: " .. sql .. "; params:" .. json.encode(params) .. "\n"); + end + dbh:query(sql, params); + --delete voicemail recording file + if (file_exists(full_path)) then + os.remove(full_path); + end + --set message waiting indicator + message_waiting(voicemail_id, domain_uuid); + --clear the variable + db_voicemail_uuid = ''; + elseif (storage_type == "base64") then + --delete voicemail recording file + if (file_exists(full_path)) then + os.remove(full_path); + end + end + else --voicemail not enabled or does not exist if (session ~= nil and session:ready()) then diff --git a/app/switch/resources/scripts/app/voicemail/resources/functions/send_email.lua b/app/switch/resources/scripts/app/voicemail/resources/functions/send_email.lua index e41bf20328..3562e03ce8 100644 --- a/app/switch/resources/scripts/app/voicemail/resources/functions/send_email.lua +++ b/app/switch/resources/scripts/app/voicemail/resources/functions/send_email.lua @@ -52,15 +52,19 @@ voicemail_transcription_enabled = row["voicemail_transcription_enabled"]; voicemail_file = row["voicemail_file"]; voicemail_local_after_email = row["voicemail_local_after_email"]; + voicemail_local_after_forward = row["voicemail_local_after_forward"]; voicemail_description = row["voicemail_description"]; end); --set default values + if (voicemail_file == nil) then + voicemail_file = "listen"; + end if (voicemail_local_after_email == nil) then voicemail_local_after_email = "true"; end - if (voicemail_file == nil) then - voicemail_file = "listen"; + if (voicemail_local_after_forward == nil) then + voicemail_local_after_forward = "true"; end --require the email address to send the email @@ -194,13 +198,20 @@ --get the link_address link_address = http_protocol.."://"..domain_name..project_path; + --set proper delete status + if (voicemail_local_after_email == "false" and voicemail_local_after_forward == "false") then + local local_after_email = "false"; + else + local local_after_email = "true"; + end + --prepare the headers local headers = { ["X-FusionPBX-Domain-UUID"] = domain_uuid; ["X-FusionPBX-Domain-Name"] = domain_name; - ["X-FusionPBX-Call-UUID"] = uuid; - ["X-FusionPBX-Email-Type"] = 'voicemail'; - ["X-FusionPBX-local_after_email"] = voicemail_local_after_email; + ["X-FusionPBX-Call-UUID"] = uuid; + ["X-FusionPBX-Email-Type"] = 'voicemail'; + ["X-FusionPBX-local_after_email"] = local_after_email; } --prepare the voicemail_name_formatted @@ -307,7 +318,7 @@ --whether to keep the voicemail message and details local after email if (string.len(voicemail_mail_to) > 2 and email_queue_enabled == 'false') then - if (voicemail_local_after_email == "false") then + if (voicemail_local_after_email == "false" and voicemail_local_after_forward == "false") then --delete the voicemail message details local sql = [[DELETE FROM v_voicemail_messages WHERE domain_uuid = :domain_uuid diff --git a/app/voicemails/app_config.php b/app/voicemails/app_config.php index 84f45e5d72..64a84d1ee0 100644 --- a/app/voicemails/app_config.php +++ b/app/voicemails/app_config.php @@ -173,6 +173,10 @@ $apps[$x]['permissions'][$y]['groups'][] = "user"; $apps[$x]['permissions'][$y]['groups'][] = "agent"; $y++; + $apps[$x]['permissions'][$y]['name'] = "voicemail_local_after_forward"; + $apps[$x]['permissions'][$y]['groups'][] = "superadmin"; + $apps[$x]['permissions'][$y]['groups'][] = "admin"; + $y++; $apps[$x]['permissions'][$y]['name'] = "voicemail_recording_instructions"; $apps[$x]['permissions'][$y]['groups'][] = "superadmin"; $apps[$x]['permissions'][$y]['groups'][] = "admin"; @@ -445,6 +449,11 @@ $apps[$x]['db'][$y]['fields'][$z]['search'] = 'true'; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Choose to keep the voicemail file after sending the email."; $z++; + $apps[$x]['db'][$y]['fields'][$z]['name'] = "voicemail_local_after_forward"; + $apps[$x]['db'][$y]['fields'][$z]['type'] = "text"; + $apps[$x]['db'][$y]['fields'][$z]['search'] = 'true'; + $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Choose to keep the voicemail file after sending to forward destinations."; + $z++; $apps[$x]['db'][$y]['fields'][$z]['name'] = "voicemail_enabled"; $apps[$x]['db'][$y]['fields'][$z]['type'] = "text"; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = "Select to enable or disable this voicemail."; @@ -704,4 +713,4 @@ $apps[$x]['db'][$y]['fields'][$z]['type']['mysql'] = "char(36)"; $apps[$x]['db'][$y]['fields'][$z]['description']['en-us'] = ""; -?> +?> \ No newline at end of file diff --git a/app/voicemails/app_languages.php b/app/voicemails/app_languages.php index d3824bc9e1..85c418f523 100644 --- a/app/voicemails/app_languages.php +++ b/app/voicemails/app_languages.php @@ -572,8 +572,8 @@ $text['label-voicemail_mail_to']['zh-cn'] = "邮寄至"; $text['label-voicemail_mail_to']['ja-jp'] = "メールアドレス"; $text['label-voicemail_mail_to']['ko-kr'] = "메일 수신"; -$text['label-voicemail_local_after_email']['en-us'] = "Keep Local"; -$text['label-voicemail_local_after_email']['en-gb'] = "Keep Local"; +$text['label-voicemail_local_after_email']['en-us'] = "Keep Local After Email"; +$text['label-voicemail_local_after_email']['en-gb'] = "Keep Local After Email"; $text['label-voicemail_local_after_email']['ar-eg'] = "حافظ على المحلية"; $text['label-voicemail_local_after_email']['de-at'] = "Mailbox Nachricht auf dem Server behalten"; $text['label-voicemail_local_after_email']['de-ch'] = "Mailbox Nachricht auf dem Server behalten"; @@ -598,6 +598,32 @@ $text['label-voicemail_local_after_email']['zh-cn'] = "保持本地"; $text['label-voicemail_local_after_email']['ja-jp'] = "ローカルに保つ"; $text['label-voicemail_local_after_email']['ko-kr'] = "로컬 유지"; +$text['label-voicemail_local_after_forward']['en-us'] = "Keep Local After Forward"; +$text['label-voicemail_local_after_forward']['en-gb'] = "Keep Local After Forward"; +$text['label-voicemail_local_after_forward']['ar-eg'] = "الحفاظ على المحلية بعد الأمام"; +$text['label-voicemail_local_after_forward']['de-at'] = "Nach Weiterleitung lokal behalten"; +$text['label-voicemail_local_after_forward']['de-ch'] = "Nach Weiterleitung lokal behalten"; +$text['label-voicemail_local_after_forward']['de-de'] = "Nach Weiterleitung lokal behalten"; +$text['label-voicemail_local_after_forward']['el-gr'] = "Keep Local After Forward"; +$text['label-voicemail_local_after_forward']['es-cl'] = "Mantener local después de avanzar"; +$text['label-voicemail_local_after_forward']['es-mx'] = "Mantener local después de avanzar"; +$text['label-voicemail_local_after_forward']['fr-ca'] = "Rester local après le transfert"; +$text['label-voicemail_local_after_forward']['fr-fr'] = "Rester local après le transfert"; +$text['label-voicemail_local_after_forward']['he-il'] = "שמור על מקומי לאחר קדימה"; +$text['label-voicemail_local_after_forward']['it-it'] = "Mantieni locale dopo l'inoltro"; +$text['label-voicemail_local_after_forward']['nl-nl'] = "Lokaal behouden na doorsturen"; +$text['label-voicemail_local_after_forward']['pl-pl'] = "Zachowaj lokalny po przesłaniu dalej"; +$text['label-voicemail_local_after_forward']['pt-br'] = "Manter local depois de encaminhar"; +$text['label-voicemail_local_after_forward']['pt-pt'] = "Manter local depois de encaminhar"; +$text['label-voicemail_local_after_forward']['ro-ro'] = "Păstrați local după redirecționare"; +$text['label-voicemail_local_after_forward']['ru-ru'] = "Сохранять локальное значение после пересылки"; +$text['label-voicemail_local_after_forward']['sv-se'] = "Håll lokal efter Forward"; +$text['label-voicemail_local_after_forward']['uk-ua'] = "Зберігати локальні після пересилання"; +$text['label-voicemail_local_after_forward']['tr-tr'] = "İleriden Sonra Yerel Tut"; +$text['label-voicemail_local_after_forward']['zh-cn'] = "转发后保持本地"; +$text['label-voicemail_local_after_forward']['ja-jp'] = "転送後もローカルに保持"; +$text['label-voicemail_local_after_forward']['ko-kr'] = "전달 후 로컬 유지"; + $text['label-voicemail_transcribe_enabled']['en-us'] = "Transcribe"; $text['label-voicemail_transcribe_enabled']['en-gb'] = "Transcribe"; $text['label-voicemail_transcribe_enabled']['ar-eg'] = "نسخ"; @@ -1688,6 +1714,32 @@ $text['description-voicemail_local_after_email']['zh-cn'] = "选择发送电子 $text['description-voicemail_local_after_email']['ja-jp'] = "電子メール通知の送信後にボイスメールをシステムに保持するかどうかを選択します。"; $text['description-voicemail_local_after_email']['ko-kr'] = "이메일 알림을 보낸 후 시스템에 음성 메일을 유지할지 여부를 선택합니다."; +$text['description-voicemail_local_after_forward']['en-us'] = "Choose whether to keep the voicemail in this mailbox after sending to the defined Forward Destination(s)."; +$text['description-voicemail_local_after_forward']['en-gb'] = "Choose whether to keep the voicemail in this mailbox after sending to the defined Forward Destination(s)."; +$text['description-voicemail_local_after_forward']['ar-eg'] = "اختر ما إذا كنت تريد الاحتفاظ بالبريد الصوتي في صندوق البريد هذا بعد إرساله إلى وجهة (وجهات) إعادة التوجيه المحددة."; +$text['description-voicemail_local_after_forward']['de-at'] = "Wählen Sie, ob die Voicemail nach dem Senden an die definierten Weiterleitungsziele in dieser Mailbox bleiben soll."; +$text['description-voicemail_local_after_forward']['de-ch'] = "Wählen Sie, ob die Voicemail nach dem Senden an die definierten Weiterleitungsziele in dieser Mailbox bleiben soll."; +$text['description-voicemail_local_after_forward']['de-de'] = "Wählen Sie, ob die Voicemail nach dem Senden an die definierten Weiterleitungsziele in dieser Mailbox bleiben soll."; +$text['description-voicemail_local_after_forward']['el-gr'] = "Επιλέξτε εάν θα διατηρηθεί ο τηλεφωνητής σε αυτό το γραμματοκιβώτιο μετά την αποστολή στον καθορισμένο(ους) Προορισμό(ους)."; +$text['description-voicemail_local_after_forward']['es-cl'] = "Elija si desea conservar el correo de voz en este buzón después de enviarlo a los destinos de reenvío definidos."; +$text['description-voicemail_local_after_forward']['es-mx'] = "Elija si desea conservar el correo de voz en este buzón después de enviarlo a los destinos de reenvío definidos."; +$text['description-voicemail_local_after_forward']['fr-ca'] = "Choisissez si vous souhaitez conserver la messagerie vocale dans cette boîte aux lettres après l'envoi vers la ou les destinations de transfert définies."; +$text['description-voicemail_local_after_forward']['fr-fr'] = "Choisissez si vous souhaitez conserver la messagerie vocale dans cette boîte aux lettres après l'envoi vers la ou les destinations de transfert définies."; +$text['description-voicemail_local_after_forward']['he-il'] = "בחר אם לשמור את הדואר הקולי בתיבת הדואר הזו לאחר השליחה ליעד/ים המוגדרים."; +$text['description-voicemail_local_after_forward']['it-it'] = "Scegliere se conservare i messaggi vocali in questa casella di posta dopo l'invio alle destinazioni di inoltro definite."; +$text['description-voicemail_local_after_forward']['nl-nl'] = "Kies of u de voicemail in deze mailbox wilt bewaren na verzending naar de gedefinieerde doorstuurbestemming(en)."; +$text['description-voicemail_local_after_forward']['pl-pl'] = "Wybierz, czy poczta głosowa ma być przechowywana w tej skrzynce pocztowej po wysłaniu do określonych miejsc docelowych przekazywania."; +$text['description-voicemail_local_after_forward']['pt-br'] = "Escolha se deseja manter o correio de voz nesta caixa postal após enviar para o(s) destino(s) de encaminhamento definido(s)."; +$text['description-voicemail_local_after_forward']['pt-pt'] = "Escolha se deseja manter o correio de voz nesta caixa postal após enviar para o(s) destino(s) de encaminhamento definido(s)."; +$text['description-voicemail_local_after_forward']['ro-ro'] = "Alegeți dacă doriți să păstrați mesageria vocală în această cutie poștală după trimiterea către destinația (destinațiile) de redirecționare definite."; +$text['description-voicemail_local_after_forward']['ru-ru'] = "Выберите, следует ли сохранять голосовую почту в этом почтовом ящике после отправки в определенные пункты назначения пересылки."; +$text['description-voicemail_local_after_forward']['sv-se'] = "Välj om du vill behålla röstbrevlådan i den här brevlådan efter att ha skickats till den eller de definierade vidarebefordrandestinationerna."; +$text['description-voicemail_local_after_forward']['uk-ua'] = "Виберіть, чи зберігати голосову пошту в цій поштовій скриньці після надсилання на визначені пункти призначення."; +$text['description-voicemail_local_after_forward']['tr-tr'] = "Tanımlanan İletme Hedef(ler)ine gönderdikten sonra sesli postanın bu posta kutusunda tutulup tutulmayacağını seçin."; +$text['description-voicemail_local_after_forward']['zh-cn'] = "选择在发送到定义的转发目的地后是否将语音邮件保留在此邮箱中。"; +$text['description-voicemail_local_after_forward']['ja-jp'] = "定義された転送先に送信した後、ボイスメールをこのメールボックスに保持するかどうかを選択します。"; +$text['description-voicemail_local_after_forward']['ko-kr'] = "정의된 전달 대상으로 음성 메일을 보낸 후 이 사서함에 음성 메일을 보관할지 여부를 선택합니다."; + $text['description-voicemail_id']['en-us'] = "Enter the Voicemail ID"; $text['description-voicemail_id']['en-gb'] = "Enter the Voicemail ID"; $text['description-voicemail_id']['ar-eg'] = "أدخل معرف البريد الصوتي"; diff --git a/app/voicemails/voicemail_edit.php b/app/voicemails/voicemail_edit.php index b026cdc0a4..f1218a6df6 100644 --- a/app/voicemails/voicemail_edit.php +++ b/app/voicemails/voicemail_edit.php @@ -99,6 +99,7 @@ $voicemail_file = $_POST["voicemail_file"]; $voicemail_local_after_email = $_POST["voicemail_local_after_email"]; $voicemail_destination = $_POST["voicemail_destination"]; + $voicemail_local_after_forward = $_POST["voicemail_local_after_forward"]; $voicemail_enabled = $_POST["voicemail_enabled"] ?? 'false'; $voicemail_description = $_POST["voicemail_description"]; $voicemail_tutorial = $_POST["voicemail_tutorial"]; @@ -176,9 +177,24 @@ if (permission_exists('voicemail_file')) { $array['voicemails'][0]['voicemail_file'] = $voicemail_file; } - if (permission_exists('voicemail_local_after_email')) { + if (permission_exists('voicemail_local_after_email') && !empty($voicemail_mail_to)) { $array['voicemails'][0]['voicemail_local_after_email'] = $voicemail_local_after_email; } + else if (permission_exists('voicemail_local_after_forward')) { + $array['voicemails'][0]['voicemail_local_after_email'] = $voicemail_local_after_forward; + } + else { + $array['voicemails'][0]['voicemail_local_after_email'] = 'true'; + } + if (permission_exists('voicemail_local_after_forward')) { + $array['voicemails'][0]['voicemail_local_after_forward'] = $voicemail_local_after_forward; + } + else if (permission_exists('voicemail_local_after_email') && !empty($voicemail_mail_to)) { + $array['voicemails'][0]['voicemail_local_after_forward'] = $voicemail_local_after_email; + } + else { + $array['voicemails'][0]['voicemail_local_after_forward'] = 'true'; + } $array['voicemails'][0]['voicemail_enabled'] = $voicemail_enabled; $array['voicemails'][0]['voicemail_description'] = $voicemail_description; @@ -333,6 +349,7 @@ $voicemail_recording_options = $row["voicemail_recording_options"]; $voicemail_file = $row["voicemail_file"]; $voicemail_local_after_email = $row["voicemail_local_after_email"]; + $voicemail_local_after_forward = $row["voicemail_local_after_forward"]; $voicemail_enabled = $row["voicemail_enabled"]; $voicemail_description = $row["voicemail_description"]; } @@ -341,6 +358,7 @@ else { $voicemail_file = $_SESSION['voicemail']['voicemail_file']['text']; $voicemail_local_after_email = $_SESSION['voicemail']['keep_local']['boolean']; + $voicemail_local_after_forward = $_SESSION['voicemail']['keep_local']['boolean']; } //remove the spaces @@ -350,6 +368,7 @@ //set the defaults if (empty($voicemail_local_after_email)) { $voicemail_local_after_email = 'true'; } + if (empty($voicemail_local_after_forward)) { $voicemail_local_after_forward = 'true'; } if (empty($voicemail_enabled)) { $voicemail_enabled = 'true'; } if (empty($voicemail_transcription_enabled)) { $voicemail_transcription_enabled = $_SESSION['voicemail']['transcription_enabled_default']['boolean']; } if (empty($voicemail_tutorial)) { $voicemail_tutorial = 'false'; } @@ -827,13 +846,16 @@ echo "\n"; } - if (permission_exists('voicemail_local_after_email')) { + if ( + permission_exists('voicemail_file') && + permission_exists('voicemail_local_after_email') + ) { echo "