Контроллер для Laravel,для онлайн чата с пользователем
Есть три таблицы : пользователи, статусы чата и сообщения.
Нужно написать чат для общения с пользователем онлайн на laravel.
Принцип работы такой:
- сначала с пользователем общается бот и записывает всю беседу в таблицу сообщений, в какой-то момент бот определяет что беседу нужно передать человеку, в
этот момент мы отправляем оператору ссылку на диалог и переводим статус чата с ответов ботом на человека (и теперь входящее сообщение бот не отрабатывает).
Ваша задача реализовать онлайн чат с пользователем с автоматической подгрузкой новых сообщений. Также нужно будет добавить кнопку "перевести на бота" который будет менять статус чата на бота и автоматический перевод на бота если прошел час после последнего сообщения.
Сами таблицы:
CREATE TABLE `messages` (
`id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`idMessage` VARCHAR(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`senderNumber` VARCHAR(11) COLLATE utf8mb4_unicode_ci NOT NULL,
`role` INTEGER(11) NOT NULL,
`senderName` VARCHAR(50) COLLATE utf8mb4_unicode_ci NOT NULL,
`textMessage` TEXT COLLATE utf8mb4_unicode_ci NOT NULL,
`receivedAt` TIMESTAMP NOT NULL DEFAULT current_timestamp(),
`audioLink` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`filepath` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`created_at` TIMESTAMP NULL DEFAULT NULL,
`updated_at` TIMESTAMP NULL DEFAULT NULL,
`messageType` INTEGER(11) DEFAULT NULL,
`transcribedText` TEXT COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`messageStatus` INTEGER(11) DEFAULT 0,
`downloadStatus` INTEGER(11) DEFAULT 0,
`task_id` INTEGER(11) DEFAULT NULL,
`clientNotificationStatus` TINYINT(4) DEFAULT 0,
`imageLink` VARCHAR(255) COLLATE utf8mb4_unicode_ci DEFAULT 'Null',
PRIMARY KEY USING BTREE (`id`)
) ENGINE=InnoDB
AUTO_INCREMENT=848 ROW_FORMAT=DYNAMIC CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_unicode_ci';
Входящие сообщения обрабатываются в другом контроллере. для вас это только будут появляется новые сообщения в таблице.
Когда оператор отправляет сообщение заполняем поля textMessage, senderNumber,role=1, senderName=оператор
CREATE TABLE `bot_flags` (
`id` INTEGER(11) NOT NULL AUTO_INCREMENT,
`senderNumber` VARCHAR(20) COLLATE utf8mb4_general_ci DEFAULT NULL,
`promt_flag` TINYINT(4) DEFAULT NULL,
`kb_flag` TINYINT(4) DEFAULT NULL,
`setpromt_flag` TINYINT(4) DEFAULT NULL,
`created_at` TIMESTAMP NULL DEFAULT current_timestamp(),
`updated_at` TIMESTAMP NULL DEFAULT current_timestamp(),
`sleep_time` INTEGER(11) DEFAULT 3,
`wait_gpt_answer` INTEGER(11) DEFAULT 0,
PRIMARY KEY USING BTREE (`id`)
)