Опыт внедрения таблицы коммуникации с клиентами
Данная статья основана на опыте внедрения подобной таблицы в нашей корпоративной CRM-системе.
Итак начнем. В вашей организации может быть огромное количество различных источников коммуникации с клиентами:
- Звонки
- Email рассылки
- Смс рассылки
- Viber рассылки
- PUSH
- Call-back формы
- и т.д.
Для осуществления всех этих коммуникаций используются различные технологии и сервисы, которые хранят данные в различных таблицах, форматах. Т.е. все данные разорганизованные и обособленные.
Для того, чтобы нормализовать это все, вам нужно всего лишь завести одну таблицу в вашей БД и складывать туда все коммуникации.
Все данные в эту таблицу вы можете ложить самым удобным для вас способом:
- Синхронизация данных
- В момент совершения коммуникации
- Пост-фактум после коммуникации
- Вебхуки (если это email рассылки)
Следует отметить, что для каждого типа коммуникаций в таблице будет свой type_id, а также будут использоваться различные колонки для хранения данных.
Немного практики.
Для начала нужно создать несколько таблиц:
1. Таблицу с перечнем типов данных: communications_type
2. Таблицу коммуниникаций: communications
-- Дамп структуры для таблица communications CREATE TABLE `communications` ( `id` BIGINT(20) NOT NULL AUTO_INCREMENT, `type_id` TINYINT(1) NOT NULL DEFAULT '1', `contact_id` INT(11) NULL DEFAULT NULL, `manager_id` INT(11) NULL DEFAULT NULL, PRIMARY KEY (`id`, `type_id`), INDEX `contact_id` (`contact_id`), INDEX `manager_id` (`manager_id`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB ; -- Дамп структуры для таблица communications_type CREATE TABLE `communications_type` ( `id` TINYINT(3) NOT NULL AUTO_INCREMENT, `caption` CHAR(50) NULL DEFAULT NULL, PRIMARY KEY (`id`) ) COLLATE='utf8_general_ci' ENGINE=InnoDB ROW_FORMAT=COMPACT AUTO_INCREMENT=5 ; -- Дамп данных таблицы communications_type: ~4 rows (приблизительно) INSERT INTO `communications_type` (`id`, `caption`) VALUES (1, 'Calls'), (2, 'Emails'), (3, 'SMS'), (4, 'Push');
По мере того, как вы будете интегрировать новый тип коммуникации в вашу таблицу communications, она будет расширяться новыми колонками и новые типы будут попадать в таблицу communications_type.
Если вам нужно добавить данные для звонков (type_id=1), можно использовать:
- src
- dst
- start
- answer
- end
- duration
- billsec
- disposition
- uniqueid /это уникальное поле в таблице звонков, чтобы можно было позже найти необходимую информацию по, скажем телефонному разговору/
Если email (type_id=2):
- date_send
- date_receiving
- newsletter_id /поле связи с рассылкой, может быть вы получаете статус: доставлен, прочитан и прочие/
Резюме, таблица коммуникаций будет просто ОГРОМНОЙ, но хранить все необходимые данные по коммуникациям.
Небольшая подсказка:
- Так как данные из таблиц будут постоянно извлекаться, используйте интексы
- Документация наше все, опишите все процессы которые складывают данные в таблицу, когда они работают и где. Какие технологии используются
Поверьте, вам это поможет. Стоит это сделать! Удачи.