- Implement SmsService class for sending SMS via CPSMS API. - Add SMS sending functionality in the frontend with validation and user feedback. - Create database migrations for SMS message storage and telephony features. - Introduce telephony settings and user-specific configurations for click-to-call functionality. - Enhance user experience with toast notifications for incoming calls and actions.
35 lines
1.4 KiB
SQL
35 lines
1.4 KiB
SQL
-- Migration 120: Telefoni (Yealink) module
|
|
-- Dato: 12. februar 2026
|
|
|
|
-- Add telephony fields to users (chosen approach)
|
|
ALTER TABLE users
|
|
ADD COLUMN IF NOT EXISTS telefoni_extension VARCHAR(16),
|
|
ADD COLUMN IF NOT EXISTS telefoni_aktiv BOOLEAN NOT NULL DEFAULT FALSE;
|
|
|
|
CREATE INDEX IF NOT EXISTS idx_users_telefoni_extension ON users(telefoni_extension);
|
|
CREATE INDEX IF NOT EXISTS idx_users_telefoni_aktiv ON users(telefoni_aktiv);
|
|
|
|
-- Call log table (isolated)
|
|
CREATE TABLE IF NOT EXISTS telefoni_opkald (
|
|
id BIGSERIAL PRIMARY KEY,
|
|
callid VARCHAR(128) NOT NULL,
|
|
bruger_id INTEGER,
|
|
direction VARCHAR(16) NOT NULL CHECK (direction IN ('inbound', 'outbound')),
|
|
ekstern_nummer VARCHAR(32),
|
|
intern_extension VARCHAR(16),
|
|
kontakt_id INTEGER,
|
|
sag_id INTEGER,
|
|
started_at TIMESTAMP NOT NULL,
|
|
ended_at TIMESTAMP,
|
|
duration_sec INTEGER,
|
|
raw_payload JSONB NOT NULL,
|
|
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
|
|
);
|
|
|
|
-- Ensure idempotency per call
|
|
CREATE UNIQUE INDEX IF NOT EXISTS ux_telefoni_opkald_callid ON telefoni_opkald(callid);
|
|
CREATE INDEX IF NOT EXISTS idx_telefoni_opkald_bruger_id ON telefoni_opkald(bruger_id);
|
|
CREATE INDEX IF NOT EXISTS idx_telefoni_opkald_ekstern_nummer ON telefoni_opkald(ekstern_nummer);
|
|
CREATE INDEX IF NOT EXISTS idx_telefoni_opkald_started_at ON telefoni_opkald(started_at);
|
|
CREATE INDEX IF NOT EXISTS idx_telefoni_opkald_sag_id ON telefoni_opkald(sag_id);
|