UNPKG

@jokoor/sdk

Version:
128 lines 4.63 kB
"use strict"; /** * SMS resource - User-friendly wrapper for SMS API */ Object.defineProperty(exports, "__esModule", { value: true }); exports.SMS = void 0; const base_1 = require("./base"); const api_1 = require("../generated/api"); const result_1 = require("../types/result"); class SMS extends base_1.BaseResource { constructor(configuration) { super(configuration); this.api = new api_1.SMSApi(configuration); } /** * Send an SMS message * * Recipient specification: * - Can use `to` (phone number) alone * - Can use `contactId` alone (service fetches phone from contact) * - If both provided, `contactId` takes precedence * * Message content: * - Can use `message` alone * - Can use `templateId` alone (service fetches template content) * - If both provided, `message` takes precedence * * @param params SMS parameters * @returns SMS response with message ID */ async send(params) { // Validate that we have at least one recipient method if (!params.to && !params.contactId) { return (0, result_1.err)('Either "to" (phone number) or "contactId" must be provided'); } // Validate that we have at least one message method if (!params.message && !params.templateId) { return (0, result_1.err)('Either "message" or "templateId" must be provided'); } const apiParams = { recipient_phone: params.to || '', message_body: params.message || '', scheduled_at: params.scheduledAt, is_draft: params.isDraft, contact_id: params.contactId, template_id: params.templateId, template_params: params.templateParams, }; const result = await this.handleApiCall(() => this.api.v1SmsPost(apiParams)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)(this.convertKeysToCamelCase(result.data)); } /** * Get SMS message details * @param id SMS message ID * @returns SMS message details */ async get(id) { if (!id || id.trim() === '') { return (0, result_1.err)('SMS ID is required'); } const result = await this.handleApiCall(() => this.api.v1SmsIdGet(id)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)(this.convertKeysToCamelCase(result.data)); } /** * List SMS messages with filtering and pagination * @param options List options * @returns Paginated list of SMS messages */ async list(options) { const result = await this.handlePaginatedApiCall(() => this.api.v1SmsGet(options?.limit, options?.offset, options?.status, options?.startDate, options?.endDate, options?.search, options?.sort)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)({ ...result.data, items: result.data.items.map(item => this.convertKeysToCamelCase(item)) }); } /** * Resend a failed SMS message * @param id SMS message ID * @returns Resend response */ async resend(id) { const result = await this.handleApiCall(() => this.api.v1SmsIdResendPost(id)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)(this.convertKeysToCamelCase(result.data)); } /** * Resend multiple failed SMS messages * @param messageIds Array of message IDs to resend * @returns Batch resend results */ async resendBatch(messageIds) { const request = { message_ids: messageIds }; const result = await this.handleApiCall(() => this.api.v1SmsResendFailedPost(request)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)(this.convertKeysToCamelCase(result.data)); } /** * Send a draft SMS message * @param id Draft SMS ID * @param scheduledAt Optional scheduled time * @returns Send response */ async sendDraft(id, scheduledAt) { const params = scheduledAt ? { scheduled_at: scheduledAt } : {}; const result = await this.handleApiCall(() => this.api.v1SmsIdSendDraftPost(id, params)); if ((0, result_1.isErr)(result)) { return result; } return (0, result_1.ok)(this.convertKeysToCamelCase(result.data)); } } exports.SMS = SMS; //# sourceMappingURL=sms.js.map