10 Commits
main ... Lite

Author SHA1 Message Date
96cbfc69b5 update manifest for firefox 2024-12-09 23:49:46 +03:00
ec159f33f4 rm 2024-12-09 23:47:11 +03:00
f06d0f97aa small fix 2024-12-09 23:32:20 +03:00
78f7494790 dd 2024-12-09 23:24:01 +03:00
de32f37c97 add furefox support 2024-12-09 23:04:56 +03:00
ca11fb9ac9 refactoring manifest 2024-12-06 16:59:12 +03:00
601a0082a0 refactoring manifest 2024-12-06 16:58:16 +03:00
49c5dd0035 remove categories swapping 2024-12-06 16:49:33 +03:00
70702268fb full refactoring 2024-12-06 03:50:38 +03:00
99e0abf45a remove adding template 2024-12-06 03:09:42 +03:00
9 changed files with 501 additions and 685 deletions

View File

View File

@@ -1,18 +1,18 @@
{
"name": "Izipus",
"version": "1.1.0",
"manifest_version": 2,
"description": "Izipus -- help your a...",
"homepage_url": "https://github.com/AM-EO/izipus",
"name": "Izipus Lite",
"version": "0.3.1",
"manifest_version": 3,
"description": "Lzipus Lite - assists your workflow by simplifying interactions.",
"homepage_url": "https://git.gorshenin.info/Dgors03/Answer_Templates",
"icons": {
"16": "icons/icon16.png",
"48": "icons/icon48.png",
"128": "icons/icon128.png"
},
"browser_action": {
"default_icon": "icons/icon19.png",
"default_title": "browser action demo",
"default_popup": "src/browser_action/popup.html"
"action": {
"default_icon": "icons/icon48.png",
"default_title": "Izipus Lite- Quick Actions",
"default_popup": "src/popup.html"
},
"permissions": [
"clipboardRead",
@@ -20,5 +20,10 @@
"contextMenus",
"storage",
"cookies"
]
}
],
"browser_specific_settings": {
"gecko": {
"id": "dmitriy.gorshenin@gmail.com"
}
}
}

View File

View File

@@ -1,284 +0,0 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="popup.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.2/css/all.min.css" rel="stylesheet" />
</head>
<body>
<button id="theme-toggle" class="theme-btn">
<i id="theme-icon" class="fa-moon fa-solid"></i>
</button>
<div class="container">
<div class="header">
<h1 class="name fs-4 fw-lighter font-monospace">Твои шаблоны</h1>
<button class="template-add btn btn-primary" type="button"><i class="fa-duotone fa-plus"></i></button>
</div>
<div class="templates" id="template-list">
<div class="category">
<h3 class="font-monospace">
Промежуточные ответы
<i class="fa fa-chevron-down toggle-icon"></i>
</h3>
<div class="category-content">
<span class="template">
<span class="template-title font-monospace">Приняли в работу</span>
<span class="buttons">
<span class="btn btn-light" id="inWorkRu">RU</span>
<span class="btn btn-light" id="inWorkEn">ENG</span>
<!-- <button class="template-edit-existed btn"><i class="fa-solid fa-pen-to-square"></i></button> -->
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Начали диалог с ОС</span>
<span class="buttons">
<span class="btn btn-light" id="dialogueRu">RU</span>
<span class="btn btn-light" id="dialogueEn">ENG</span>
<!-- <button class="template-edit-existed btn"><i class="fa-solid fa-pen-to-square"></i></button> -->
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Работаем над запросом</span>
<span class="buttons">
<span id="weworkRu" class="btn btn-light">RU</span>
<span id="weworkEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Ждем ответа от оператора</span>
<span class="buttons">
<span id="wework2Ru" class="btn btn-light">RU</span>
<span id="wework2En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Всё еще ждем ответа от оператора</span>
<span class="buttons">
<span id="wework3Ru" class="btn btn-light">RU</span>
<span id="wework3En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Появилась ли информация?</span>
<span class="buttons">
<span id="theyworkRu" class="btn btn-light">RU</span>
<span id="theyworkEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Появился ли ответ?</span>
<span class="buttons">
<span id="theywork2Ru" class="btn btn-light">RU</span>
<span id="theywork2En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Появились ли новости?</span>
<span class="buttons">
<span id="theywork3Ru" class="btn btn-light">RU</span>
<span id="theywork3En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Передали ответственной команде</span>
<span class="buttons">
<span id="fwd2treadRU" class="btn btn-light">RU</span>
<span id="fwd2treadEn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
</div>
<div class="category">
<h3 class="font-monospace">
Запросы партнерам
<i class="fa fa-chevron-down toggle-icon"></i>
</h3>
<div class="category-content">
<span class="template">
<span class="template-title font-monospace">Запрос: Недоставка</span>
<span class="buttons">
<span id="nonDelRu" class="btn btn-light">RU</span>
<span id="nonDelEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Запрос: Фейк доставка</span>
<span class="buttons">
<span id="fakeRu" class="btn btn-light">RU</span>
<span id="fakeEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Запрос: Задержки</span>
<span class="buttons">
<span id="delayRu" class="btn btn-light">RU</span>
<span id="delayEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Разрыв соединения</span>
<span class="buttons">
<span id="conbreRu" class="btn btn-light">RU</span>
<span id="conbreEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Запрос: Корректность HLR</span>
<span class="buttons">
<span id="HLRRu" class="btn btn-light">RU</span>
<span id="HLREn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
</div>
<div class="category">
<h3 class="font-monospace">
Ответы клиентам
<i class="fa fa-chevron-down toggle-icon"></i>
</h3>
<div class="category-content">
<span class="template">
<span class="template-title font-monospace">Не фиксируем на платформе</span>
<span class="buttons">
<span id="fixItRu" class="btn btn-light">RU</span>
<span id="fixItEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Все доставлено</span>
<span class="buttons">
<span id="delivedRu" class="btn btn-light">RU</span>
<span id="delivedEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Проблемы с ТА</span>
<span class="buttons">
<span id="problphRu" class="btn btn-light">RU</span>
<span id="problphEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">501: Не обслуживается</span>
<span class="buttons">
<span id="notservRu" class="btn btn-light">RU</span>
<span id="notservEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">В статусе отправлено</span>
<span class="buttons">
<span id="insentRu" class="btn btn-light">RU</span>
<span id="insentEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">132: Дубликаты</span>
<span class="buttons">
<span id="dubleRu" class="btn btn-light">RU</span>
<span id="dubleEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">508: Недоступен</span>
<span class="buttons">
<span id="unvelbRu" class="btn btn-light">RU</span>
<span id="unvelbEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Корректировка маршрутизации</span>
<span class="buttons">
<span id="corroutRu" class="btn btn-light">RU</span>
<span id="corroutEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Технические неполадки</span>
<span class="buttons">
<span id="tehtroubRu" class="btn btn-light">RU</span>
<span id="tehtroubEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Регистрации сендеров</span>
<span class="buttons">
<span id="senderRu" class="btn btn-light">RU</span>
<span id="senderEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Block list by MSISDN</span>
<span class="buttons">
<span id="blockMsisdnRu" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Общее имя</span>
<span class="buttons">
<span id="commonSenderRu" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Нет ответа</span>
<span class="buttons">
<span id="noResponse" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Провели тестирование</span>
<span class="buttons">
<span id="conductedTesting" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Информация менеджеру</span>
<span class="buttons">
<span id="managerTemplate" class="btn btn-light">RU</span>
</span>
</span>
</div>
</div>
<div class="category">
<h3 class="font-monospace">
Даофис
<i class="fa fa-chevron-down toggle-icon"></i>
</h3>
<div class="category-content">
<span class="template">
<span class="template-title font-monospace">Внести номер телефона в аксапту</span>
<span class="buttons">
<span id="daoffice1RU" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Учетка в порядке</span>
<span class="buttons">
<span id="officeRU" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title font-monospace">Нет ответа</span>
<span class="buttons">
<span id="notResponseRU" class="btn btn-light">RU</span>
<span id="notResponseEn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
</div>
</div>
</1--div>
<script src="popup.js"></script>
</body>
</html>

View File

@@ -1,387 +0,0 @@
document.addEventListener("DOMContentLoaded", function () {
document.getElementById("inWorkRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nПриняли Ваш запрос в работу. Сообщим по мере поступления информации.")
});
document.getElementById("inWorkEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear customer,\n\nWe are working on your request.")
});
document.getElementById("dialogueRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nУведомляем вас о том, что мы начали диалог с оператором по данному запросу. Мы ожидаем ответа и будем держать вас в курсе любых изменений.")
});
document.getElementById("dialogueEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues.\n\nWe would like to inform you that we have started a dialogue with the operator on this request. We are awaiting a response and will keep you informed of any changes.")
});
document.getElementById("nonDelRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nПросьба уточнить причину недоставки следующих сообщений клиенту:")
});
document.getElementById("nonDelEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nPlease check why the following messages were not delivered:")
});
document.getElementById("fixItRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nМы не фиксируем на нашей платформе ваших СМС-сообщений, просьба предоставить ответ от нашей платформы на ваш запрос отправки. Так же просьба предоставить логи, подтверждающие отправку на нашу платформу, данная информация необходима для дальнейшего анализа вашего запроса.")
});
document.getElementById("fixItEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nWe do not record your SMS messages on our platform, please provide a response from our platform to your request to send. Please also provide logs confirming sending to our platform, this information is necessary for further analysis of your request.")
});
document.getElementById("fakeRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nПросьба уточнить корректность статусов доставки следующих сообщений клиенту. Абонент не получал СМС.")
});
document.getElementById("fakeEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nPlease clarify the correctness of the delivery statuses of the following messages to the client. The subscriber did not receive an SMS.")
});
document.getElementById("weworkRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nУведомляем вас о том, что работы по вашему запросу продолжаются. Как только появится информация, мы вам сообщим.\n\nБлагодарим за понимание и приносим извинения за доставленные неудобства.\n")
});
document.getElementById("weworkEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear Colleagues.\n\nWe notify you that work on your request is ongoing. As soon as information becomes available, we will inform you.\n\nThank you for your understanding and we apologize for the inconvenience caused.\n")
});
document.getElementById("wework2Ru").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nЖдем ответа от оператора. Сообщим, как только появится соответствующая информация. Спасибо!")
});
document.getElementById("wework2En").addEventListener("click", () => {
navigator.clipboard.writeText("Dear Colleagues.\n\nWe are waiting for a response from the operator. We will inform you as soon as we have an update. Thank you!")
});
document.getElementById("wework3Ru").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте!\n\nОтправили повторный запрос оператору по данному поводу.\n\nСпасибо!")
});
document.getElementById("wework3En").addEventListener("click", () => {
navigator.clipboard.writeText("Hello!\n\nWe have sent an additional request to the operator.\n\nThank you!")
});
document.getElementById("theyworkRu").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте, коллеги.\n\nПоявилась ли информация по данному вопросу?\n\nСпасибо.")
});
document.getElementById("theyworkEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nIs there any information on this request?\n\nThank you.")
});
document.getElementById("theywork2Ru").addEventListener("click", () => {
navigator.clipboard.writeText("Добрый день!\n\nПросим вернуться с ответом.\n\nБольшое спасибо!")
});
document.getElementById("theywork2En").addEventListener("click", () => {
navigator.clipboard.writeText("Hello Team!\n\nPlease let us know if there are any updates.\n\nThank you!")
});
document.getElementById("theywork3Ru").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте!\n\nПодскажите, пожалуйста, появились ли новости.\n\nСпасибо!")
});
document.getElementById("theywork3En").addEventListener("click", () => {
navigator.clipboard.writeText("Hello!\n\nPlease kindly advise on issue status.\n\nThank you.")
});
document.getElementById("delivedRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение было своевременно доставлено. В случае, если абонент утверждает, что сообщения не были получены, просьба проверить исправность работы ТА. Возможные рекомендации: перезагрузка телефона, очистка памяти от устаревших сообщений, проверка спам-фильтров и черных списков, обновление ПО.\n\nПри сохранении проблемы, просьба запросить у абонента детализацию. Данная информация потребуется для дальнейшего взаимодействия с оператором.")
});
document.getElementById("delivedEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues, according to the information from the operator, messages were delivered in a timely manner. If the subscriber claims that the messages have not been received, please check that device is working correctly. Possible recommendations: reboot the phone, clear message memory, check spam filters and blacklists, update the software.\n\nIf the problem still persists, please ask the subscriber for details. This information is necessary to continue interaction with the operator.")
});
document.getElementById("problphRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение не было доставлено абоненту по причине сбоя ТА. Возможные рекомендации для абонента: перезагрузка телефона, очистка памяти от устаревших сообщений, проверка спам-фильтров и черных списков, обновление ПО.\n\nПросьба уведомить нас в случае, если ситуация повторится.")
});
document.getElementById("problphEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues, according to the information from the operator, messages were not delivered due to subscribers device failure. Possible recommendations: reboot the phone, clear message memory, check spam filters and blacklists, update the software.\nPlease let us know if the problem persist.")
});
document.getElementById("notservRu").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте, коллеги.\n\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение абоненту не было доставлено, т.к. номер телефона не существует или не обслуживается.")
});
document.getElementById("notservEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues\n\nThe message successfully passed through the platform and was sent to the operator. According to the information from the operator, the messages were not delivered to the subscriber because the phone number does not exist or is not serviced.")
});
document.getElementById("insentRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nСообщение успешно прошло через платформу и было отправлено оператору. Сообщение находится в статусе Отправлено, SMS-центр оператора продолжает осуществлять попытки его доставки.\nНаиболее вероятной причиной задержки в доставке может являться нахождение абонента в зоне неуверенного приема сети, также возможен технический сбой в работе телефона абонента.")
});
document.getElementById("insentEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues,\n\nThe messages are in Sent status, operator's SMS center is continuing delivery attempts. Most likely, delivery delays are caused by subscriber being in the area of uncertain network reception, or a technical failure in the operation of the subscriber's phone is also possible.")
});
document.getElementById("dubleRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nМониторингом были зафиксированы дубликаты сообщений, в связи с чем сработала блокировка. Если в короткий промежуток времени на площадку поступает два одинаковых сообщения, повторное блокируется как дубликат.\nЕсли отправка дубликатов была запланирована, либо номер абонента используется для тестирования подключения, просьба сообщить, мы добавим абонента в белый список. ")
});
document.getElementById("dubleEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues, duplicates were blocked by our monitoring system. If two identical messages are received within a short period of time, the second one is blocked as a duplicate. If sending duplicates was planned, or the subscriber's number is used for testing, please let us know and we will whitelist the subscriber.")
});
document.getElementById("unvelbRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nСообщение успешно прошло через платформу и было отправлено оператору. Сообщение абоненту не было доставлено т.к. ТА абонента был недоступен - выключен или находился в зоне неуверенного приема сигнала.\nРекомендуем абоненту перезагрузить телефон, проверить доступность сети оператора, очистить память телефона от устаревших сообщений.\n")
});
document.getElementById("unvelbEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues,\n\nThe messages were not delivered to the subscriber because the subscriber's phone was unavailable - turned off or was in the zone of uncertain signal reception.\nWe recommend that the subscriber restart the phone, check the availability of the operator's network, and clear the phone's memory of outdated messages.\n")
});
document.getElementById("delayRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nПросьба уточнить текущий статус сообщений и причины задержек:")
});
document.getElementById("delayEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear Colleagues.\n\nPlease clarify current messages status and the reasons for the delays:")
});
document.getElementById("conbreRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\n\nНаблюдаем разрыв соединения. Просьба уточнить, ситуация штатная?")
});
document.getElementById("conbreEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues.\n\nWe observe a connection break. Please clarify whether its a standard situation.")
});
document.getElementById("corroutRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nПо информации от оператора, для абонента были внесены корректировки в таблицы маршрутизации.\n\nПросьба проверить и сообщить в случае повторения ситуации.")
});
document.getElementById("corroutEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nThe adjustments have been made in routing settings.\n\nAs our logs are now showing positive delivery results, we would like to ask you to perform a fresh check on your side and share the results in case if further assistance is required.")
});
document.getElementById("tehtroubRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nПо информации от оператора, сообщения не были доставлены абоненту из-за временных технических неполадок на стороне оператора. На текущий момент доставка сообщений осуществляется в штатном режиме.\nПросьба проверить и сообщить в случае повторения ситуации.")
});
document.getElementById("tehtroubEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nAccording to information we got from the operator, the messages were not delivered to the subscriber due to temporary technical issues on the operator's side. At the moment, messages are being delivered in the regular mode.")
});
document.getElementById("senderRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\nСообщение не было доставлено, так как для имени отправителя ######## требуется регистрация.\nПросьба подать имя на регистрацию в ЛК или обратиться по данному вопросу к Вашему менеджеру.")
});
document.getElementById("senderEn").addEventListener("click", () => {
navigator.clipboard.writeText("Colleagues, the below reported traffic failed to be delivered due to an unregistered Sender ID. Alphanumeric registration is required towards COUNRTY OPERATOR (MCCMNC), and delivery of messages with unregistered Sender IDs is on the best effort basis. To register, please contact your Account Manager.")
});
document.getElementById("notResponseRU").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте!\n\nК сожалению, мы не получили от Вас ответа в течение 20 дней, поэтому запрос будет автоматически закрыт. Вы можете ответить на это письмо, если проблема не решена и требуется поддержка.")
});
document.getElementById("notResponseEn").addEventListener("click", () => {
navigator.clipboard.writeText("Hello!\n\nUnfortunately, we have not received a response from you within 20 days, so the request will be automatically closed. You can reply to this email if the problem has not been resolved and support is required.")
});
document.getElementById("fwd2treadRU").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\nПередали вопрос ответственной команде. Сообщим по мере поступления информации.")
});
document.getElementById("fwd2treadEn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\n\nWe have escalated the issue to the responsible team.\nWe will keep you informed as we receive any updates.")
});
document.getElementById("daoffice1RU").addEventListener("click", () => {
navigator.clipboard.writeText("Добрый день!\nДля регистрации в приложении \"КингДом\" необходимо внести Ваш номер телефона в Axapta.\n\nПо данному вопросу, пожалуйста, обратитесь к директору своего ресторана или на электронную почту: kingdom@burgerking.ru\n\nЧерез три часа после внесения номера, Вы сможете войти в сеть по номеру телефона, используя приложение \"КингДом\".")
});
document.getElementById("officeRU").addEventListener("click", () => {
navigator.clipboard.writeText("Добрый день!\n\nМы проверили Вашу учетную запись - все данные корректны.\nПроверочный СМС-код успешно отправлен на Ваш мобильный телефон.\n\nПожалуйста, переустановите приложение \"КингДом\" (удалить\\скачать заново) по ссылкам ниже, чтобы исключить отсутствие свежих обновлений:\n\nAndroid:\n\nhttps://play.google.com/store/apps/details?id=ru.kingdom\n\nIOS:\n\nhttps://apps.apple.com/ru/app/%D0%BA%D0%B8%D0%BD%D0%B3%D0%B4%D0%BE%D0%BC/id1543206272?l=en-GB\n\nЕсли данные действия не помогут, то, пожалуйста, опишите подробнее, на каком моменте у Вас не получается зайти в систему (при наличии ошибки приложите скриншот).")
});
document.getElementById("blockMsisdnRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\n\nДанный номер находится в глобальном ЧС.\nЭто означает, что клиент жаловался на получение СМС и отказался от получения всех СМС, либо были жалобы от данного абонента в УФАС.\nИз глобального ЧС, к сожалению, мы не можем разблокировать по Вашей просьбе, только в случае, если абонент напишет сам о просьбе разблокировать, с пометкой о согласии получения всех сообщений от оператора.\n\nЗаявление пишется в свободной форме, скан необходимо прислать на почту вашему менеджеру. Пример:\nКому: ООО «АйДиджитал»\nГенеральному директору: Баранову А.В.\nПрошу убрать мой номер ____________ из черного списка. Понимаю и соглашаюсь на возможное получение рассылок от других компаний, которые осуществляют рассылки через платформу АйДиджитал.\n\nПодпись и дата.")
});
document.getElementById("commonSenderRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, сообщения были заблокированы согласно правил отправки для каналов с Общим именем. А именно -\n\n----------------------------\n\n в тексте сообщения содержится упоминания международного бренда (рассылки в интересах международных брендов).\n на канале запрещена отправка сообщений, если в качестве сендера используется международный сендер\n на канале запрещена отправка сообщений на латинице\n на канале запрещена отправка сообщений с кодами в тексте которых нет упоминания сервиса от которого идет отправка\n на канале запрещена отправка сообщений в тексте которых содержится ссылка (ссылкой считается - наличие http в URL)\n на канале запрещена отправка сообщений в тексте сообщений которых указаны только цифры\n на канале запрещена отправка сообщений с менее 13 символов в тексте")
});
document.getElementById("noResponse").addEventListener("click", () => {
navigator.clipboard.writeText("Здравствуйте!\nК сожалению, мы не получили от Вас ответа в течение 5 рабочих дней, поэтому запрос будет автоматически закрыт.\nВы можете ответить на это письмо, если проблема не решена и требуется дополнительная помощь.")
});
document.getElementById("conductedTesting").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги,\nМы провели тестирование данного направления, используя живые номера. Все сообщения были доставлены на устройства правильно и без задержек.\nПросьба провести повторное тестирование со своей стороны и сообщить в случае повторения ситуации.")
});
document.getElementById("HLRRu").addEventListener("click", () => {
navigator.clipboard.writeText("Коллеги, здравствуйте.\nПросьба уточнить причину возврата некорректных HLR статусов на указанные номера:")
});
document.getElementById("HLREn").addEventListener("click", () => {
navigator.clipboard.writeText("Dear colleagues,\nPlease clarify the correctness of HLR statuses for the following subscriber numbers:")
});
document.getElementById("managerTemplate").addEventListener("click", () => {
navigator.clipboard.writeText("Страна: \nОператор: \nmccMnc: \nСендер: \nКлиент: \nSource node: \nDestination node: ")
});
});
function copyToClipboard(text) {
navigator.clipboard.writeText(text)
.then(() => {
console.log('Текст скопирован в буфер обмена');
})
.catch(err => {
console.error('Не удалось скопировать текст: ', err);
});
};
const templatesEl = document.querySelector('.templates');
const addBtn = document.querySelector('.template-add');
const editExisted = document.querySelector('template-edit-existed');
function createTemplate(title, RUText, ENText) {
const templateId = Date.now();
const templateEl = document.createElement('span');
templateEl.setAttribute('data-template-id', templateId);
templateEl.classList.add('template');
templateEl.innerHTML = `
<span id="template-title" class="font-monospace">${title}</span>
<div class="bigFormochka">
<div class="formochka">
<input id="template-title-input" class="hidden form-control-sm"></input>
<textarea id="template-textareaRU" class="hidden form-control-lg border-2" rows="1" cols="30.5">${RUText}</textarea>
<textarea id="template-textareaEN" class="hidden form-control-lg border-2" rows="1" cols="30.5">${ENText}</textarea>
</div>
<span class="buttonsLong">
<span class="btn btn-light" data-ru-text="${RUText}" id="template-ru-text">RU</span>
<span class="btn btn-light" data-en-text="${ENText}" id="template-en-text">ENG</span>
<button class="template-edit btn"><i class="fa-solid fa-pen-to-square"></i></button>
<button class="template-delete btn"><i class="fa-solid fa-trash"></i></button>
</span>
</span>
</div> `
const editBtn = templateEl.querySelector('.template-edit');
const deleteBtn = templateEl.querySelector('.template-delete');
const titleEl = templateEl.querySelector('#template-title');
const textRUEl = templateEl.querySelector('#template-ru-text');
const textENEl = templateEl.querySelector('#template-en-text');
const titleInputEl = templateEl.querySelector('#template-title-input');
const textRUInputEl = templateEl.querySelector('#template-textareaRU');
const textENInputEl = templateEl.querySelector('#template-textareaEN');
editBtn.addEventListener('click', (e) => {
titleEl.classList.toggle('hidden');
textRUEl.classList.toggle('hidden');
textENEl.classList.toggle('hidden');
titleInputEl.classList.toggle('hidden');
textRUInputEl.classList.toggle('hidden');
textENInputEl.classList.toggle('hidden');
});
deleteBtn.addEventListener('click', (e) => {
const templates = JSON.parse(localStorage.getItem('templates')) || [];
const templateIndex = templates.findIndex(template => template.title === titleEl.innerText);
if (templateIndex !== -1) {
templates.splice(templateIndex, 1);
localStorage.setItem('templates', JSON.stringify(templates));
}
templateEl.remove();
});
titleInputEl.addEventListener('change', (e) => {
titleEl.innerText = e.target.value;
navigator.clipboard.writeText(titleEl);
updateTemplateInLocalStorage(title, 'title', e.target.value);
});
textRUInputEl.addEventListener('change', (e) => {
textRUEl.dataset.ruText = e.target.value;
navigator.clipboard.writeText(textRUEl);
updateTemplateInLocalStorage(title, 'RUText', e.target.value);
});
textENInputEl.addEventListener('change', (e) => {
textENEl.dataset.enText = e.target.value;
navigator.clipboard.writeText(textRUEl);
updateTemplateInLocalStorage(title, 'ENText', e.target.value);
});
textRUEl.addEventListener('click', (e) => {
navigator.clipboard.writeText(e.target.dataset.ruText)
.then(() => {
console.log('Текст RU скопирован в буфер обмена');
})
.catch(err => {
console.error('Не удалось скопировать текст RU: ', err);
});
});
textENEl.addEventListener('click', (e) => {
navigator.clipboard.writeText(e.target.dataset.enText)
.then(() => {
console.log('Текст EN скопирован в буфер обмена');
})
.catch(err => {
console.error('Не удалось скопировать текст EN: ', err);
});
});
return templateEl;
};
function saveTemplateToLocalStorage(title, RUText, ENText) {
const template = {
title: title,
RUText: RUText,
ENText: ENText
};
const templates = JSON.parse(localStorage.getItem('templates')) || [];
templates.push(template);
localStorage.setItem('templates', JSON.stringify(templates));
};
function updateTemplateInLocalStorage(title, key, value) {
const templates = JSON.parse(localStorage.getItem('templates')) || [];
const templateIndex = templates.findIndex(template => template.title === title);
if (templateIndex !== -1) {
templates[templateIndex][key] = value;
localStorage.setItem('templates', JSON.stringify(templates));
};
};
addBtn.addEventListener('click', (e) => {
const title = "Title";
const RUText = "RUText";
const ENText = "ENText";
const el = createTemplate(title, RUText, ENText);
templatesEl.appendChild(el);
saveTemplateToLocalStorage(title, RUText, ENText);
});
window.onload = function () {
const templates = JSON.parse(localStorage.getItem('templates')) || [];
templates.forEach(template => {
const el = createTemplate(template.title, template.RUText, template.ENText);
templatesEl.appendChild(el);
});
};
const themeToggle = document.getElementById('theme-toggle');
const themeIcon = document.getElementById('theme-icon');
const applySavedTheme = () => {
const savedTheme = localStorage.getItem('theme');
if (savedTheme === 'dark') {
document.body.classList.add('dark-theme');
themeIcon.classList.replace('fa-moon', 'fa-sun');
} else {
document.body.classList.remove('dark-theme');
themeIcon.classList.replace('fa-sun', 'fa-moon');
}
};
themeToggle.addEventListener('click', () => {
document.body.classList.toggle('dark-theme');
if (document.body.classList.contains('dark-theme')) {
themeIcon.classList.replace('fa-moon', 'fa-sun');
localStorage.setItem('theme', 'dark');
} else {
themeIcon.classList.replace('fa-sun', 'fa-moon');
localStorage.setItem('theme', 'light');
}
});
document.addEventListener('DOMContentLoaded', () => {
applySavedTheme();
});
document.querySelectorAll('.category h3').forEach(function(header) {
const categoryId = header.textContent.trim(); // Уникальный идентификатор категории по названию
// Проверка состояния категории при загрузке страницы
const isCategoryOpen = localStorage.getItem(categoryId) === 'true';
const content = header.nextElementSibling; // Содержимое категории
const icon = header.querySelector('.toggle-icon'); // Иконка стрелки
// Если категория была открыта ранее, делаем ее открытой
if (isCategoryOpen) {
content.classList.add('show');
icon.classList.remove('fa-chevron-down');
icon.classList.add('fa-chevron-up');
}
// Обработчик клика по заголовку категории
header.addEventListener('click', function() {
content.classList.toggle('show'); // Переключаем видимость категории
if (content.classList.contains('show')) {
icon.classList.remove('fa-chevron-down');
icon.classList.add('fa-chevron-up');
// Сохраняем состояние категории как открытое
localStorage.setItem(categoryId, 'true');
} else {
icon.classList.remove('fa-chevron-up');
icon.classList.add('fa-chevron-down');
// Сохраняем состояние категории как закрытое
localStorage.setItem(categoryId, 'false');
}
});
});

View File

@@ -19,15 +19,15 @@ div.header {
display: flex;
flex-direction: row;
justify-content: center;
padding: 6px;
padding: 10px;
}
h1 {
padding: 6px;
padding: 10px;
}
h3 {
padding: 6px;
padding: 10px;
font-family: Helvetica, Arial, sans-serif; /* Более минималистичный шрифт для категорий */
font-size: 16px; /* Уменьшен размер шрифта */
font-weight: normal; /* Уменьшен вес шрифта для минималистичного вида */
@@ -202,3 +202,66 @@ body.dark-theme {
color: #fff;
}
/* Кнопка добавления шаблона */
.add-template-btn {
position: absolute;
top: 20px;
left: 20px;
padding: 10px 20px;
background-color: #abcef5;
color: white;
font-size: 16px;
border: none;
border-radius: 50px;
cursor: pointer;
box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1);
transition: background-color 0.3s, box-shadow 0.3s;
z-index: 1000;
}
.add-template-btn i {
margin-right: 8px;
}
.add-template-btn:hover {
background-color: #88aee5;
box-shadow: 0px 6px 8px rgba(0, 0, 0, 0.2);
}
.add-template-btn:focus {
outline: none;
}
/* Для кнопок и textarea, чтобы не "гуляли" */
.template {
display: flex;
flex-direction: row;
justify-content: space-between;
padding: 8px 7px;
border: 1px solid #8888c6;
border-radius: 8px;
overflow: hidden;
width: 100%;
box-sizing: border-box;
transition: background-color 0.3s ease, color 0.3s ease, border-color 0.3s ease;
}
/* Скрытие полей */
.hidden {
display: none;
}
/* Стили для input и textarea */
input, textarea {
width: 100%;
height: 40px; /* Сделаем высоту фиксированной */
padding: 8px;
box-sizing: border-box;
margin-top: 4px;
}
/* Убираем возможность изменения размеров textarea */
textarea {
resize: none;
}

308
lzipus/src/popup.html Executable file
View File

@@ -0,0 +1,308 @@
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="popup.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.1/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-4bw+/aepP/YC94hEpVNVgiZdgIC5+VKNBQNGCHeKRQN+PtmoHDEXuppvnDJzQIu9" crossorigin="anonymous">
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.2/css/all.min.css" rel="stylesheet" />
</head>
<body>
<button id="theme-toggle" class="theme-btn">
<i id="theme-icon" class="fa-moon fa-solid"></i>
</button>
<div class="container">
<div class="header">
<h1 class="name fs-4 fw-lighter font-monospace">Твои шаблоны</h1>
</div>
<div id="template-list">
<div class="category">
<h3 class="font-monospace">
Промежуточные ответы
</h3>
<div class="template-group">
<span class="template">
<span class="template-title">Приняли в работу</span>
<span class="buttons">
<span class="btn btn-light" id="inWorkRu">RU</span>
<span class="btn btn-light" id="inWorkEn">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Начали диалог с ОС</span>
<span class="buttons">
<span class="btn btn-light" id="dialogueRu">RU</span>
<span class="btn btn-light" id="dialogueEn">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Работаем над запросом</span>
<span class="buttons">
<span id="weworkRu" class="btn btn-light">RU</span>
<span id="weworkEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Ждем ответа от оператора</span>
<span class="buttons">
<span id="wework2Ru" class="btn btn-light">RU</span>
<span id="wework2En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Всё еще ждем ответа от оператора</span>
<span class="buttons">
<span id="wework3Ru" class="btn btn-light">RU</span>
<span id="wework3En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Появилась ли информация?</span>
<span class="buttons">
<span id="theyworkRu" class="btn btn-light">RU</span>
<span id="theyworkEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Появился ли ответ?</span>
<span class="buttons">
<span id="theywork2Ru" class="btn btn-light">RU</span>
<span id="theywork2En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Появились ли новости?</span>
<span class="buttons">
<span id="theywork3Ru" class="btn btn-light">RU</span>
<span id="theywork3En" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Передали ответственной команде</span>
<span class="buttons">
<span id="fwd2treadRU" class="btn btn-light">RU</span>
<span id="fwd2treadEn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
</div>
<div class="category">
<h3 class="font-monospace">
Запросы партнерам
</h3>
<div class="template-group">
<span class="template">
<span class="template-title">Запрос: Недоставка</span>
<span class="buttons">
<span id="nonDelRu" class="btn btn-light">RU</span>
<span id="nonDelEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Запрос: Фейк доставка</span>
<span class="buttons">
<span id="fakeRu" class="btn btn-light">RU</span>
<span id="fakeEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Запрос: Задержки</span>
<span class="buttons">
<span id="delayRu" class="btn btn-light">RU</span>
<span id="delayEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Разрыв соединения</span>
<span class="buttons">
<span id="conbreRu" class="btn btn-light">RU</span>
<span id="conbreEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Запрос: Корректность HLR</span>
<span class="buttons">
<span id="HLRRu" class="btn btn-light">RU</span>
<span id="HLREn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
</div>
<div class="category">
<h3 class="font-monospace">
Ответы клиентам
</h3>
<div class="template-group">
<span class="template">
<span class="template-title">Не фиксируем на платформе</span>
<span class="buttons">
<span id="fixItRu" class="btn btn-light">RU</span>
<span id="fixItEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Все доставлено</span>
<span class="buttons">
<span id="delivedRu" class="btn btn-light">RU</span>
<span id="delivedEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Проблемы с ТА</span>
<span class="buttons">
<span id="problphRu" class="btn btn-light">RU</span>
<span id="problphEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">501: Не обслуживается</span>
<span class="buttons">
<span id="notservRu" class="btn btn-light">RU</span>
<span id="notservEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">В статусе отправлено</span>
<span class="buttons">
<span id="insentRu" class="btn btn-light">RU</span>
<span id="insentEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">132: Дубликаты</span>
<span class="buttons">
<span id="dubleRu" class="btn btn-light">RU</span>
<span id="dubleEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">508: Недоступен</span>
<span class="buttons">
<span id="unvelbRu" class="btn btn-light">RU</span>
<span id="unvelbEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Корректировка маршрутизации</span>
<span class="buttons">
<span id="corroutRu" class="btn btn-light">RU</span>
<span id="corroutEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Технические неполадки</span>
<span class="buttons">
<span id="tehtroubRu" class="btn btn-light">RU</span>
<span id="tehtroubEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Регистрации сендеров</span>
<span class="buttons">
<span id="senderRu" class="btn btn-light">RU</span>
<span id="senderEn" class="btn btn-light">ENG</span>
</span>
</span>
<span class="template">
<span class="template-title">Block list by MSISDN</span>
<span class="buttons">
<span id="blockMsisdnRu" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title">Общее имя</span>
<span class="buttons">
<span id="commonSenderRu" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title">Нет ответа</span>
<span class="buttons">
<span id="noResponse" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title">Провели тестирование</span>
<span class="buttons">
<span id="conductedTesting" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title">Информация менеджеру</span>
<span class="buttons">
<span id="managerTemplate" class="btn btn-light">RU</span>
</span>
</span>
</div>
</div>
<div class="category">
<h3 class="font-monospace">
Даофис
</h3>
<span class="template">
<span class="template-title">Внести номер телефона в аксапту</span>
<span class="buttons">
<span id="daoffice1RU" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title">Учетка в порядке</span>
<span class="buttons">
<span id="officeRU" class="btn btn-light">RU</span>
</span>
</span>
<span class="template">
<span class="template-title">Нет ответа</span>
<span class="buttons">
<span id="notResponseRU" class="btn btn-light">RU</span>
<span id="notResponseEn" class="btn btn-light">ENG</span>
</span>
</span>
</div>
</div>
</div>
<script src="popup.js"></script>
</body>
</html>

111
lzipus/src/popup.js Executable file
View File

@@ -0,0 +1,111 @@
document.addEventListener("DOMContentLoaded", function () {
// Объект с текстами для каждого элемента
const clipboardTexts = {
"inWorkRu": "Коллеги, здравствуйте.\nПриняли Ваш запрос в работу. Сообщим по мере поступления информации.",
"inWorkEn": "Dear customer,\nWe are working on your request.",
"dialogueRu": "Коллеги, здравствуйте.\nУведомляем вас о том, что мы начали диалог с оператором по данному запросу. Мы ожидаем ответа и будем держать вас в курсе любых изменений.",
"dialogueEn": "Dear colleagues.\nWe would like to inform you that we have started a dialogue with the operator on this request. We are awaiting a response and will keep you informed of any changes.",
"nonDelRu": "Коллеги, здравствуйте.\nПросьба уточнить причину недоставки следующих сообщений клиенту:",
"nonDelEn": "Dear colleagues,\nPlease check why the following messages were not delivered:",
"fixItRu": "Коллеги,\nМы не фиксируем на нашей платформе ваших СМС-сообщений, просьба предоставить ответ от нашей платформы на ваш запрос отправки. Так же просьба предоставить логи, подтверждающие отправку на нашу платформу, данная информация необходима для дальнейшего анализа вашего запроса.",
"fixItEn": "Dear colleagues,\nWe do not record your SMS messages on our platform, please provide a response from our platform to your request to send. Please also provide logs confirming sending to our platform, this information is necessary for further analysis of your request.",
"fakeRu": "Коллеги, здравствуйте.\nПросьба уточнить корректность статусов доставки следующих сообщений клиенту. Абонент не получал СМС.",
"fakeEn": "Dear colleagues,\nPlease clarify the correctness of the delivery statuses of the following messages to the client. The subscriber did not receive an SMS.",
"weworkRu": "Коллеги, здравствуйте.\nУведомляем вас о том, что работы по вашему запросу продолжаются. Как только появится информация, мы вам сообщим.\nБлагодарим за понимание и приносим извинения за доставленные неудобства.\n",
"weworkEn": "Dear Colleagues.\nWe notify you that work on your request is ongoing. As soon as information becomes available, we will inform you.\nThank you for your understanding and we apologize for the inconvenience caused.\n",
"wework2Ru": "Коллеги, здравствуйте.\nЖдем ответа от оператора. Сообщим, как только появится соответствующая информация. Спасибо!",
"wework2En": "Dear Colleagues.\nWe are waiting for a response from the operator. We will inform you as soon as we have an update. Thank you!",
"wework3Ru": "Здравствуйте!\nОтправили повторный запрос оператору по данному поводу.\nСпасибо!",
"wework3En": "Hello!\nWe have sent an additional request to the operator.\nThank you!",
"theyworkRu": "Здравствуйте, коллеги.\nПоявилась ли информация по данному вопросу?\nСпасибо.",
"theyworkEn": "Dear colleagues,\nIs there any information on this request?\nThank you.",
"theywork2Ru": "Добрый день!\nПросим вернуться с ответом.\nБольшое спасибо!",
"theywork2En": "Hello Team!\nPlease let us know if there are any updates.\nThank you!",
"theywork3Ru": "Здравствуйте!\nПодскажите, пожалуйста, появились ли новости.\nСпасибо!",
"theywork3En": "Hello!\nPlease kindly advise on issue status.\nThank you.",
"delivedRu": "Коллеги,\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение было своевременно доставлено. В случае, если абонент утверждает, что сообщения не были получены, просьба проверить исправность работы ТА. Возможные рекомендации: перезагрузка телефона, очистка памяти от устаревших сообщений, проверка спам-фильтров и черных списков, обновление ПО.\nПри сохранении проблемы, просьба запросить у абонента детализацию. Данная информация потребуется для дальнейшего взаимодействия с оператором.",
"delivedEn": "Colleagues, according to the information from the operator, messages were delivered in a timely manner. If the subscriber claims that the messages have not been received, please check that device is working correctly. Possible recommendations: reboot the phone, clear message memory, check spam filters and blacklists, update the software.\nIf the problem still persists, please ask the subscriber for details. This information is necessary to continue interaction with the operator.",
"problphRu": "Коллеги,\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение не было доставлено абоненту по причине сбоя ТА. Возможные рекомендации для абонента: перезагрузка телефона, очистка памяти от устаревших сообщений, проверка спам-фильтров и черных списков, обновление ПО.\nПросьба уведомить нас в случае, если ситуация повторится.",
"problphEn": "Colleagues, according to the information from the operator, messages were not delivered due to subscribers device failure. Possible recommendations: reboot the phone, clear message memory, check spam filters and blacklists, update the software.\nPlease let us know if the problem persist.",
"notservRu": "Здравствуйте, коллеги.\nСообщение успешно прошло через платформу и было отправлено оператору. По информации от оператора, сообщение абоненту не было доставлено, т.к. номер телефона не существует или не обслуживается.",
"notservEn": "Colleagues\nThe message successfully passed through the platform and was sent to the operator. According to the information from the operator, the messages were not delivered to the subscriber because the phone number does not exist or is not serviced.",
"insentRu": "Коллеги,\nСообщение успешно прошло через платформу и было отправлено оператору. Сообщение находится в статусе Отправлено, SMS-центр оператора продолжает осуществлять попытки его доставки.\nНаиболее вероятной причиной задержки в доставке может являться нахождение абонента в зоне неуверенного приема сети, также возможен технический сбой в работе телефона абонента.",
"insentEn": "Colleagues,\nThe messages are in Sent status, operator's SMS center is continuing delivery attempts. Most likely, delivery delays are caused by subscriber being in the area of uncertain network reception, or a technical failure in the operation of the subscriber's phone is also possible.",
"dubleRu": "Коллеги,\nМониторингом были зафиксированы дубликаты сообщений, в связи с чем сработала блокировка. Если в короткий промежуток времени на площадку поступает два одинаковых сообщения, повторное блокируется как дубликат.\nЕсли отправка дубликатов была запланирована, либо номер абонента используется для тестирования подключения, просьба сообщить, мы добавим абонента в белый список.",
"dubleEn": "Colleagues, duplicates were blocked by our monitoring system. If two identical messages are received within a short period of time, the second one is blocked as a duplicate. If sending duplicates was planned, or the subscriber's number is used for testing, please let us know and we will whitelist the subscriber.",
"unvelbRu": "Коллеги,\nСообщение успешно прошло через платформу и было отправлено оператору. Сообщение абоненту не было доставлено т.к. ТА абонента был недоступен - выключен или находился в зоне неуверенного приема сигнала.\nРекомендуем абоненту перезагрузить телефон, проверить доступность сети оператора, очистить память телефона от устаревших сообщений.\n",
"unvelbEn": "Colleagues,\nThe messages were not delivered to the subscriber because the subscriber's phone was unavailable - turned off or was in the zone of uncertain signal reception.\nWe recommend that the subscriber restart the phone, check the availability of the operator's network, and clear the phone's memory of outdated messages.\n",
"delayRu": "Коллеги, здравствуйте.\nПросьба уточнить текущий статус сообщений и причины задержек:",
"delayEn": "Dear Colleagues.\nPlease clarify current messages status and the reasons for the delays:",
"conbreRu": "Коллеги, здравствуйте.\nНаблюдаем разрыв соединения. Просьба уточнить, ситуация штатная?",
"conbreEn": "Dear colleagues.\nWe observe a connection break. Please clarify whether its a standard situation.",
"corroutRu": "Коллеги,\nПо информации от оператора, для абонента были внесены корректировки в таблицы маршрутизации.\nПросьба проверить и сообщить в случае повторения ситуации.",
"corroutEn": "Dear colleagues,\nThe adjustments have been made in routing settings.\nAs our logs are now showing positive delivery results, we would like to ask you to perform a fresh check on your side and share the results in case if further assistance is required.",
"tehtroubRu": "Коллеги,\nПо информации от оператора, сообщения не были доставлены абоненту из-за временных технических неполадок на стороне оператора. На текущий момент доставка сообщений осуществляется в штатном режиме.\nПросьба проверить и сообщить в случае повторения ситуации.",
"tehtroubEn": "Dear colleagues,\nAccording to information we got from the operator, the messages were not delivered to the subscriber due to temporary technical issues on the operator's side. At the moment, messages are being delivered in the regular mode.",
"senderRu": "Коллеги,\nСообщение не было доставлено, так как для имени отправителя ######## требуется регистрация.\nПросьба подать имя на регистрацию в ЛК или обратиться по данному вопросу к Вашему менеджеру.",
"senderEn": "Colleagues, the below reported traffic failed to be delivered due to an unregistered Sender ID. Alphanumeric registration is required towards COUNRTY OPERATOR (MCCMNC), and delivery of messages with unregistered Sender IDs is on the best effort basis. To register, please contact your Account Manager.",
"notResponseRU": "Здравствуйте!\nК сожалению, мы не получили от Вас ответа в течение 20 дней, поэтому запрос будет автоматически закрыт. Вы можете ответить на это письмо, если проблема не решена и требуется поддержка.",
"notResponseEn": "Hello!\nUnfortunately, we have not received a response from you within 20 days, so the request will be automatically closed. You can reply to this email if the problem has not been resolved and support is required.",
"fwd2treadRU": "Коллеги,\nПередали вопрос ответственной команде. Сообщим по мере поступления информации.",
"fwd2treadEn": "Dear colleagues,\nWe have escalated the issue to the responsible team.\nWe will keep you informed as we receive any updates.",
"daoffice1RU": "Добрый день!\nДля регистрации в приложении \"КингДом\" необходимо внести Ваш номер телефона в Axapta.\nПо данному вопросу, пожалуйста, обратитесь к директору своего ресторана или на электронную почту: kingdom@burgerking.ru\nЧерез три часа после внесения номера, Вы сможете войти в сеть по номеру телефона, используя приложение \"КингДом\".",
"officeRU": "Добрый день!\nМы проверили Вашу учетную запись - все данные корректны.\nПроверочный СМС-код успешно отправлен на Ваш мобильный телефон.\nПожалуйста, переустановите приложение \"КингДом\" (удалить\\скачать заново) по ссылкам ниже, чтобы исключить отсутствие свежих обновлений:\nAndroid:\nhttps://play.google.com/store/apps/details?id=ru.kingdom\nIOS:\nhttps://apps.apple.com/ru/app/%D0%BA%D0%B8%D0%BD%D0%B3%D0%B4%D0%BE%D0%BC/id1543206272?l=en-GB\nЕсли данные действия не помогут, то, пожалуйста, опишите подробнее, на каком моменте у Вас не получается зайти в систему (при наличии ошибки приложите скриншот).",
"blockMsisdnRu": "Коллеги,\nДанный номер находится в глобальном ЧС.\nЭто означает, что клиент жаловался на получение СМС и отказался от получения всех СМС, либо были жалобы от данного абонента в УФАС.\nИз глобального ЧС, к сожалению, мы не можем разблокировать по Вашей просьбе, только в случае, если абонент напишет сам о просьбе разблокировать, с пометкой о согласии получения всех сообщений от оператора.\nЗаявление пишется в свободной форме, скан необходимо прислать на почту вашему менеджеру. Пример:\nКому: ООО «АйДиджитал»\nГенеральному директору: Баранову А.В.\nПрошу убрать мой номер ____________ из черного списка. Понимаю и соглашаюсь на возможное получение рассылок от других компаний, которые осуществляют рассылки через платформу АйДиджитал.\nПодпись и дата.",
"commonSenderRu": "Коллеги, сообщения были заблокированы согласно правил отправки для каналов с Общим именем. А именно -\n----------------------------\n в тексте сообщения содержится упоминания международного бренда (рассылки в интересах международных брендов).\n на канале запрещена отправка сообщений, если в качестве сендера используется международный сендер\n на канале запрещена отправка сообщений на латинице\n на канале запрещена отправка сообщений с кодами в тексте которых нет упоминания сервиса от которого идет отправка\n на канале запрещена отправка сообщений в тексте которых содержится ссылка (ссылкой считается - наличие http в URL)\n на канале запрещена отправка сообщений в тексте сообщений которых указаны только цифры\n на канале запрещена отправка сообщений с менее 13 символов в тексте",
"noResponse": "Здравствуйте!\nК сожалению, мы не получили от Вас ответа в течение 5 рабочих дней, поэтому запрос будет автоматически закрыт.\nВы можете ответить на это письмо, если проблема не решена и требуется дополнительная помощь.",
"conductedTesting": "Коллеги,\nМы провели тестирование данного направления, используя живые номера. Все сообщения были доставлены на устройства правильно и без задержек.\nПросьба провести повторное тестирование со своей стороны и сообщить в случае повторения ситуации.",
"HLRRu": "Коллеги, здравствуйте.\nПросьба уточнить причину возврата некорректных HLR статусов на указанные номера:",
"HLREn": "Dear colleagues,\nPlease clarify the correctness of HLR statuses for the following subscriber numbers:",
"managerTemplate": "Страна: \nОператор: \nmccMnc: \nСендер: \nКлиент: \nSource node: \nDestination node: "
};
// Функция для обработки кликов
function handleClipboardClick(buttonId) {
if (clipboardTexts[buttonId]) {
navigator.clipboard.writeText(clipboardTexts[buttonId]);
}
}
// Привязываем обработчик событий к кнопкам
Object.keys(clipboardTexts).forEach(buttonId => {
const button = document.getElementById(buttonId);
if (button) {
button.addEventListener("click", () => handleClipboardClick(buttonId));
}
});
// Тема
const themeToggle = document.getElementById('theme-toggle');
const themeIcon = document.getElementById('theme-icon');
// Применение сохраненной темы
const applySavedTheme = () => {
const savedTheme = localStorage.getItem('theme');
if (savedTheme === 'dark') {
document.body.classList.add('dark-theme');
if (themeIcon) {
themeIcon.classList.replace('fa-moon', 'fa-sun');
}
} else {
document.body.classList.remove('dark-theme');
if (themeIcon) {
themeIcon.classList.replace('fa-sun', 'fa-moon');
}
}
};
// Переключение темы
if (themeToggle && themeIcon) {
themeToggle.addEventListener('click', () => {
document.body.classList.toggle('dark-theme');
const theme = document.body.classList.contains('dark-theme') ? 'dark' : 'light';
localStorage.setItem('theme', theme); // Сохраняем выбранную тему
themeIcon.classList.replace(theme === 'dark' ? 'fa-moon' : 'fa-sun', theme === 'dark' ? 'fa-sun' : 'fa-moon');
});
}
// Применить сохраненную тему при загрузке страницы
applySavedTheme();
});