{"record":{"id":"f6b2ada858073a3b","repo":"louislam/uptime-kuma","slug":"resp-data","errorCode":null,"errorMessage":"${resp.data}","messagePattern":"\\$\\{resp\\.data\\}","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"server/notification-providers/cellsynt.js","lineNumber":31,"sourceCode":"            // docs at https://www.cellsynt.com/en/sms/api-integration\n            params: {\n                username: notification.cellsyntLogin,\n                password: notification.cellsyntPassword,\n                destination: notification.cellsyntDestination,\n                text: msg.replace(/[^\\x00-\\x7F]/g, \"\"),\n                originatortype: notification.cellsyntOriginatortype,\n                originator: notification.cellsyntOriginator,\n                allowconcat: notification.cellsyntAllowLongSMS ? 6 : 1,\n            },\n        };\n        try {\n            let config = this.getAxiosConfigWithProxy(data);\n            const resp = await axios.post(\"https://se-1.cellsynt.net/sms.php\", null, config);\n            if (resp.data == null) {\n                throw new Error(\"Could not connect to Cellsynt, please try again.\");\n            } else if (resp.data.includes(\"Error:\")) {\n                resp.data = resp.data.replaceAll(\"Error:\", \"\");\n                throw new Error(resp.data);\n            }\n            return okMsg;\n        } catch (error) {\n            this.throwGeneralAxiosError(error);\n        }\n    }\n}\n\nmodule.exports = Cellsynt;\n","sourceCodeStart":13,"sourceCodeEnd":41,"githubUrl":"https://github.com/louislam/uptime-kuma/blob/6b5ea0155793e666666745fb8d6fef1e829543a2/server/notification-providers/cellsynt.js#L13-L41","documentation":"cellsynt.js:29-31. Cellsynt returns an error as a plain-text body starting with 'Error:'. The provider strips the 'Error:' prefix and throws the remaining text, which is the human-readable Cellsynt failure reason (e.g. 'Invalid destination', 'Wrong username or password').","triggerScenarios":"Wrong username/password, invalid destination number format, insufficient credits, disallowed originator value, or destination on a blocked operator route.","commonSituations":"Credentials mismatched; destination not in the E.164 international format Cellsynt expects; originator alphanumeric string exceeds length limits; account out of credits.","solutions":["Read the stripped message verbatim — it names the Cellsynt reason (auth, destination, credits).","Verify username/password against the Cellsynt customer portal.","Format destination as international number without leading + or 00 per Cellsynt docs.","Check account balance and originator configuration."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Pre-validate Cellsynt credential + destination format\nfunction cellsyntPreflight(notification) {\n    if (!notification.cellsyntLogin || !notification.cellsyntPassword) throw new Error('Cellsynt credentials missing');\n    if (!/^\\d{6,15}$/.test(notification.cellsyntDestination)) throw new Error('Cellsynt destination must be intl digits');\n}","typeGuard":"function isCellsyntOkBody(s) { return typeof s === 'string' && /^<\\?xml/.test(s) && /<status>OK<\\/status>/.test(s); }","tryCatchPattern":"try { await provider.send(...); }\ncatch (e) {\n    const m = e.message;\n    if (/auth|username|password/i.test(m)) log.error('Cellsynt auth — fix credentials');\n    else if (/credit|balance/i.test(m)) heartbeat.status = PENDING;\n}","preventionTips":["Keep credentials in lockstep with the Cellsynt portal.","Use the international destination format documented by Cellsynt."],"tags":["notification","sms","cellsynt","api","credentials"],"backgroundTag":null,"analyzedSha":"6b5ea0155793e666666745fb8d6fef1e829543a2","analyzedAt":"2026-08-12T23:42:12.959Z","schemaVersion":2},"datasetVersion":"2026-08-13T04:17:16.726Z"}