Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MSPB-253: Implement 'Always On, Busy, and No Answer' Call Forwarding Feature #493

Merged
merged 95 commits into from
Dec 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
95 commits
Select commit Hold shift + click to select a range
b6dc3cb
feat: Update references to call failover in template/i18n
Oct 20, 2022
971166f
feat: Update rendering method for call failover feature
Oct 20, 2022
4abc218
feat: Update call forward references on render
Oct 20, 2022
e42c8ed
feat: Update call forward save logic
Oct 21, 2022
59efbc7
chore: Remove dead call forward references
Oct 21, 2022
ea10891
feat: Add support for telicon as feature state indicator
Oct 21, 2022
8ed13f3
Register call forwarding as supported feature
Dec 31, 2022
422ddb0
Create call forwaring submodule skeleton
Dec 31, 2022
61b0c6a
MSPB-317: update msteams device name (#476)
mavriciomart Jan 6, 2023
5011a06
Add inline components
Jan 20, 2023
65d0f32
Add template for simple strategies
Isaac2600Hz Apr 2, 2023
5ee77a5
Add options template
Isaac2600Hz Apr 2, 2023
f0945be
Add complex strategies template
Isaac2600Hz Apr 2, 2023
0aeed35
Add layout template for call-forwarding
Isaac2600Hz Apr 2, 2023
c359358
Add template for time listings
Isaac2600Hz Apr 2, 2023
c9831f1
Modify en-us.json to add call-forwarding parameters
Isaac2600Hz Apr 2, 2023
07da9b5
Add call-forwarding styles
Isaac2600Hz Apr 2, 2023
efc818e
Add call-forwarding logic for the template
Isaac2600Hz Apr 2, 2023
70e5c0e
Modify en-us.json to add call-forwarding parameters
Isaac2600Hz Apr 2, 2023
454c025
Merge branch 'master' into MSPB-253
Isaac2600Hz Apr 2, 2023
524f374
Merge branch 'master' of github.com:2600hz/monster-ui-voip into MSPB-253
Isaac2600Hz Apr 2, 2023
8f67f87
MSPB-253: Requested changes and fixes
ramandeepromana Apr 5, 2023
5601d44
Merge branch 'master' into MSPB-253
ramandeepromana Apr 5, 2023
0109231
Merge branch 'MSPB-253' of github.com:2600hz/monster-ui-voip into MSP…
Isaac2600Hz Apr 5, 2023
37fff3c
Modify current payload to match current structure
Isaac2600Hz Apr 6, 2023
7c8d72a
Add number option in translations json
Isaac2600Hz Apr 13, 2023
9978790
Modify payload to match current requirements
Isaac2600Hz Apr 20, 2023
c3a9436
Add Vm box logic
Isaac2600Hz Apr 20, 2023
e2accca
Modify data needed for the templates
Isaac2600Hz Apr 20, 2023
39b568c
Modify templates to match current data structure
Isaac2600Hz Apr 20, 2023
17c1f7a
Remove logs
Isaac2600Hz Apr 20, 2023
9441f84
Modify temnplate to show options acording to selected data
Isaac2600Hz Apr 20, 2023
b44abc0
Update template data accoirding to new payload
Isaac2600Hz Apr 23, 2023
c17b71a
Update payload according to new requirements
Isaac2600Hz Apr 23, 2023
d370e96
Update voicemail logic
Isaac2600Hz Apr 23, 2023
7857480
Update templates according to new payload
Isaac2600Hz Apr 23, 2023
00d487c
Fix Seletive payload
Isaac2600Hz Apr 24, 2023
69cfe5c
Add matchlist functionality
Isaac2600Hz May 10, 2023
c01fe97
Fix app not refreshing when on save
Isaac2600Hz May 10, 2023
e32ed64
Fix voicemail functionality
Isaac2600Hz May 10, 2023
e5c461b
Adjuss logic to match new templates
Isaac2600Hz May 10, 2023
071b83b
Modify templates to match current data
Isaac2600Hz May 10, 2023
678bffa
Fix off option not working
Isaac2600Hz May 10, 2023
91d9e77
Add rules template
Isaac2600Hz May 10, 2023
cdb5bab
Fix voicemail option not working
Isaac2600Hz May 12, 2023
a485120
Added owner_id to matchlist
Isaac2600Hz May 12, 2023
6f3c75d
Deleted the pagination in vm boxes
Isaac2600Hz May 12, 2023
640abbc
Fix code to modify current flow to match voicemail
Isaac2600Hz May 12, 2023
e2060c0
Display only user vmboxes instead of account vmboxes
Isaac2600Hz May 26, 2023
6686cc7
Modify payload and API call to use POST instead of PATCH
Isaac2600Hz Jun 8, 2023
9ab9924
Modify current logic to match new payload
Isaac2600Hz Jun 8, 2023
4dda6d4
Add a function to cleanup data being sent
Isaac2600Hz Jun 8, 2023
4ca4c11
Modify current template logic
Isaac2600Hz Jun 8, 2023
f99f332
Modify templates to match current requirements
Isaac2600Hz Jun 8, 2023
29c3d46
Fix UI being blocked by user walkthrough
Isaac2600Hz Jun 8, 2023
591506f
Fix voicemails not working properly
Isaac2600Hz Jun 14, 2023
1bbe5ad
Modfiy rule template to match current needs
Isaac2600Hz Aug 30, 2023
cad8957
Modfiy simple strategy template to match current needs
Isaac2600Hz Aug 30, 2023
4c01c13
Modfiy complex strategy template to match current needs
Isaac2600Hz Aug 30, 2023
a376838
Modfiy to and from labels
Isaac2600Hz Aug 30, 2023
f4a5dca
Add rules template logic
Isaac2600Hz Aug 30, 2023
0ee8ebb
Add logic that renders matchlist
Isaac2600Hz Aug 30, 2023
9161982
Add logic for when saving the template
Isaac2600Hz Aug 30, 2023
30ca827
Modify logic for selective rules
Isaac2600Hz Aug 30, 2023
271c885
Add logic for when user has no existing matchlist / for deleting unus…
Isaac2600Hz Aug 30, 2023
284c379
Add skip to voicemail function
Isaac2600Hz Aug 30, 2023
573d0cb
Modify create matchlist function
Isaac2600Hz Aug 30, 2023
f068b21
Changed name function from userUpdateCallflow to userUpdateVoicemailC…
Isaac2600Hz Aug 30, 2023
2ff5c67
Delete pagination from matchList.list
Isaac2600Hz Aug 30, 2023
94ef9b1
Modify function patchUserMatchList to deleteUserMatchList
Isaac2600Hz Aug 30, 2023
0c9cade
Modify renderRulesListingTemplate to accept custom intervals
Isaac2600Hz Aug 30, 2023
c51efa1
Added getUserTemporalRule and createUserTemporalRule
Isaac2600Hz Aug 30, 2023
88be032
Add selective strategy logic
Isaac2600Hz Aug 30, 2023
ffecbff
Modify logic for when loading rules templates
Isaac2600Hz Aug 30, 2023
f814542
Add fillmisingdays function
Isaac2600Hz Aug 30, 2023
3ad6648
Add updateflow function
Isaac2600Hz Aug 30, 2023
f5d7dfc
Add regexfromarray function
Isaac2600Hz Aug 30, 2023
cf208a0
Add regexToArray function
Isaac2600Hz Aug 30, 2023
08d6cb3
Add formatRulesData function
Isaac2600Hz Aug 30, 2023
8f226a4
Add transformIntervals function
Isaac2600Hz Aug 30, 2023
2ba7d98
Add transformFlowIntoRules function
Isaac2600Hz Aug 30, 2023
3ec8694
Add functions that complete the logic of selective mode
Isaac2600Hz Aug 30, 2023
cccb3c4
Fix new match list not being loaded correctly
Isaac2600Hz Sep 1, 2023
ae033a9
Fix 409 erros due to an unnecesary api call
Isaac2600Hz Sep 1, 2023
bb5f870
Fix custom intervals not showing appropriately
Isaac2600Hz Sep 4, 2023
9658251
Update skip_module to false when on busy or no_answer
Isaac2600Hz Sep 4, 2023
3e716ed
Avoid creating call_forward object when on voicemail
Isaac2600Hz Sep 19, 2023
5550ea2
Setting skip_module value accordingly
Isaac2600Hz Sep 19, 2023
8501ff9
Modify logic to avoid deleting unnecesary API calls
Isaac2600Hz Sep 19, 2023
f21bc23
Capitalize match list name
Isaac2600Hz Sep 19, 2023
80b041f
Remove logs
Isaac2600Hz Sep 26, 2023
c30ebc5
Add translations
Isaac2600Hz Nov 14, 2023
7bb4b29
General bug fixing
Isaac2600Hz Nov 14, 2023
a11637f
MSPB-253: Refactor to Remove Selective Staggery, Upgrade UI Logic, an…
ramandeepromana Dec 13, 2023
dad8d98
Merge branch 'master' into MSPB-253
ramandeepromana Dec 14, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ define(function(require) {
'strategyHours',
'strategyHolidays',
'users',
'usersCallForwarding',
'vmboxes'
];

Expand Down
70 changes: 56 additions & 14 deletions i18n/de-DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -608,22 +608,64 @@
"successResetPassword": "Vorgang erfolgreich durchgeführt! {{ name }} wird in Kürze eine E-Mail erhalten, in der steht, wie er sein Kennwort zurücksetzen kann."
},
"uploadPicture": "Ein Bild hochladen",
"user": "Benutzer",
"call_forward": {
"failoverMode": "Im Fehlerfall",
"directCallsOnly": "Nur Direktanrufe weiterleiten",
"headline": "Einstellungen zur Weiterleitung von Benutzeranrufen",
"keepCallerId": "Ursprüngliche Anrufer-ID speichern",
"label": "Alle Anrufe weiterleiten an" ,
"placeholder": "+49 123 4567890",
"requireKeyPress": "Sprachnachricht für weitergeleitete Rufnummern hinterlassen",
"callForwarding": {
"title": "Anrufweiterleitung",
"timeoutWarning": "Um Sprachnachrichten für weitergeleitete Rufnummern zu hinterlassen, muss Ihre Rufzeichen-Zeitüberschreitung mindestens 30 Sekunden betragen. Wenn Sie jetzt speichern, werden Sie automatisch in die Benutzereinstellungen weitergeleitet, wo Sie die Rufzeichen-Zeitüberschreitung aktualisieren können.",
"__comment": ": Modus für Failover bei Anrufweiterleitung hinzugefügt",
"__version": "4.0",
"failoverWarning": "Im „Failover-Modus“ haben die Anrufweiterleitungseinstellungen nur dann Geltung, wenn keines der Geräte dieses Benutzers registriert ist.",
"failover_title": "Anrufweiterleitung (Failover-Modus)"
"strategies": {
"off": {
"title": "Aus",
"helpText": "Die Anrufweiterleitung ist deaktiviert und Anrufe werden nicht weitergeleitet."
},
"alwaysOn": {
"title": "Immer aktiv",
"helpText": "Anrufe werden zu einem ausgewählten Ziel weitergeleitet."
},
"busy": {
"title": "Besetzt",
"helpText": "Anrufe werden weitergeleitet, wenn alle Leitungsauftritte belegt sind."
},
"noAnswer": {
"title": "Keine Antwort",
"helpText": "Anrufe werden weitergeleitet, wenn der Anruf auf keinem zugewiesenen Gerät beantwortet wird."
},
"common": {
"voicemail": {
"label": "Voicemail",
"selectLabel": "Ziel Voicemail-Box"
},
"phoneNumber": {
"label": "Telefonnummer",
"inputLabelTo": "Anrufe weiterleiten nach",
"inputLabelFrom": "Anrufe weiterleiten von"
},
"options": {
"title": "Zusätzliche Optionen",
"forward": {
"title": "Nur direkte Anrufe weiterleiten",
"helpText": "Eingehende Anrufe, die auf Klingelgruppen, Warteschlangen usw. abzielen, werden nicht weitergeleitet."
},
"acknowledge": {
"title": "Anruf bestätigen",
"helpText": "Erhalten Sie eine Aufforderung zur Annahme weitergeleiteter Anrufe. Dadurch wird vermieden, dass Voicemails mit der Nummer \"Anrufe weiterleiten nach\" in Verbindung gebracht werden."
},
"keep": {
"title": "Ursprüngliche Anrufer-ID beibehalten",
"helpText": "Die ursprüngliche eingehende Anrufer-ID wird für den weitergeleiteten Anruf verwendet."
},
"ring": {
"title": "Meine anderen Geräte klingeln lassen",
"helpText": "Auch Ihre anderen Geräte klingeln, wenn ein weitergeleiteter Anruf eingeht."
}
}
}
},

"toast": {
"error": {
"save": "Hoppla, es gab ein Problem beim Anwenden Ihrer Änderungen"
}
}
},
"user": "Benutzer",
"callRecording": {
"title": "Angepasste Anrufaufzeichnung",
"headline": "Anpassungen für Anrufaufzeichnung des Benutzers",
Expand Down
74 changes: 63 additions & 11 deletions i18n/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -615,20 +615,72 @@
},
"uploadPicture": "Upload a Picture",
"user": "User",
"call_forward": {
"callForwarding": {
"title": "Call Forwarding",
"strategies": {
"off": {
"title": "Off",
"helpText": "Call Forwarding is disabled and calls will not be forwarded."
},
"alwaysOn": {
"title": "Always On",
"helpText": "Calls will be forwarded to a destination of choice."
},
"busy": {
"title": "Busy",
"helpText": "Calls will be forwarded if all line appearances are busy."
},
"noAnswer": {
"title": "No Answer",
"helpText": "Calls will be forwarded if the call is not answered on any assigned devices."
},
"common": {
"voicemail": {
"label": "Voicemail",
"selectLabel": "Target voicemail box"
},
"phoneNumber": {
"label": "Phone number",
"inputLabelTo": "Forward calls to",
"inputLabelFrom": "Forward calls from"
},
"options": {
"title": "Additional Options",
"forward": {
"title": "Forward direct calls only",
"helpText": "Inbound calls targeting ring groups, queues, etc will not be forwarded."
},
"acknowledge": {
"title": "Acknowledge Call",
"helpText": "Receive a prompt to accept forwarded calls. This prevents voicemails from being associated with the \"Forward To\" number."
},
"keep": {
"title": "Keep initial Caller ID",
"helpText": "The original incoming Caller ID will be used for the forwarded call."
},
"ring": {
"title": "Ring my other devices",
"helpText": "Your other devices will also ring when receiving a forwarded call."
}
}
}
},

"toast": {
"error": {
"save": "Ooops, there was an issue while applying your changes"
}
}
},
"call_failover": {
"failoverMode": "Failover Mode",
"directCallsOnly": "Forward direct calls only",
"headline": "User Call Forwarding Settings",
"directCallsOnly": "Direct calls only",
"headline": "User Call Failover Settings",
"keepCallerId": "Keep Original Caller-ID",
"label": "Forward all calls to" ,
"label": "Forward all calls to",
"placeholder": "+14157283992",
"requireKeyPress": "Leave voicemails on forwarded numbers",
"title": "Call Forwarding",
"timeoutWarning": "In order to leave voicemails on forwarded numbers, your ringing timeout needs to be set to at least 30sec. By saving now, you will automatically be redirected to the user edition where you can update the ringing timeout.",
"__comment": ": Now add a mode for failover for call forward",
"__version": "4.0",
"failoverWarning": "In \"Failover Mode\", the call-forward settings will only apply when none of this user's devices are registered.",
"failover_title": "Call-Forwarding (Failover Mode)"
"requireKeyPress": "Require pressing 1 to accept the call",
"title": "Failover Mode"
},
"callRecording": {
"title": "Customized Call Recording",
Expand Down
66 changes: 56 additions & 10 deletions i18n/es-ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -500,15 +500,62 @@
},
"uploadPicture": "Cargar una imagen",
"user": "Usuario",
"call_forward": {
"directCallsOnly": "Desvia llamadas directas sólamente",
"headline": "Configuración de Desvío de llamadas del usuario",
"keepCallerId": "Mantener su identificador de llamadas",
"label": "Desenvíar todas las llamadas a",
"placeholder": "+14157283992",
"requireKeyPress": "Deja mensajes de voz en números desvíados ",
"title": "Desvío de llamadas",
"timeoutWarning": "Para dejar mensajes de voz en números desvíados, su tiempo de espera de llamada debe ser ajustado a menos de 30 seg. Salvando ahora, será automáticamente desviado a la edición del usuario donde puede actualizar el intervalo de espera que suena."
"callForwarding": {
"title": "Desvío de Llamadas",
"strategies": {
"off": {
"title": "Apagar",
"helpText": "El desvío de llamadas está desactivado y las llamadas no serán desviadas."
},
"alwaysOn": {
"title": "Siempre Activo",
"helpText": "Las llamadas serán desviadas a un destino de elección."
},
"busy": {
"title": "Ocupado",
"helpText": "Las llamadas serán desviadas si todas las apariencias de línea están ocupadas."
},
"noAnswer": {
"title": "Sin Respuesta",
"helpText": "Las llamadas serán desviadas si la llamada no es contestada en ninguno de los dispositivos asignados."
},
"common": {
"voicemail": {
"label": "Correo de voz",
"selectLabel": "Seleccionar buzón de voz de destino"
},
"phoneNumber": {
"label": "Número de teléfono",
"inputLabelTo": "Desviar llamadas a",
"inputLabelFrom": "Desviar llamadas desde"
},
"options": {
"title": "Opciones adicionales",
"forward": {
"title": "Desviar solo llamadas directas",
"helpText": "Las llamadas entrantes dirigidas a grupos de timbre, colas, etc. no serán desviadas."
},
"acknowledge": {
"title": "Reconocer llamada",
"helpText": "Reciba un aviso para aceptar llamadas desviadas. Esto evita que los mensajes de voz se asocien con el número \"Desviar a\"."
},
"keep": {
"title": "Conservar identificación de llamada inicial",
"helpText": "Se utilizará la identificación de llamada entrante original para la llamada desviada."
},
"ring": {
"title": "Sonar en mis otros dispositivos",
"helpText": "Tus otros dispositivos también sonarán al recibir una llamada desviada."
}
}
}
},

"toast": {
"error": {
"save": "Ups, hubo un problema al aplicar tus cambios"
}
}
},
"callRecording": {
"title": "Grabación de llamadas entrantes",
Expand Down Expand Up @@ -556,7 +603,6 @@
"placeholder": "Número de destino "
}
},

"googlePrinter": {
"title": "Impresora de Google",
"text1": "seleccionar ",
Expand Down
65 changes: 56 additions & 9 deletions i18n/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -474,15 +474,62 @@
},
"uploadPicture": "Uploader une image",
"user": "Utilisateur",
"call_forward": {
"directCallsOnly": "Seulement transférer les appels direct",
"headline": "Réglages du transfert d'appel",
"keepCallerId": "Garder le Caller-ID",
"label": "Transférer tous les appels vers",
"placeholder": "+14157283992",
"requireKeyPress": "Laisser message sur le répondeur du numéro transferé",
"title": "Transfert d'appels",
"timeoutWarning": "Afin de pouvoir laisser un message sur le répondeur du numéro transferé, la durée de sonnerie de l'utilisateur doit être d'au moins 30sec. En cliquant sur le bouton \"Sauvegarder\", vous serez automatiquement redirigé vers l'édition d'utilisateur où vous pourrez modifier la durée de sonnerie."
"callForwarding": {
"title": "Transfert d'appel",
"strategies": {
"off": {
"title": "Désactivé",
"helpText": "Le transfert d'appel est désactivé et les appels ne seront pas redirigés."
},
"alwaysOn": {
"title": "Toujours actif",
"helpText": "Les appels seront redirigés vers une destination de choix."
},
"busy": {
"title": "Occupé",
"helpText": "Les appels seront redirigés si toutes les apparences de ligne sont occupées."
},
"noAnswer": {
"title": "Pas de réponse",
"helpText": "Les appels seront redirigés si l'appel n'est pas répondu sur tous les appareils assignés."
},
"common": {
"voicemail": {
"label": "Messagerie vocale",
"selectLabel": "Boîte vocale cible"
},
"phoneNumber": {
"label": "Numéro de téléphone",
"inputLabelTo": "Rediriger les appels vers",
"inputLabelFrom": "Rediriger les appels depuis"
},
"options": {
"title": "Options supplémentaires",
"forward": {
"title": "Rediriger uniquement les appels directs",
"helpText": "Les appels entrants ciblant des groupes de sonnerie, des files d'attente, etc. ne seront pas redirigés."
},
"acknowledge": {
"title": "Reconnaître l'appel",
"helpText": "Recevez une invite pour accepter les appels redirigés. Cela évite que les messages vocaux soient associés au numéro de \"Rediriger vers\"."
},
"keep": {
"title": "Conserver l'identifiant de l'appelant initial",
"helpText": "L'identifiant d'appel entrant original sera utilisé pour l'appel redirigé."
},
"ring": {
"title": "Faire sonner mes autres appareils",
"helpText": "Vos autres appareils sonneront également lors de la réception d'un appel redirigé."
}
}
}
},

"toast": {
"error": {
"save": "Oups, il y a eu un problème lors de l'application de vos modifications"
}
}
},
"callRecording": {
"title": "Enregistrement d'appel entrant",
Expand Down
69 changes: 57 additions & 12 deletions i18n/ru-RU.json
Original file line number Diff line number Diff line change
Expand Up @@ -470,19 +470,64 @@
"successResetPassword": "Успешно! {{ name }} скоро получит сообщение по электронной почте как сбросить пароль."
},
"uploadPicture": "Загрузка картинки",
"user": "Пользователь",
"call_forward": {
"directCallsOnly": "Переводить только прямые вызовы",
"headline": "Настройка переадресации вызовов",
"keepCallerId": "Сохранить ваш АОН",
"label": "Перевести все вызовы" ,
"placeholder": "+74157283992",
"requireKeyPress": "Оставить голосовые сообщения на переадресованных номерах",
"title": "Переадресация вызовов",
"timeoutWarning": "Для перевода голосовых сообщений на переадресуемые номера, вы должны установить ограничение времени вызова не менее 30 сек. Для экономии времени, вы будете автоматически перенаправлены в меню редактирования пользователя, где вы сможете изменить время ограничения вызова.",
"failoverWarning": "\"Запасной вариант\" переадресации будет ипользован когда ни одного устройства пользователя не зарегистрировано.",
"failover_title": "Запасной вариант переадресация"
"callForwarding": {
"title": "Переадресация звонков",
"strategies": {
"off": {
"title": "Выключено",
"helpText": "Переадресация звонков отключена, и звонки не будут переадресованы."
},
"alwaysOn": {
"title": "Всегда включено",
"helpText": "Звонки будут переадресованы на выбранное направление."
},
"busy": {
"title": "Занято",
"helpText": "Звонки будут переадресованы, если все линии заняты."
},
"noAnswer": {
"title": "Нет ответа",
"helpText": "Звонки будут переадресованы, если звонок не будет принят на каких-либо назначенных устройствах."
},
"common": {
"voicemail": {
"label": "Голосовая почта",
"selectLabel": "Целевой ящик голосовой почты"
},
"phoneNumber": {
"label": "Номер телефона",
"inputLabelTo": "Переадресовать звонки на",
"inputLabelFrom": "Переадресовать звонки от"
},
"options": {
"title": "Дополнительные параметры",
"forward": {
"title": "Переадресовать только прямые звонки",
"helpText": "Входящие звонки, направленные на группы звонков, очереди и т. д., не будут переадресованы."
},
"acknowledge": {
"title": "Подтверждение звонка",
"helpText": "Получите предложение принять переадресованные звонки. Это предотвращает связывание голосовых сообщений с номером \"Переадресовать на\"."
},
"keep": {
"title": "Сохранить начальный идентификатор вызывающего",
"helpText": "Оригинальный входящий идентификатор вызывающего будет использоваться для переадресованного вызова."
},
"ring": {
"title": "Звонить на мои другие устройства",
"helpText": "Ваши другие устройства также будут звонить при получении переадресованного звонка."
}
}
}
},

"toast": {
"error": {
"save": "Упс, возникла проблема при применении ваших изменений"
}
}
},
"user": "Пользователь",
"callRecording": {
"title": "Запись входящих разговоров",
"headline": "Настройки записи разговоров",
Expand Down
Loading