o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (2024)

  • PRIVATKUNDEN
  • GESCHÄFTSKUNDEN
  • O2 Shops
  • Bestellhotline 089 78 79 79 409 Datenschutzhinweise
Warum O2

    Warenkorb

    Service
    Mein O2
    • Angebote für O2 Kunden
    • Priority-Vorteilswelt
    • O2 Community
    • Vertragsverlängerung
    • Zum Login
    • Mein O2 App installieren
    • Kennwort vergessen?
    • Neu bei O2? Registrieren

    Direkt zu den idealen Business-Angeboten

    Warum ist das wichtig?

    Je nach Anzahl der Verträge bieten wir individuell optimierteKonditionen. So sind z. B. unsereAngebote für Selbständigeperfekt auf wenige Nutzer abgestimmt – während dieO2 Business Angeboteexklusive Vorteile für viele Mitarbeiter bieten.

    1. Service
    2. Netzstörung
    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (14)

    Mobilfunkstörung prüfen und Empfang verbessern

    • Störungen in Echtzeit prüfen
    • Profitipps bei Empfangsproblemen
    • Hilfestellungen aus unserer O2 Community

    Jetzt Störung prüfenZu den Profitipps

    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (15)

    Möchtest du aktiv zur Verbesserung unseres Service zur O2 Netzstörung beitragen?

    Dann nimm jetzt an unserer kurzen Umfrage teil und lass uns deine wertvolle Meinung wissen. Deine Teilnahme hilft uns dabei, eine noch bessere Auskunft über unser Netz für dich und alle unsere Kunden bereitzustellen.

    Jetzt teilnehmen

    Profitipps bei Empfangsproblemen

    Wenn du auf dem Handy Empfangsprobleme hast, kannst du nachfolgende Tipps ausprobieren. Weitere Infos findest du auch auf der Seite Handyempfang verbessern.

    Erste Hilfe bei Netzstörungen

    • 1
    • 2
    • 3
    • 4
    • 5

    Gerät neustarten

    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (16)

    Führe einen Neustart durch, indem du dein Gerät einmal aus- und wieder einschaltest.

    Deine SIM-Karte wählt sich dadurch neu ins Mobilfunknetz ein. Meist wird das Problem damit behoben – und du kannst wieder störungsfrei telefonieren, simsen und im Internet surfen.

    Manuelle Netzwahl

    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (17)

    Unter Umständen hilft auch eine manuelle Netzwahl. Diese kannst du in den Einstellungen deines Geräts vornehmen. Wähle bitte „o2 – de+“ als Netz aus. Nach einer erfolgreichen Einbuchung kannst du die Einstellungen wieder auf automatische Netzwahl zurückstellen.

    Wenn du dabei Unterstützung benötigst, nutze gerne unsere O2 Handyhilfe.

    Zur Handyhilfe

    SIM-Karte in einem anderen Gerät testen

    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (18)

    Um eine Netzstörung auszuschließen, lege die SIM-Karte bitte in ein anderes Gerät ein. Sollte das Problem dort nicht mehr bestehen, könnte die Störung an einem Defekt deines Geräts liegen.

    Hilfe bei Handy-Defekt

    Kein Erfolg?

    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (19)

    Du hast die genannten Tipps durchgeführt und immer noch Netzeinschränkungen? Dann teste gerne noch unsere O2 my Service App, die weitere Tipps zur Störungsbehebung gibt.

    Wenn du eine Störung melden möchtest, gib entweder im Live-Check hier oder in der Mein O2 App deinen Standort ein und klicke den Button „Geben Sie uns Feedback“.

    So geht es weiter

    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (20)

    Wir prüfen deine Störungsmeldung und informieren dich per SMS, wenn die Störung behoben ist.

    Weitere Informationen

    O2 Community: Aktuelle Beiträge rund um dein Thema

    Keine Antwort gefunden? Gib deine Frage ein, durchsuche die O2 Community oder stöbere in anderen Beiträgenund unserem Ratgeber-Bereichfür mehr Hilfe.

    FAQ

    Wie lange kann eine Störung dauern?

    Einige Netzstörungen lassen sich direkt per Mausklick von der Zentrale aus beseitigen und können innerhalb von kurzer Zeit behoben werden. In anderen Fällen muss ein Techniker ausrücken und die Einschränkung vor Ort beheben. Dies kann hin und wieder zu Herausforderungen führen, z. B. wenn es bei Orkan, Eis oder Schnee aus Sicherheitsgründen nicht möglich ist, auf den Funkmast zu steigen oder die notwendigen Arbeiten nicht ausgeführt werden können.

    Liegt eine technisch komplexe Situation vor oder die Lieferzeit von speziellen Ersatzteilen dauert länger als üblich, kann die Entstörung der Basisstation mehr Zeit in Anspruch nehmen.

    Netzstörung prüfen >

    Hat O2 eine App die mich bei einer Störung unterstützt?

    Ja, mit unserer innovativen O2myServiceApp kannst du nicht nur eine Störung melden oder einen Speedtest durchführen, sie bietet dir auch eine automatische Erkennung und Lösung für viele Netz-, WLAN- und Hardwareprobleme.

    Und das Beste: Die App unterstützt dich nicht nur bei Mobilfunk und deinem Handy, sondern auch bei deinem O2 Internet- & Festnetz-Anschluss zuhause.

    Lade dir die O2myServiceApp jetzt hier auf dein Smartphone.

    Was ist der Unterschied zwischen dem Live Check und der Abfrage zur Netzabdeckung?

    Der Live-Check informiert über tagesaktuelle Störungen oder geplante Arbeiten an unseren Basisstationen.
    Die Abfrage der Netzabdeckung zeigt an, wie gut unser Netz an dem gesuchten Standort ausgebaut ist.

    Was bedeutet der Button „Geben Sie uns Feedback“? Kann ich O2 darüber eine Störung melden?

    Im Live-Check kannst du uns über den Button „Geben Sie uns Feedback“ Beeinträchtigungen im Netz am Standort mitteilen. Per SMS bestätigen wir dir den Eingang der Meldung und teilen dir die Ticketnummer mit. Ebenfalls per SMS informieren wir dich über den Status der Bearbeitung.

    Bekomme ich eine Rückmeldung, wenn ich eine Störung melde?

    Wir bestätigen dir den Eingang per SMS und sobald die Störung behoben ist, informieren wir dich ebenfalls per SMS.

    Warum muss ich nach Klicken des Buttons „Geben Sie uns Feedback“ meine Rufnummer angeben?

    Hast du eine Störung gemeldet, informieren wir dich per SMS über den Verlauf der Störungsbehebung. Dazu benötigen wir deine Rufnummer.
    Den Schutz der Privatsphäre und personenbezogener Daten nehmen wir sehr ernst. Die im Rahmen dieses Dienstes erhobenen personenbezogenen Daten werden nur zum Zwecke der vollständigen Leistungserbringung gespeichert und danach gelöscht. Die Daten werden weder an Dritte weitergegebennoch zu anderen Zwecken verwendet.

    Meine Datenverbindung ist langsam – was kann ich tun?

    • Zunächst solltest du prüfen, ob das Handy im schnellsten verfügbaren Netz eingebucht ist.
      Unter Netz > Einstellungen sollte „automatisch“ ausgewählt sein.
      Beachte auch, dass in Kellern oder in massiv gebauten Gebäuden der Empfang nicht immer optimal ist.
    • Möglich ist auch, dass das High-Speed-Volumen deines Tarifs für den Abrechnungsmonat bereits verbraucht istoder dass in deinen Tarifkonditionen eine Maximalgeschwindigkeit festgelegt ist. Deine Tarifkonditionen und deinen Verbrauch kannst du jederzeit in Mein O2 oder der Mein O2 App einsehen.

    Ist dies ausgeschlossen, kann es sich um einen punktuellen Kapazitätsengpass handeln. Dies kannst du im Live-Check prüfen.

    Woran kann es liegen, dass ich keine Internet-/Datenverbindung bekomme?

    Um auf das Netz zuzugreifen und eine Verbindung mit dem Internet herstellen zu können, muss ein Verbindungsprofil eingerichtet und aktiviert werden. Das Profil wird grundsätzlich automatisch auf deinem O2 Gerät installiert. Falls sich dein Gerät nicht mit dem Internet verbindet, kannst du die Einstellungen manuell überprüfen und festlegen. Die Möglichkeiten zurautomatischen und auch zur manuellen Konfigurationfindest du hier.

    Können alle Kunden Störungsmeldungen abgeben?

    Derzeit können nur O2 Kunden Störungsmeldungen abgeben bzw. sich über den Status von Basisstationen informieren lassen. Sobald weitere Kundengruppen anderer Marken auch die Möglichkeit haben, werden wir dies kommunizieren.

    Verwandte Themen

    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (21)

    Netzabdeckung

    Du möchtest wissen, wie gut das O2 Netz an deinem Standort ist? Mit der interaktiven Karte kannst du die Netzabdeckung vor Ort prüfen.

    • Zur Netzabdeckung
    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (22)

    Alle Infos zu LTE und 5G

    Auf die Abkürzungen LTE und 5G stößt man schnell, sobald man sich beim Kauf eines Smartphones mit dessen wichtigsten Funktionen und Eigenschaften beschäftigt. Doch was steckt eigentlich hinter diesen Bezeichnungen?

    • Jetzt mehr erfahren

    Trusted Shops zertifiziert

    Sicher einkaufen mit Geld-Zurück-Garantie

    Sicher einkaufen

    Zahlungsart

    Einfach und sicher per Bankeinzug bezahlen

    Zahlungsart

    Bestellhotline

    Anrufen und Vorteile sichern

    Jetzt anrufen

    Feedback zur Website

    Schreibe uns gerne deine Ideen und Kritik

    Feedback geben

    • Kontakt

    • Impressum

    • Hinweise ElektroG/BattG

    • Produktinformationsblatt

    • Datenschutz

    • Cookie-Einstellungen

    • Vertrag kündigen

    • o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (23)
    • o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (24)
    `;// Insert the emoji dropdown into the chat input fieldexistingTWCUserInput.insertAdjacentHTML("beforeend", dropdownHTML);let isEmojiListOpen = false; // Flag to track the state of the emoji list// Event listener for clicking the emoji button to show/hide the emoji listdocument.getElementById('showEmojisButton').addEventListener('click', function () {event.stopPropagation();const emojiListDiv = document.getElementById('emojiList');emojiListDiv.innerHTML = emojis.map(emoji => `${emoji}`).join(' ');emojiListDiv.style.display = isEmojiListOpen ? 'none' : 'block';isEmojiListOpen = !isEmojiListOpen;});document.addEventListener('click', function (event) {if (isEmojiListOpen) {const emojiListDiv = document.getElementById('emojiList');// Check if event.target.classList exists, is not null// Check if event.target is truthy and has a className that is a stringconst targetClassList = event.target && typeof event.target.className === 'string' ? event.target.className : '';// Check if className is a string before using indexOfif (targetClassList.indexOf('emoji') !== -1) {event.stopPropagation();const emoji = event.target.textContent;const textInput = document.getElementById('twc-user-input-field');textInput.value += emoji;emojiListDiv.style.display = 'none';isEmojiListOpen = false;} else if (event.target !== emojiListDiv && event.target !== showEmojisButton) {emojiListDiv.style.display = 'none';isEmojiListOpen = false;}}});}}var toggleSystemMessage = true;function onEngineRequest(payload) {// handle onEngineRequest eventvar requestDetails = payload.requestDetailsstopEncouragementThread //Stop Encouragement Code(websession end message) 7-19-2023var button = requestDetails.buttonif (button != undefined && TeneoWebChat.get('storage').getItem("sendToCCT") == "Y" && button == "Endchat") {var map = new Map();map.set("button", button);syncSendMessagetoCCT("Auf wiedersehen", map);}if (requestDetails.button == "model_datatype_No") {setTimeout(function () {enableEmoji();TeneoWebChat.call('enable_upload_button')}, 10)payload.handledState.handled = true;}else {if (requestDetails.text == "" && !urlopenchat) {showBotTypingIndicator();disableUserInput();//Added code to disable user input field July 7th 2023firstmessage = trueendchatbuttonactive = true;}//var chathistory=TeneoWebChat.get('chat_history');if (requestDetails.text) {if (toggleSystemMessage) {hideDisclaimer();}toggleSystemMessage = true;var text = requestDetails.textconsole.log("Text: " + text + " has JsonStructure: " + hasJsonStructure(text))if (TeneoWebChat.get('storage').getItem("sendToCCT") == "Y" && hasJsonStructure(text)) {setTimeout(function () {const result = JSON.parse(text);var map = new Map();if (Object.hasOwn(result, 'transcriptText')) {map.set("transcriptText", result.transcriptText)} else {map.set("transcriptText", "JSON message")}sendCCTMessage(text, map)}, 100)}}if (urlopenchat) {payload.handledState.handled = true;}if (TeneoWebChat.get('storage').getItem("sendToCCT") == "Y") {payload.handledState.handled = true;}else if (!urlopenchat) {setTimeout(function () {showBotTypingIndicator();}, 10)}if (urlopenchat) {urlopenchat = false;}}}function hideDisclaimer() {var systemMessage = document.getElementsByClassName("twc-system-message__text");if (systemMessage.length > 0) {systemMessage[0].style.display = "none";}}var Message = {"text": "HelpMessage_Login", "silent": true}//Close Buttonfunction onCloseButtonClicked(payload) {// handle close button clicked eventconst handledState = payload.handledStatehandledState.handled = true// prevent chat window from being closedif (TeneoWebChat.get('storage').getItem("sendToCCT") == "N") {var delaytime = 1000;ButtonTime = TeneoWebChat.get('storage').getItem("ButtonTime");if (ButtonTime != undefined && ButtonTime != null && ButtonTime != "" && ButtonTime != "Invalid Date") {ButtonTime = new Date(ButtonTime);}else {ButtonTime = new Date();}var buttontimediff = ""buttontimediff = Math.abs(new Date() - ButtonTime);if (buttontimediff < 3000) {delaytime = 3000}// Find the button element by its idconst closeButton = document.getElementById('header-close-button');// Check if the button element existsif (closeButton) {// Disable the buttoncloseButton.disabled = true;}// Check if the button element existsif (closeButton) {setTimeout(function () { //Added code to disable user input field July 7th 2023// Disable the buttoncloseButton.disabled = false;}, delaytime)}TeneoWebChat.get('storage').setItem("ButtonTime", Date());}if (TeneoWebChat.get('storage').getItem("sendToCCT") == "Y") {const map = new Map();map.set("HelpMenu", 'Yes');if (TeneoWebChat.get('storage').getItem("cctSessionId") != "") { // Encouagement Code To check restart session 7-19-2023syncSendMessagetoCCT("HelpMenu", map);} else {restartCCTConversation("HelpMenu", map);}// Encouagement Code restart session 7-19-2023} else {let message = {"text": 'HelpMenu',"parameters": {"HelpMenu": 'Yes'},"silent": true}TeneoWebChat.call('send_input', message)}console.log("Close button clicked")}function hasJsonStructure(str) {if (typeof str !== 'string') return false;try {const result = JSON.parse(str);const type = Object.prototype.toString.call(result);return type === '[object Object]' ||type === '[object Array]';} catch (err) {return false;}}function onReady() {// Teneo Web Chat is readyconst urlSearchParams = new URLSearchParams(window.location.search);const params = Object.fromEntries(urlSearchParams.entries());encouragementVarDeclaraion_Rename() // Encouagement Code decelaring session variables 7-19-2023if (isSessionOpen()) { // Encouagement Code checking session status start here 7-19-2023if (bDebug) console.debug(sName, 'Session is open on reload');doEncouragementThread();} else {cancelAllEncouragements();if (bDebug) console.debug(sName, 'Session is not open on reload');}//Encouagement Code checking session status end here 7-19-2023let open_chat = params.open_chat;if (open_chat == "true") {TeneoWebChat.call('maximize');setTimeout(function () {addEmoji();preventUrlDragAndDrop();}, 100)setTimeout(function () {TeneoWebChat.call('disable_upload_button')}, 200)urlopenchat = true;startSession();}hideoutmesg();}TeneoWebChat.on('ready', onReady);//Function to handle direct links - startvar directLink = true;function onNewMessage(payload) {//console.log("New Message Payload:");//console.log(payload)if (payload.message.author == "user") {if (TeneoWebChat.get('storage').getItem("sendToCCT") == "Y") {var userinput = payload.message.data.text;if (TeneoWebChat.get('storage').getItem("cctSessionId") == "") {restartCCTConversation(userinput);} else {setTimeout(function () {sendCCTMessage(userinput);}, 100)}}}// On new message added to message listconst message = payload.messageif (message.author == "bot" && message.type == "text") {if (retriggerResponse) {payload.handledState.handled = true;retriggerResponse = false;}// Get query stringconst urlSearchParams = new URLSearchParams(window.location.search);const params = Object.fromEntries(urlSearchParams.entries());let input_query = params.input_query;// Send input to Teneo engineif (input_query && directLink) {setTimeout(function () {TeneoWebChat.call('send_input', {'text': input_query})directLink = false;toggleSystemMessage = false;}, 1000)}}if (message.author == "bot") {hideBotTypingIndicator();}}TeneoWebChat.on('new_message', onNewMessage)//Function to handle direct links - end// Login Changes Start here 10Oct22 - CRfunction restartCCTConversation(text, map) {setTimeout(function () {let response = syncStartCCTConversation(text, map);}, 100)}var toggleSystemMessage = true;function onMessageButtonClicked(payload) {// handle message button clicked eventvar button = payload.button;//console.log(button);var handleState = false;if (button.postback == "loginURL") {openWindow(button.style);handleState = true;}// Start Change for the new login flow - Chaitanyaelse if (button.postback == "Ja_loginURL") {openWindow(button.style);}// End Change for the new login flow - Chaitanyaelse if (button.title == "Login Link") {openWindow(button.target);handleState = true;}if (handleState) {payload.handledState.handled = true;} else {if (button.postback != undefined && TeneoWebChat.get('storage').getItem("sendToCCT") == "Y") {var map = new Map();if (button.hasOwnProperty('parameters') && button.parameters != undefined && button.parameters != null) {map = new Map(Object.entries(button.parameters));}if (button.title != button.postback) {map.set("transcriptText", button.title);}if (TeneoWebChat.get('storage').getItem("cctSessionId") == "") {restartCCTConversation(button.postback, map);} else {if (button.hasOwnProperty('parameters') && button.parameters != undefined && button.parameters != null) {syncSendMessagetoCCT(button.postback, map);} else {syncSendMessagetoCCT(button.postback);}}}}}function openWindow(target) {const newWin = window.open(target);}//Start here: Resubmitting Input to Teneo 18Oct22function onEngineResponse(payload) {if (firstmessage) {firstmessage = false}response = payload.responseDetailsstorage.setItem(SESSION_ID, sessionId = response.sessionId); // Encouagement Code setting session ID 7-19-2023var x = response.output.parametersreceivedModalData(payload)if (x.chatStatus == "CHAT_FINISHED") {endchatbuttonactive = false;disableThumbsIcons();setTimeout(function () { //Added code to disable user input field July 7th 2023TeneoWebChat.call('end_session');}, 500);} else {endchatbuttonactive = true;}if (x) doEncouragementThread(0, x.encouragements, x.nodeEncouragements);else doEncouragementThread(0); // Encouagement Code stating the ecouragement timer ID 7-19-2023var outputparam = response.output.parameters.retriggerTeneo;if (outputparam == "Y") {setTimeout(function () {TeneoWebChat.call('disable_upload_button')}, 100);retriggerResponse = true;setTimeout(function () {let message = {"text": response.input.text,"silent": true,"parameters": response.input.parameters}TeneoWebChat.call('send_input', message);}, 50);}// Changes to give standalone response to user - Chaitanya 07 12 2022var justPrompt = response.output.parameters.justPrompt;if (justPrompt == "Y") {setTimeout(function () {TeneoWebChat.call('disable_upload_button')}, 100);let message = {"text": response.input.text, "silent": true}TeneoWebChat.call('send_input', message);}hideBotTypingIndicator();if (thumbsadded = true) {disableThumbsIcons();}if (x.faqResponse == "true") {setTimeout(function () {addThumbsIcons();}, 300)}else {thumbsadded = false}}//End here: Resubmitting Input to Teneo 18Oct22function startSession() {createAndAddTWCMessage("text", "Hallo, ich bin Aura deine virtuelle Assistenz. Bitte beschreibe in einem kurzen Satz wie ich dir helfen kann.");var teneowebclient = {'type': 'system', 'text': 'Selbstverständlich beachten wir die Vorschriften des Datenschutzes. Hier geht es zur Datenschutzerklärung.'}createAndAddTWCMessage(teneowebclient.type, teneowebclient);}function onOpenButtonClicked(payload) {setTimeout(function () {addEmoji();preventUrlDragAndDrop();}, 100)if (!minimizebuttonclicked) {startSession();}minimizebuttonclicked = false;if (endchatbuttonactive == false) {setTimeout(function () {TeneoWebChat.call('disable_upload_button')}, 200)}if (thumbsadded == true) {setTimeout(function () {addThumbsIcons();}, 200)}}TeneoWebChat.on('open_button_clicked', onOpenButtonClicked)TeneoWebChat.on('engine_response', onEngineResponse)TeneoWebChat.on('engine_request', onEngineRequest)TeneoWebChat.on('message_button_clicked', onMessageButtonClicked)// Login Changes End here 10Oct22 - CR// CCT Integration 10_03_2023function sendCCTMessage(userInput, params) {syncSendMessagetoCCT(userInput, params)}async function syncSendMessagetoCCT(userInput, params) {if (TeneoWebChat.get('storage').getItem("asyncFeature") == "N") {showBotTypingIndicator();}var teneodata = {"viewtype": "tieapi", "greetingMessageStart": "N"};if (params != undefined && params != null && params != "" && params.size > 0) {params.forEach((value, key) => {teneodata[key] = value;});}var data = {"userinput": userInput,"teneodata": teneodata};try {const response = await fetch(cctURL + '/message/' + TeneoWebChat.get('storage').getItem("cctSessionId") + '/send', {method: "POST",dataType: 'json',body: JSON.stringify(data),headers: {"Content-type": "application/json; charset=UTF-8"},signal: AbortSignal.timeout(25000)});if (response.status == 200) {var triggerAgain = false;const json = await response.json();console.log(json);if (json.status == 0) {endchatbuttonactive = truereceivedModalData(json)var cctinteractionId = TeneoWebChat.get('storage').getItem("cctSessionId")if (TeneoWebChat.get('storage').getItem("asyncFeature") == "N") {var enouragementmsg = TeneoWebChat.get('storage').getItem("Enouragementmsg", enouragementmsg) // Encouagement Code setting encmsg ID 7-19-2023callingEncouagementMethod(sessionId = cctinteractionId, enouragementmsg) // Encouagement Code call encmethod ID 7-19-2023if ((json.output.parameters.hasOwnProperty('retriggerTeneo') && json.output.parameters.retriggerTeneo == "Y") || (json.output.parameters.hasOwnProperty('sendMessagetoAgent') && json.output.parameters.sendMessagetoAgent == "Y")) {triggerAgain = true;} else {if (json.output.text != ""){if("outputTextSegmentIndexes" in json.output.parameters){splitmessage=true;var splitmsg=splitMessage(json.output.text,json.output.parameters.outputTextSegmentIndexes)for (var i = 0; i < splitmsg.length; i++) {createAndAddTWCMessage("text", splitmsg[i]);}}else{createAndAddTWCMessage("text", json.output.text);}}if ("teneowebclient" in json.output.parameters &&json.output.parameters.teneowebclient != undefined &&json.output.parameters.teneowebclient != "") {var webclientJson = "";try {var webclientJson = JSON.parse(json.output.parameters.teneowebclient);} catch (ex) {console.error(ex);}createAndAddTWCMessage(webclientJson.type, webclientJson);}if (thumbsadded = true) {disableThumbsIcons();}if (json.output.parameters.faqResponse == "true") {setTimeout(function () {addThumbsIcons();}, 50)} else {thumbsadded = false}if (json.output.parameters.hasOwnProperty('justPrompt') && json.output.parameters.justPrompt == "Y") {triggerAgain = true;}if (json.output.parameters.hasOwnProperty('chatStatus') && json.output.parameters.chatStatus == "AGENT_TRANSFER" && TeneoWebChat.get('storage').getItem("asyncFeature") == "N") {TeneoWebChat.get('storage').setItem("asyncFeature", "Y");cancelAllEncouragements();interval = setInterval(makeApiCall, 10000);}if (json.output.parameters.hasOwnProperty('chatStatus') && json.output.parameters.chatStatus == "CHAT_FINISHED") {TeneoWebChat.get('storage').setItem("cctSessionId", "");endchatbuttonactive = false;setTimeout(function () { //Added code to disable user input field July 7th 2023endConversation(cctinteractionId);}, 100);}}if (triggerAgain) {setTimeout(function () {syncSendMessagetoCCT("");}, 100);}}if (json.input.parameters.button == 'Endchat' && TeneoWebChat.get('storage').getItem("asyncFeature") == "Y") {TeneoWebChat.get('storage').setItem("cctSessionId", "");TeneoWebChat.get('storage').setItem("asyncFeature", "N");endchatbuttonactive = false;TeneoWebChat.call('add_message', {type: 'text',author: 'bot',data: {text: 'Danke und bis zum nächsten Mal!'}});setTimeout(function () { //Added code to disable user input field July 7th 2023endConversation(cctinteractionId);}, 100);}retriggers = 0} else {if (json.message == "Chat already closed") {if (TeneoWebChat.get('storage').getItem("asyncFeature") == "Y") {TeneoWebChat.get('storage').setItem("asyncFeature", "N");}restartCCTConversation(userInput, params);} else {reTriggerSendApi(userInput, params)}}} else {console.log("error response from CCT Send message " + response.status);reTriggerSendApi(userInput, params)}} catch (e) {if (e.name === "AbortError") {console.log('Connection to CCT aborted due to timeout');} else {console.log(e)}reTriggerSendApi(userInput, params)}if (TeneoWebChat.get('storage').getItem("asyncFeature") == "N") {hideBotTypingIndicator();}}async function reTriggerSendApi(userInput, params) {if (retriggers < 2) {syncSendMessagetoCCT(userInput, params)retriggers++} else {createAndAddTWCMessage("text", "Leider ist eine technische Störung aufgetreten. Bitte versuche es zu einem späteren Zeitpunkt nocheinmal. Eine Übersicht alternativer Kommunikationskanäle findest du hier:

    Kontakt

    Vielen Dank für dein Verständnis.")setTimeout(function () { //Added code to disable user input field July 7th 2023TeneoWebChat.call('disable_upload_button');}, 50)endConversation(TeneoWebChat.get('storage').getItem("cctSessionId"));}}function makeApiCall() {if (TeneoWebChat.get('storage').getItem("asyncFeature") == "Y") {getMessageFromCCT();} else {clearInterval(interval);}}// Initiate callfunction getMessageFromCCT() {fetch(cctURL + '/message/' + TeneoWebChat.get('storage').getItem("cctSessionId")).then((response) => response.json()).then((json) => {if (json.hasOwnProperty('output') && json.output.hasOwnProperty('text') && json.output.text != "") {const text1 = json.output.text;const arr = text1.split('||');for (var i = 0; i < arr.length; i++) {if (arr[i].includes("☺")) {arr[i] = arr[i].replace(/☺/g, "😊");}createAndAddTWCMessage("text", arr[i].replace(/\n/g, "
    "));}}if (json.message == "Chat already closed") {TeneoWebChat.get('storage').setItem("asyncFeature", "N");TeneoWebChat.call('add_message', {type: 'text', author: 'bot', data: {text: 'Vielen Dank für das Gespräch. Wir stehen für deine Fragen immer zur Verfügung. Bis zum nächsten Mal.'}});setTimeout(function () { //Disable Endchat after Session end with AgentTeneoWebChat.call('disable_upload_button');}, 50)TeneoWebChat.get('storage').setItem("cctSessionId", "");endchatbuttonactive = false;}});}function createAndAddTWCMessage(type, data) {let message = {"type": type,"author": "bot","data": data}if (type == "text") {message["data"] = {"text": data}}TeneoWebChat.call('add_message', message);}async function syncStartCCTConversation(text, params) {var timeDiff = "";if (endChatButtonTime != null && endChatButtonTime != undefined) {timeDiff = Math.abs(new Date() - endChatButtonTime);}var teneodata = {"viewtype": "tieapi", "timeDiff": timeDiff, "greetingMessageStart": "N"};var errorParams = {}if (params != undefined && params != null && params != "" && params.size > 0) {params.forEach((value, key) => {teneodata[key] = value;errorParams[key] = value;});}var data = {"userinput": text,"brandid": "1","servicename": "CHAT_BOT_O2","teneodata": teneodata}var errorTeneoMsg = {"text": text,"silent": true,"greetingMessageStart": "N","parameters": errorParams}showBotTypingIndicator();disableUserInput();var response = {}try {const response = await fetch(cctURL + '/conversation/start', {method: "POST",body: JSON.stringify(data),headers: {"Content-type": "application/json"},signal: AbortSignal.timeout(10000)});if (response.status == 200) {const json = await response.json();console.log(json);if (json.status == 0) {endchatbuttonactive = true;TeneoWebChat.get('storage').setItem("cctSessionId", json.sessionId);var enouragementmsg = json.output.parameters // Encouagement Code setting encmsg ID 7-19-2023TeneoWebChat.get('storage').setItem("Enouragementmsg", enouragementmsg.encouragements); // Encouagement Code setting encmsg ID 7-19-2023callingEncouagementMethod(json.sessionId, enouragementmsg)if (json.output.parameters.hasOwnProperty('retriggerTeneo') && json.output.parameters.retriggerTeneo == "Y") {syncSendMessagetoCCT(text, params)} else {let message = {"type": "text","author": "bot","data": {"text": json.output.text}}TeneoWebChat.call('add_message', message);var webclientJson = "";try {var webclientJson = JSON.parse(json.output.parameters.teneowebclient);} catch (ex) {console.error(ex);}createAndAddTWCMessage(webclientJson.type, webclientJson);}if (json.output.parameters.hasOwnProperty('chatStatus') && json.output.parameters.chatStatus == "AGENT_TRANSFER" && TeneoWebChat.get('storage').getItem("asyncFeature") == "N") {TeneoWebChat.get('storage').setItem("asyncFeature", "Y");interval = setInterval(makeApiCall, 10000);cancelAllEncouragements();}} else {console.log(json.message);TeneoWebChat.get('storage').setItem("sendToCCT", "N");errorTeneoMsg.parameters["CCT_Connect_error"] = "Error Response from CCT / JSON status : " + json.status + " and Message: " + json.message;TeneoWebChat.call('send_input', errorTeneoMsg);}} else {TeneoWebChat.get('storage').setItem("sendToCCT", "N");firstmessage = true;errorTeneoMsg.parameters["CCT_Connect_error"] = "Request Errored Out/HTTP Response status : " + response.status;TeneoWebChat.call('send_input', errorTeneoMsg);}} catch (e) {TeneoWebChat.get('storage').setItem("sendToCCT", "N");var errorString = ""if (e.name === "AbortError") {console.log('Connection to CCT aborted due to timeout');errorString = "Request Timed Out"} else {errorString = "Misc Error with error message: " + e;console.log(e)}errorTeneoMsg.parameters["CCT_Connect_error"] = errorString;TeneoWebChat.call('send_input', errorTeneoMsg);}endChatButtonTime = null;hideBotTypingIndicator();return response;}function showBotTypingIndicator() {var indicator = {"author": "bot","data": {"dateline": "Aura"}};TeneoWebChat.call('show_typing_indicator', indicator);TeneoWebChat.call('disable_upload_button');disableEmoji();}function hideBotTypingIndicator() {var indicator = {"author": "bot"};TeneoWebChat.call('hide_typing_indicator', indicator);enableEmoji();TeneoWebChat.call('enable_user_input') //Added code to enable user input field July 7th 2023if (endchatbuttonactive) {TeneoWebChat.call('enable_upload_button')} else {TeneoWebChat.call('disable_upload_button')}}//End Conversation API callasync function endConversation(id) {try {const response = await fetch(`${cctURL}/conversation/${id}/end`, {method: "DELETE",timeout: 20000, // Set timeout in the fetch options});if (response.status === 200) {const json = await response.json();// Process the JSON data if needed} else {console.log("Failed to end conversation:", response.status);}} catch (error) {console.error("An error occurred while ending the conversation:", error);}}function disableUserInput() {setTimeout(function () { //Added code to disable user input field July 7th 2023TeneoWebChat.call('disable_user_input')disableEmoji();}, 500)}async function onUploadButtonClicked() {// handle EndChat Button button functionalityTeneoWebChat.call('add_message', {type: 'modal', author: 'bot', data: {"type": "modal", "button_items": [{"title": "Ja", "postback": "Yes", "parameters": {"button": "Endchat"}}, {"title": "Nein", "postback": "No", "parameters": {"button": "model_datatype_No"}}], "title": "Willst du den Chat wirklich beenden?"}});disableEmoji();}TeneoWebChat.on('upload_button_clicked', onUploadButtonClicked)function onMinimizeButtonClicked(payload) {// handle minimize button clicked eventminimizebuttonclicked = true;}TeneoWebChat.on('minimize_button_clicked', onMinimizeButtonClicked)function onPageReload() {const cctSessionId = TeneoWebChat.get('storage').getItem("cctSessionId");const sessionId = TeneoWebChat.get('storage').getItem("teneo-web-chat-session-id");if ((cctSessionId) || (sessionId !== null && sessionId !== "")) {endchatbuttonactive = true} else {endchatbuttonactive = false}}// Attach the event listener for the beforeunload eventdocument.addEventListener("DOMContentLoaded", onPageReload);function receivedModalData(json) {if (json != null && json.output != null && json.output.parameters != null && json.output.parameters.teneowebclient != null) {var modaldatatype = JSON.parse(json.output.parameters.teneowebclient)if (modaldatatype != null && modaldatatype.type != null && modaldatatype.type === "modal") {setTimeout(function () {disableEmoji();}, 100);}}}function enableEmoji() {setTimeout(function () { //Added code to disable user input field July 7th 2023const showEmojisButton = document.getElementById('showEmojisButton');showEmojisButton.classList.remove('disabled'); // Remove any previous state classshowEmojisButton.classList.add('enabled');showEmojisButton.style.pointerEvents = 'auto';}, 100)}function disableEmoji() {setTimeout(function () { //Added code to disable user input field July 7th 2023const showEmojisButton = document.getElementById('showEmojisButton');showEmojisButton.classList.remove('enabled'); // Remove any previous state classshowEmojisButton.classList.add('disabled');showEmojisButton.style.pointerEvents = 'none';}, 100)}function hideoutmesg() {TeneoWebChat.call('show_callout', 'Chatte mit mir!');setTimeout(function () { //Added code to disable user input field July 7th 2023// Disable the buttonTeneoWebChat.call('hide_callout')}, 3000)}window.addEventListener("load", function () {// Get a reference to the chat icon elementvar chatIcon = document.getElementById("twc-launchbutton");// Attach an event listener for the "mouseover" event// Check if the element was foundif (chatIcon) {// Attach an event listener for the "mouseover" eventchatIcon.addEventListener("mouseover", hideoutmesg);}});function addThumbsIcons() {var botMessages = document.querySelectorAll('.twc-message.twc-bot');// Check if botMessages is not nullif (botMessages.length > 0) {var message = botMessages[botMessages.length - 1];if (message.querySelector('.twc-buttons')) {message = botMessages[botMessages.length - 2];}if(splitmessage){message = botMessages[botMessages.length - 3];splitmessage=false;}// Skip messages with the class 'twc-combo'if (message.querySelector('.twc-combo')) {return;}var messageContent = message.querySelector('.twc-text-message');if (messageContent != null) {// Create a new

    element for thumbs-up wrappervar thumbsUpWrapper = document.createElement('div');thumbsUpWrapper.classList.add('thumbs-up-wrapper');var thumbsUpIcon = document.createElement('span');thumbsUpIcon.classList.add('thumbs-up');thumbsUpIcon.textContent = '👍';thumbsUpIcon.title = 'gefällt mir';thumbsUpIcon.addEventListener('click', function () {// Handle thumbs up actionconsole.log('Thumbs up clicked');toggleThumbs(thumbsUpIcon, thumbsDownIcon);if (TeneoWebChat.get('storage').getItem("sendToCCT") == "Y") {const map = new Map();map.set("feedbackreaction", 'thumbsup');if (TeneoWebChat.get('storage').getItem("cctSessionId") != "") { // Encouagement Code To check restart session 7-19-2023syncSendMessagetoCCT("feedback", map);}}else {let message = {"text": 'feedback',"parameters": {"feedbackreaction": 'thumbsup'},"silent": true}TeneoWebChat.call('send_input', message)}});var thumbsDownIcon = document.createElement('span');thumbsDownIcon.classList.add('thumbs-down');thumbsDownIcon.textContent = '👎';thumbsDownIcon.title = 'gefällt mir nicht';thumbsDownIcon.addEventListener('click', function () {// Handle thumbs down actionconsole.log('Thumbs down clicked');toggleThumbs(thumbsDownIcon, thumbsUpIcon);if (TeneoWebChat.get('storage').getItem("sendToCCT") == "Y") {const map = new Map();map.set("feedbackreaction", 'thumbsdown');if (TeneoWebChat.get('storage').getItem("cctSessionId") != "") { // Encouagement Code To check restart session 7-19-2023syncSendMessagetoCCT("feedback", map);}}else {let message = {"text": 'feedback',"parameters": {"feedbackreaction": 'thumbsdown'},"silent": true}TeneoWebChat.call('send_input', message)}});thumbsadded = true;messageContent.appendChild(thumbsUpIcon);messageContent.appendChild(thumbsDownIcon);}}}// Function to toggle the appearance of thumbs iconsfunction toggleThumbs(clickedIcon, otherIcon) {reactionclicked = clickedIcon// Highlight the clicked iconclickedIcon.classList.add('highlight');// Gray out the other iconotherIcon.classList.add('grayed-out');// Remove highlight from the other iconotherIcon.classList.remove('highlight');}// Function to disable thumbs iconsfunction disableThumbsIcons() {var thumbsUpIcons = document.querySelectorAll('.thumbs-up');var thumbsDownIcons = document.querySelectorAll('.thumbs-down');for (var i = 0; i < thumbsUpIcons.length; i++) {var icon = thumbsUpIcons[i];if (icon.classList.contains('highlight')) {icon.style.pointerEvents = 'none';} else {icon.classList.add('grayed-out');icon.style.pointerEvents = 'none';}}for (var j = 0; j < thumbsDownIcons.length; j++) {var icon = thumbsDownIcons[j];if (icon.classList.contains('highlight')) {icon.style.pointerEvents = 'none';} else {icon.classList.add('grayed-out');icon.style.pointerEvents = 'none';}}thumbsadded = false; // Reset thumbsadded flag}function preventUrlDragAndDrop() {const inputField = document.getElementById('twc-user-input-field');// Prevent drag and drop events for URLsinputField.addEventListener('dragover', function (event) {event.preventDefault();});inputField.addEventListener('drop', function (event) {// Check if any data types other than plain text and HTML are presentconst dataTypes = event.dataTransfer.types;const isPlainText = dataTypes.includes('text/plain');const isHtmlText = dataTypes.includes('text/html');const isNotPlainTextOrHtml = dataTypes.some(type => type !== 'text/plain' && type !== 'text/html');if (isNotPlainTextOrHtml || (!isPlainText && !isHtmlText)) {// Prevent dropping of anything other than plain text and HTMLevent.preventDefault();} else {// Allow dropping of plain text or HTMLevent.preventDefault();if (isPlainText) {const textData = event.dataTransfer.getData('text/plain');const newText = inputField.value + textData;if (newText.length <= 300) {inputField.value = newText;} else {inputField.value = newText.slice(0, 300);}}if (isHtmlText) {const htmlData = event.dataTransfer.getData('text/html');// Handle HTML data// Assuming inputField.innerHTML += htmlData; for simplicityconst newText = inputField.innerHTML + htmlData;if (newText.length <= 300) {inputField.innerHTML = newText;} else {inputField.innerHTML = newText.slice(0, 300);}}}});inputField.addEventListener('input', function (event) {if (inputField.value.length > 300) {inputField.value = inputField.value.slice(0, 300);}});}function splitMessage(message, indexesString) {const indexes = JSON.parse(indexesString.replace(/^"|\["/g, '[').replace(/\]"$/g, ']'));return indexes.map(index => message.substring(index[0], index[1]));}//Encouagement Code start ID 7-19-2023function encouragementVarDeclaraion_Rename() {storage = window.TeneoWebChat.get('storage');SESSION_ID = sName + '_sessionId';GLOBAL_ENCOURAGEMENTS = sName + '_globalEncouragements';NODE_ENCOURAGEMENTS = sName + '_nodeEncouragements';ENCOURAGEMENT_INDEX = sName + '_encouragementIndex';ENCOURAGEMENT_THREAD_START = sName + '_encouragementThreadStart';sessionId = storage.getItem(SESSION_ID);if (isSessionOpen()) {if (bDebug) console.debug(sName, 'Session is open on reload');doEncouragementThread();} else {cancelAllEncouragements();if (bDebug) console.debug(sName, 'Session is not open on reload');}}function callingEncouagementMethod(getsessionId, enouragementmsg) {TeneoWebChat.get('storage').setItem(SESSION_ID, sessionId = getsessionId);var x = enouragementmsg;if (x) doEncouragementThread(0, x.encouragements, x.nodeEncouragements);else doEncouragementThread(0);}const isSessionOpen = () => (sessionId && window.TeneoWebChat.get('chat_history').length !== 0),getBooleanFromString = s => {if (s == null || (s = s.trim()).length === 0 || s == 0) return false;s = s.toLowerCase();return s !== 'false' && s !== 'null';},isValidEncouragementArray = xx => {if (!Array.isArray(xx)) return false;for (var i = 0; i !== xx.length; i++) {if (!(xx[i].delaySeconds > 0 && (xx[i].text || xx[i].command))) {console.warn(sName, 'Bad encouragement object', xx[i]);return false;}}return true;},toEncouragements = s => {try {const r = JSON.parse(s);if (isValidEncouragementArray(r)) return r;console.warn(sName, 'Skipping parsed encouragements value as it is either a non-array or has incorrect format', s);} catch (err) {console.error(sName, 'Bad encouragements value', s, err);}return null;},stopEncouragementThread = () => {if (encouragementThreadId == null) return;clearTimeout(encouragementThreadId);encouragementThreadId = null;if (bDebug) console.debug(sName, 'Stopping encouragements thread');},cancelAllEncouragements = () => {stopEncouragementThread();globalEncouragements = null;storage.removeItem(GLOBAL_ENCOURAGEMENTS);storage.removeItem(NODE_ENCOURAGEMENTS);storage.removeItem(ENCOURAGEMENT_INDEX);storage.removeItem(ENCOURAGEMENT_THREAD_START);if (bDebug) console.debug(sName, 'Deleting encouragements');},isProvidedWithInput = m => {if (m) {var x = m.type;if (x && (x === 'form' || x === 'buttons' || x === 'clickablelist' || x === 'quickreply' || x === 'form')) return true;if (Array.isArray(m)) {x = m.length;while (--x >= 0) {if (isProvidedWithInput(m[x])) return true;}} else if ('object' === typeof m) {for (x in m) {if (m.hasOwnProperty(x) && (x === 'postback' || x === 'parameters' || isProvidedWithInput(m[x]))) return true;}}}return false;},doEncouragementThread = (nEncInd, sGlobalEncouragements, sNodeEncouragements, nodeEncouragements) => {if (nEncInd == null) {if (sGlobalEncouragements == null) sGlobalEncouragements = storage.getItem(GLOBAL_ENCOURAGEMENTS);if (sNodeEncouragements == null) sNodeEncouragements = storage.getItem(NODE_ENCOURAGEMENTS);}if (sGlobalEncouragements != null && (sGlobalEncouragements = sGlobalEncouragements.trim()).length !== 0) {globalEncouragements = toEncouragements(sGlobalEncouragements);if (globalEncouragements == null) storage.removeItem(GLOBAL_ENCOURAGEMENTS);else if (globalEncouragements.length === 0) {globalEncouragements = null;storage.removeItem(GLOBAL_ENCOURAGEMENTS);} else {storage.setItem(GLOBAL_ENCOURAGEMENTS, sGlobalEncouragements);}} else {if (globalEncouragements == null) storage.removeItem(GLOBAL_ENCOURAGEMENTS);}if (sNodeEncouragements != null && (sNodeEncouragements = sNodeEncouragements.trim()).length !== 0) {nodeEncouragements = toEncouragements(sNodeEncouragements);if (nodeEncouragements == null) storage.removeItem(NODE_ENCOURAGEMENTS);else storage.setItem(NODE_ENCOURAGEMENTS, sNodeEncouragements);} else {if (nodeEncouragements == null) storage.removeItem(NODE_ENCOURAGEMENTS);}const encs = nodeEncouragements || globalEncouragements;if (encs == null) {cancelAllEncouragements();return;}stopEncouragementThread();if (encs.length === 0) return;var x;if (nEncInd != null) storage.setItem(ENCOURAGEMENT_INDEX, nEncInd);else {// Page is refreshedx = storage.getItem(ENCOURAGEMENT_INDEX);if (x == null || (x = x.trim()).length === 0) nEncInd = 0;else if (Number.isNaN(nEncInd = Number.parseInt(x))) {console.warn(sName, 'Bad [' + ENCOURAGEMENT_INDEX + '] value:', x);return;}if (encs.length === nEncInd) {// Page is refreshed after all the encouragements have been displayedif (bDebug) console.debug(sName, 'encs.length==' + encs.length + ', nEncInd==' + nEncInd);return;}x = storage.getItem(ENCOURAGEMENT_THREAD_START);if (x != null) {if ((x = x.trim()).length === 0) x = null;else if (Number.isNaN(x = Number.parseInt(x))) {console.warn(sName, 'Bad [' + ENCOURAGEMENT_THREAD_START + '] value:', storage.getItem(ENCOURAGEMENT_THREAD_START));return;}}}// Here, x is the start time point for the countdown for the currently planned encouragement// or null (undefined) if it has not started yet or is irrelevant. nEncInd is the integer// index of the encouragement to be executed.const enc = encs[nEncInd],nDelay = (x == null) ? enc.delaySeconds * 1000 : (enc.delaySeconds * 1000 - (Date.now() - x));if (enc == null) {console.warn(sName, 'Bad nEncInd value', nEncInd, 'for encs', encs);return;}// If the encouragement countdown hasn't been set previously, set it to the current time point:if (x == null) storage.setItem(ENCOURAGEMENT_THREAD_START, Date.now());if (bDebug) console.debug(sName, 'Starting encouragement thread with calculated delay in milliseconds', nDelay, 'and value', enc);x = sessionId;encouragementThreadId = setTimeout(() => {encouragementThreadId = null;storage.removeItem(ENCOURAGEMENT_THREAD_START);if (!isSessionOpen()) {console.info(sName, 'Ignoring encouragements because the session closed');cancelAllEncouragements();return;}if (x !== sessionId) {console.info(sName, 'Ignoring encouragements because the session changed from', x, 'to', sessionId);cancelAllEncouragements();return;}if (bDebug) console.debug(sName, 'Printing encouragement', enc);if (enc.text) {TeneoWebChat.call('add_message', {type: 'text',author: 'bot',data: {text: enc.text}});if (TeneoWebChat.get('storage').getItem("teneo-web-chat-session-id") == null || TeneoWebChat.get('storage').getItem("teneo-web-chat-session-id") == "") {const cctSessionId = TeneoWebChat.get('storage').getItem("cctSessionId");endConversation(cctSessionId);endchatbuttonactive = false;TeneoWebChat.call('disable_upload_button')} else {TeneoWebChat.call('end_session')endchatbuttonactive = false;TeneoWebChat.call('disable_upload_button')}if (thumbsadded = true) {disableThumbsIcons();}}nEncInd++;storage.setItem(ENCOURAGEMENT_INDEX, nEncInd);if (nEncInd < encs.length) doEncouragementThread(nEncInd, null, null, nodeEncouragements);}, nDelay > 0 ? nDelay : 0);},resetData = () => {cancelAllEncouragements();sessionId = null;storage.removeItem(SESSION_ID);if (bDebug) console.debug(sName, 'Data reset');};})('TWCEncouragement');////Encouagement Code end ID 7-19-2023

    o2 Störung? Netzausfall & Netzprobleme im Live-Check prüfen (2024)
    Top Articles
    Latest Posts
    Article information

    Author: Amb. Frankie Simonis

    Last Updated:

    Views: 5985

    Rating: 4.6 / 5 (76 voted)

    Reviews: 91% of readers found this page helpful

    Author information

    Name: Amb. Frankie Simonis

    Birthday: 1998-02-19

    Address: 64841 Delmar Isle, North Wiley, OR 74073

    Phone: +17844167847676

    Job: Forward IT Agent

    Hobby: LARPing, Kitesurfing, Sewing, Digital arts, Sand art, Gardening, Dance

    Introduction: My name is Amb. Frankie Simonis, I am a hilarious, enchanting, energetic, cooperative, innocent, cute, joyous person who loves writing and wants to share my knowledge and understanding with you.