ABMS Doc - Hướng dẫn
ABMS Smart DocLogin to ABMSABMS WebsiteInnocom website
  • Hướng dẫn sử dụng ABMS
  • Hướng dẫn chung
    • Đăng nhập
    • Thay đổi mật khẩu
    • Thao tác với màn hình dashboard
    • Thao tác với màn hình list
    • Thao tác với màn hình detail
    • Thao tác với màn hình chỉnh sửa
  • Cài đặt cơ bản
    • Import dữ liệu
    • Một số thao tác cơ bản
    • Người dùng và quyền
    • Sửa bố cục và Layout
    • Thao tác với trường danh sách chọn
    • Khóa bản ghi
    • Menu Config
    • Freeze column (List view)
  • Các chức năng quản lý nghiệp vụ
    • Lịch làm việc
    • Công việc
    • Luồng công việc (Funnel)
    • Module dữ liệu
    • ABMS Smart Workflow - Quy tắc tự động
  • Các chức năng quản lý kinh doanh
    • Sản Phẩm
      • Hướng dẫn thao tác thực hiện quản lý Sản phẩm trên ABMS (P1)
      • Hướng dẫn thao tác thực hiện quản lý Sản phẩm trên ABMS (P2)
      • Hướng dẫn thao tác thực hiện quản lý Sản phẩm trên ABMS (P3)
    • Đơn Hàng
      • Tạo mới Danh sách lọc & Thêm mới Đơn hàng trên ABMS
      • Một số tính năng trong bản ghi Đơn hàng trên ABMS (P1)
      • Một số tính năng trong bản ghi Đơn hàng trên ABMS (P2)
  • Khách Hàng
    • Thêm mới và Theo dõi khách hàng trên ABMS
    • Tạo mới Danh sách Khách hàng và Tìm bản sao trên ABMS
    • Nhập và Xuất dữ liệu Khách hàng trên ABMS
    • Gửi email trực tiếp từ bản ghi Khách hàng trên ABMS
    • Gửi SMS và Phân cấp khách hàng trên ABMS
    • Thêm Sự kiện & Nhiệm vụ cho từng bản ghi Khách hàng trên ABMS
    • Một số tính năng hữu ích khác trên bản ghi Khách hàng
    • Thêm Danh bạ & Chuyển quyền sở hữu Khách hàng trên ABMS
  • Danh Bạ
    • Tạo mới Danh sách danh bạ – Tìm bản sao trên ABMS
    • Xuất – Nhập dữ liệu từ module Danh bạ trên ABMS
    • Thêm – Chỉnh sửa và Theo dõi bản ghi Danh bạ trên ABMS
    • Một số tính năng trên bản ghi Danh bạ – Phần 1
    • Một số tính năng Thêm mới trên bản ghi Danh bạ – Phần 2
    • Một số tính năng Thêm mới trên bản ghi Danh bạ – Phần 3
    • Một số tính năng trên bản ghi Danh bạ – Phần 4
  • Phễu bán hàng
  • Quản lý cơ hội bán hàng - Deal
    • Tạo mới và quản lý Cơ hội trên ABMS
    • Tạo mới danh sách cơ hội – Xuất/Nhập danh sách và tìm bản sao trên ABMS
    • Chỉnh sửa và Theo dõi Cơ hội trên ABMS
    • Chuyển đổi Cơ hội sang Hóa đơn, Báo giá, Hợp đồng nhanh chóng trên ABMS
    • Thêm mới hoạt động từ Cơ hội trên ABMS
    • Một số tính năng hữu ích khác từ Cơ hội trên ABMS
  • Hợp đồng nguyên tắc
    • Một số tính năng trên Hợp đồng nguyên tắc – Phần 1
    • Một số tính năng trên Hợp đồng nguyên tắc – Phần 2
  • Hóa đơn
    • Tạo mới danh sách lọc và hóa đơn trên ABMS
    • Thêm mới Tài liệu/ Bình luận/ Hạng mục bảo trì trong Hóa đơn trên ABMS
    • Hướng dẫn các thao tác quản lý và theo dõi Hóa đơn trên ABMS
    • Thêm Sự kiện/ Nhiệm vụ cho Hóa đơn trên ABMS
  • Giao hàng
  • Quản lý telesales
  • Các chức năng Marketing
    • Chiến Dịch Marketing
      • Tạo mới Danh sách, Nhập và Chia data trong Chiến dịch MKT
      • Tạo chiến dịch trên phần mềm ABMS
      • Một số thao tác trên Chiến dịch Marketing
      • Thêm Tiềm năng – Khách hàng – Cơ hội trên Chiến dịch MKT
    • Quản lý tiềm năng
      • Tạo Danh sách lọc, Thêm mới và Tìm bản sao Khách hàng Tiềm năng trên ABMS
      • Xuất – Nhập danh sách Khách hàng Tiềm năng trên ABMS
      • Thêm Sự kiện, Nhiệm vụ cho bản ghi Khách hàng Tiềm năng trên ABMS
      • Thực hiện Cuộc gọi, Gửi SMS và Email trên bản ghi Khách hàng Tiềm năng
      • Thêm Sản phẩm, Tài liệu trên bản ghi Khách hàng Tiềm năng
      • Chuyển Tiềm năng, Thêm bản ghi vào Chiến dịch Marketing
      • Chỉnh sửa – Bình luận trên bản ghi Khách hàng tiềm năng
    • Email marketing
    • SMS / Zalo Marketing
    • Facebook / Zalo Chat
    • Sự kiện
      • Chia sẻ
    • MKT Automation
      • Preview Template (Gửi Test)
      • Gắn Link vào Email bằng CKEditor để theo dõi tracking
      • Hướng dẫn sử dụng Module: Marketing Automation
      • Tạo mới Danh Sách – Xuất dữ liệu chiến dịch trên module MKT Automation
      • Nhập – Xuất dữ liệu chiến dịch trên module MKT Automation
      • Hướng dẫn deploy rabbit đối với Module: InnoMKTAuto
      • Thêm Tiềm Năng Mới & Gửi Email từ chiến dịch MKT Automation
      • Tạm Dừng, Sao Chép Chiến Dịch MKT Automation
      • Thêm chiến dịch mới trên module Marketing Automation
  • Các chức năng Dịch vụ khách hàng
    • Quản lý hỗ trợ ticket - yêu cầu - sự vụ
    • Quản lý dịch vụ định kỳ, bảo hành - bảo trì
    • Chương trình khách hàng thân thiết
    • Chăm sóc khách hàng cũ
  • Báo cáo và Dashboard
    • Các báo cáo mẫu
    • Báo cáo tùy chỉnh
    • Dashboard tùy chỉnh
  • Tích hợp
    • Tổng đài
    • API
  • CÁC CHỨC NĂNG DEV
    • Yêu Cầu
      • Cách tạo yêu cầu mới trên hệ thống ABMS
      • Xuất dữ liệu/ Tìm bản sao yêu cầu trên ABMS
      • Tạo mới danh sách lọc từ yêu cầu trên ABMS
      • Theo dõi tiến độ và gắn thẻ yêu cầu (Ticket) trên ABMS
      • Theo dõi và gửi duyệt Ticket trên ABMS
      • Gửi Email – Chỉnh sửa thông tin Ticket – Xuất PDF từ Yêu cầu trên ABMS
      • Sử dụng tính năng FAQ trên phần mềm ABMS
      • Hướng dẫn thêm sự kiện/nhiệm vụ từ yêu cầu trên ABMS
    • Báo Giá
      • Một số tính năng trên module Báo giá
      • Xuất – Nhập dữ liệu trên module Báo giá
      • Một số tính năng trên Bản ghi Báo giá – Phần 1
      • Một số tính năng trên Bản ghi Báo giá – Phần 2
  • ADMIN
    • Hạng Mục Bảo Trì
      • Xuất dữ liệu và gửi Email từ hạng mục bảo trì trên ABMS
      • Thêm thẻ & Tài liệu vào Hạng mục bảo trì trên ABMS
      • Các thao tác với Hạng mục bảo trì trên ABMS
      • Sao chép & Xuất PDF các Hạng mục bảo trì trên ABMS
    • Thanh Toán
      • Hướng dẫn thao tác sử dụng tính năng Thanh toán trên ABMS (P1)
      • Hướng dẫn thao tác sử dụng tính năng Thanh toán trên ABMS (P2)
      • Hướng dẫn thao tác sử dụng tính năng Thanh toán trên ABMS
    • Đơn Nhập Hàng
      • Tạo mới Đơn nhập hàng trên ABMS
      • Các thao tác quản lý Đơn nhập hàng trên ABMS (P2)
      • Các thao tác quản lý Đơn nhập hàng trên ABMS (P3)
      • Thêm mới Sự kiện/ Nhiệm vụ/ Tài liệu tại Đơn nhập hàng trên ABMS
  • Công Cụ
    • Lấy báo cáo ra dashboard
    • Câu Hỏi Thường Gặp (FAQ)
      • Tạo mới & Thêm danh sách lọc từ FAQ trên ABMS
      • Các thao tác thêm mới tài liệu vào FAQ trên ABMS
      • Các thao tác với FAQ trên ABMS – Theo dõi/ Chỉnh sửa/ Xóa
      • Hướng dẫn bình luận và sao chép FAQ trên ABMS
    • Tài Liệu
      • Hướng dẫn thao tác tạo mới Tài liệu trên ABMS
      • Tạo mới Folder trên Module Công cụ trên ABMS
      • Thêm mới Tài liệu trong Module Công cụ trên ABMS
      • Xem - Chỉnh sửa thông tin trên bản ghi Tài liệu
    • Mẫu SMS
      • Hướng dẫn thêm mới và chỉnh sửa mẫu SMS trên ABMS
    • Quản lý SMS
      • Hướng dẫn tạo mới danh sách lọc trong Quản lý SMS trên ABMS
      • Các thao tác hướng dẫn sử dụng tính năng Quản lý SMS trên ABMS
    • Báo Cáo
      • Hướng dẫn thêm mới và quản lý Báo cáo trên ABMS
    • Giao việc nhanh
      • Người dùng
    • Mẫu Email
      • Hướng dẫn thêm mới mẫu Email trên ABMS
    • Quản lý Email
      • Set up Email trên ABMS
      • Gửi và Tìm kiếm Email từ Module Công cụ trên ABMS
      • Hướng dẫn các thao tác Quản lý Email trên ABMS
    • Quản lý tổng đài
      • Tạo Danh sách lọc mới trên module Quản lý Tổng đài
      • Click to call gọi Outbound – Nhận cuộc gọi Inbound trên ABMS
      • Gọi theo chiến dịch trong module Chiến dịch MKT
      • Báo cáo cuộc gọi CDR, nghe ghi âm trên module Quản lý tổng đài
    • Thùng Rác
      • Hướng dẫn thao tác Recycle Bin (Thùng rác) trên ABMS
  • Một số module đặc biệt
    • Module Worklog
      • Người dùng
      • Hệ thống
    • Tạo và Quản lý Mối Quan Hệ Giữa Các Module trong Giao Diện
    • MultiSMTP - Gửi mail chọn người gửi
    • Chia lead cho nhân viên sales - ABDistribution
  • ABMS Common config
    • Nhóm Listview
Powered by GitBook
On this page
  • 1) Giới Thiệu
  • 2) Triển khai RabbitMQ
  • 2.1) Cài đặt RabbitMQ trên CentOS sử dụng yum
  • 2.2) Cài đặt RabbitMQ trên Ubutu
  • 2.3) Cấu hình trên Server Tùy Chỉnh (Ví dụ: Server 214)
  • Ứng dụng Navicat
  1. Các chức năng Marketing
  2. MKT Automation

Hướng dẫn deploy rabbit đối với Module: InnoMKTAuto

1) Giới Thiệu

RabbitMQ là một hệ thống xử lý thông điệp mã nguồn mở (open-source message broker) được sử dụng để truyền và xử lý thông điệp giữa các ứng dụng và dịch vụ. Đây là một giải pháp mạnh mẽ cho việc xây dựng các hệ thống phân tán, các ứng dụng liên quan đến xử lý thông điệp và nhiều tình huống khác.

Trong tài liệu này, chúng ta sẽ hướng dẫn cách triển khai RabbitMQ trên môi trường máy chủ Linux sử dụng gói cài đặt chính thống và tích hợp cơ bản với PHP

2) Triển khai RabbitMQ

2.1) Cài đặt RabbitMQ trên CentOS sử dụng yum

Bước 1: Cài đặt EPEL Repository

EPEL (Extra Packages for Enterprise Linux) là một kho lưu trữ chứa các gói bổ sung cho hệ điều hành dựa trên RHEL (Red Hat Enterprise Linux) như CentOS.

sudo yum install epel-release

Bước 2: Cài đặt Erlang

RabbitMQ yêu cầu Erlang để hoạt động, vì vậy bạn cần cài đặt Erlang trước.

sudo yum install erlang

Bước 3: Cài đặt RabbitMQ

Cài đặt RabbitMQ bằng yum:

sudo yum install rabbitmq-server

Bước 4: Khởi động và kích hoạt rabbitMQ

sudo systemctl start rabbitmq-server
sudo systemctl enable rabbitmq-server
  • Thêm người dùng mới:

    rabbitmqctl add_user <username> <password>
    
    username: tên đăng nhập
    password: mật khẩu đăng nhập
  • Gán quyền cho người dùng:

    rabbitmqctl set_user_tags <username> administrator
  • Gán quyền cho người dùng trên virtual host cụ thể :

    rabbitmqctl set_permissions -p "/" <username> ".*" ".*" ".*"

Bước 5: Tích hợp thư viện PHP amqp trên CentOS

sudo yum install php-amqp

2.2) Cài đặt RabbitMQ trên Ubutu

Bước 1: Cập nhật hệ thống:

sudo apt update 
sudo apt upgrade -y

Bước 2: Cài đặt Erlang

RabbitMQ chạy trên nền tảng Erlang, do đó bạn cần cài đặt Erlang trước.

sudo apt install erlang -y

Bước 3: Cài đặt RabbitMQ

sudo apt install rabbitmq-server -y

Bước 4: Quản lý RabbitMQ Dưới đây là một số lệnh quản lý cơ bản:

  • Khởi động rabbitmq:

    sudo systemctl start rabbitmq-server
  • Dừng rabbitmq:

    sudo systemctl stop rabbitmq-server
  • Khởi động cùng hệ thống:

    sudo systemctl enable rabbitmq-server

2.3) Cấu hình trên Server Tùy Chỉnh (Ví dụ: Server 214)

Bước 1: Chuẩn bị môi trường

Cài đặt Web Server và PHP

  • Hệ điều hành: CentOS

  • Cài đặt Apache và PHP: sudo yum install httpd php

sudo yum install php php-mysql

Bước 2: Cài đặt MySQL Server: Chạy lệnh sau để cài đặt MySQL Server trên CentOS:

sudo yum install mariadb-server

sudo yum install mariadb-server mariadb

Bước 3: Khởi động và Kích hoạt dịch vụ MySQL

sudo systemctl start mariadb
sudo systemctl enable mariadb

Sau khi khởi động dịch vụ, hãy chạy lệnh bảo mật để đặt mật khẩu cho tài khoản root của MySQL:

sudo mysql_secure_installation

Bước 4: Tạo cơ sở dữ liệu và người dùng Đăng nhập vào MySQL với tài khoản root:

sudo mysql -u root -p

Tạo cơ sở dữ liệu:

CREATE DATABASE your_db_name;

Tạo người dùng và cấp quyền cho cơ sở dữ liệu:

CREATE USER 'your_db_user'@'localhost' IDENTIFIED BY 'your_db_password';
GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_db_user'@'localhost';
FLUSH PRIVILEGES;

Sử dụng mysqli_connect trong PHP

Tạo tệp config.php hoặc tệp cấu hình tương tự để cấu hình kết nối đến cơ sở dữ liệu:

<?php 

define('DB_HOST', 'localhost');
define('DB_USER', 'root');
define('DB_PASSWORD', '');
define('DB_NAME', 'demo');

?>

Sử dụng Kết nối trong ứng dụng PHP

Sau khi đã cấu hình config.php và kết nối MySQL trong tệp cấu hình, bạn có thể sử dụng biến $conn để thực hiện các truy vấn và thao tác với cơ sở dữ liệu. Tạo index.php

<?php
// Include tệp cấu hình
require_once('config.php');

$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (!$conn) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}

// Thực hiện truy vấn
$sql = "SELECT * FROM abmsco_innomktauto";
$result = mysqli_query($conn, $sql);

// Kiểm tra và xử lý kết quả
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_assoc($result)) {
        echo "ID: " . $row['innomktautoid'] . " - Tên: " . $row['mkt_status'] . "<br>";
    }
} else {
    echo "Không có dữ liệu.";
}

// Đóng kết nối
mysqli_close($conn);
?>

Để tạo một cơ sở dữ liệu và bảng trong MySQL Tạo 1 file demo.php

<?php
require_once('config.php');

$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

if (!$conn) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}

// Bắt đầu giao dịch
mysqli_begin_transaction($conn);

// Tạo cơ sở dữ liệu
$createDbQuery = "CREATE DATABASE IF NOT EXISTS your_database_name";
if (!mysqli_query($conn, $createDbQuery)) {
    mysqli_rollback($conn);
    echo "Lỗi trong quá trình tạo cơ sở dữ liệu: " . mysqli_error($conn);
    exit;
}

// Chọn cơ sở dữ liệu để sử dụng
mysqli_select_db($conn, 'your_database_name');

// Tạo bảng trong cơ sở dữ liệu
$createTableQuery = "CREATE TABLE IF NOT EXISTS `your_table_name` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `column1` varchar(255) DEFAULT NULL,
    `column2` text,
    PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8";
if (!mysqli_query($conn, $createTableQuery)) {
    mysqli_rollback($conn);
    echo "Lỗi trong quá trình tạo bảng: " . mysqli_error($conn);
    exit;
}

// Nếu tất cả các truy vấn thành công, thực hiện giao dịch
mysqli_commit($conn);
echo "Tạo cơ sở dữ liệu và bảng thành công.";

mysqli_close($conn);
?>

Ứng dụng Navicat

Navicat là một ứng dụng quản lý và quản lý cơ sở dữ liệu rất phổ biến.

  1. Mở Navicat.

  2. Chọn "Connection" hoặc "Kết nối" từ thanh công cụ hoặc trong menu "File".

  3. Điền các thông tin kết nối như tên miền hoặc địa chỉ IP của máy chủ cơ sở dữ liệu, cổng, tên người dùng và mật khẩu.

  4. Chọn "Test Connection" hoặc "Kiểm tra kết nối" để kiểm tra xem kết nối có thành công hay không.

  5. Sau khi kết nối thành công, đặt tên cho kết nối và nhấn OK.

Query (Truy vấn) dữ liệu Navicat:

  1. Trong cửa sổ chính của Navicat, chọn "Query" hoặc "Truy vấn" từ thanh công cụ hoặc trong menu "Database".

  2. Viết truy vấn SQL vào khung trống.

  3. Nhấn nút "Execute" hoặc "Thực hiện" để thực thi truy vấn và xem kết quả.

Query SQL nhiều bảng và nhiều cột:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for abmsco_common_config
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_common_config`;
CREATE TABLE `abmsco_common_config` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `option_name` varchar(255) DEFAULT NULL,
  `option_value` text,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=2240 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_crmentity
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_crmentity`;
CREATE TABLE `abmsco_crmentity` (
  `crmid` int(19) NOT NULL,
  `smcreatorid` int(19) NOT NULL DEFAULT '0',
  `smownerid` int(19) NOT NULL DEFAULT '0',
  `modifiedby` int(19) NOT NULL DEFAULT '0',
  `setype` varchar(100) DEFAULT NULL,
  `description` mediumtext,
  `createdtime` datetime NOT NULL,
  `modifiedtime` datetime NOT NULL,
  `viewedtime` datetime DEFAULT NULL,
  `status` varchar(50) DEFAULT NULL,
  `version` int(19) NOT NULL DEFAULT '0',
  `presence` int(1) DEFAULT '1',
  `deleted` int(1) NOT NULL DEFAULT '0',
  `smgroupid` int(19) DEFAULT NULL,
  `source` varchar(100) DEFAULT NULL,
  `label` varchar(255) DEFAULT NULL,
  `recordno` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`crmid`) USING BTREE,
  KEY `crmentity_smcreatorid_idx` (`smcreatorid`) USING BTREE,
  KEY `crmentity_modifiedby_idx` (`modifiedby`) USING BTREE,
  KEY `crmentity_deleted_idx` (`deleted`) USING BTREE,
  KEY `crm_ownerid_del_setype_idx` (`smownerid`,`deleted`,`setype`) USING BTREE,
  KEY `abmsco_crmentity_labelidx` (`label`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto`;
CREATE TABLE `abmsco_innomktauto` (
  `innomktautoid` int(11) NOT NULL DEFAULT '0',
  `mkt_campain_name` varchar(128) DEFAULT NULL,
  `mkt_from_name` varchar(128) DEFAULT NULL,
  `mkt_sender` varchar(128) DEFAULT NULL,
  `mkt_schedule` timestamp NULL DEFAULT NULL,
  `mkt_batch_delivery` varchar(128) DEFAULT NULL,
  `mkt_status` varchar(128) DEFAULT NULL,
  `mkt_total_list` varchar(128) DEFAULT NULL,
  `mkt_sent` varchar(128) DEFAULT NULL,
  `mkt_unopened` varchar(128) DEFAULT NULL,
  `mtk_unique_open` varchar(128) DEFAULT NULL,
  `mkt_unsubcribed` varchar(128) DEFAULT NULL,
  `mkt_failed_to_send` varchar(128) DEFAULT NULL,
  `mkt_cvid` varchar(128) DEFAULT NULL,
  `mkt_relmodule` varchar(128) DEFAULT NULL,
  `mkt_fromserverid` varchar(128) DEFAULT NULL,
  `tags` varchar(1) DEFAULT NULL,
  `loai_chien_dich` varchar(255) DEFAULT '',
  `file_ghi_am_autocall` varchar(100) DEFAULT '',
  PRIMARY KEY (`innomktautoid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_action
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_action`;
CREATE TABLE `abmsco_innomktauto_action` (
  `actionid` int(11) NOT NULL,
  `set_field` text,
  `next_stage` varchar(255) DEFAULT NULL,
  `function` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`actionid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_campaign
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_campaign`;
CREATE TABLE `abmsco_innomktauto_campaign` (
  `innomktautoid` int(11) DEFAULT NULL,
  `mkt_campain_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_from_name` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_sender` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_schedule` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `mkt_batch_delivery` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_status` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_total_list` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_sent` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_unopened` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mtk_unique_open` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_unsubcribed` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_failed_to_send` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_cvid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_relmodule` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `mkt_fromserverid` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `tags` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `loai_chien_dich` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `file_ghi_am_autocall` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `crmid` int(19) DEFAULT NULL,
  `smcreatorid` int(19) DEFAULT NULL,
  `smownerid` int(19) DEFAULT NULL,
  `modifiedby` int(19) DEFAULT NULL,
  `setype` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `description` mediumtext COLLATE utf8_unicode_ci,
  `createdtime` datetime DEFAULT NULL,
  `modifiedtime` datetime DEFAULT NULL,
  `viewedtime` datetime DEFAULT NULL,
  `status` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,
  `version` int(19) DEFAULT NULL,
  `presence` int(1) DEFAULT NULL,
  `deleted` int(1) DEFAULT NULL,
  `smgroupid` int(1) DEFAULT NULL,
  `source` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `label` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
  `recordno` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

-- ----------------------------
-- Table structure for abmsco_innomktauto_client_activity
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_client_activity`;
CREATE TABLE `abmsco_innomktauto_client_activity` (
  `activityid` int(11) NOT NULL AUTO_INCREMENT,
  `innomktautoid` int(11) DEFAULT NULL,
  `client_id` int(11) DEFAULT NULL,
  `result` varchar(255) DEFAULT NULL,
  `time` datetime DEFAULT NULL,
  `content_id` int(11) DEFAULT NULL,
  PRIMARY KEY (`activityid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=109804 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_client_list
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_client_list`;
CREATE TABLE `abmsco_innomktauto_client_list` (
  `client_id` int(11) NOT NULL AUTO_INCREMENT,
  `module` varchar(255) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `crmid` int(19) DEFAULT NULL,
  `current_stage` varchar(255) DEFAULT NULL,
  `init_report` tinyint(4) DEFAULT NULL,
  PRIMARY KEY (`client_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=936260 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_client_report_v2
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_client_report_v2`;
CREATE TABLE `abmsco_innomktauto_client_report_v2` (
  `result_id` int(11) NOT NULL AUTO_INCREMENT,
  `client_id` int(11) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `content_type` varchar(50) DEFAULT NULL,
  `content_id` int(11) DEFAULT NULL,
  `stage_id` int(11) DEFAULT NULL,
  `status` varchar(50) DEFAULT NULL,
  `stage_result` varchar(255) DEFAULT NULL,
  `last_update_result` datetime DEFAULT NULL,
  `phase` int(11) DEFAULT NULL,
  `first_run` datetime DEFAULT NULL,
  `last_run` datetime DEFAULT NULL,
  `satiation_time` datetime DEFAULT NULL,
  `label` varchar(255) DEFAULT NULL,
  `object` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`result_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=110000 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_content
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_content`;
CREATE TABLE `abmsco_innomktauto_content` (
  `contentid` int(11) NOT NULL,
  `content` longtext,
  `content_type` varchar(255) DEFAULT NULL,
  `content_title` varchar(255) DEFAULT NULL,
  `content_fields` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`contentid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_pause_send_queue
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_pause_send_queue`;
CREATE TABLE `abmsco_innomktauto_pause_send_queue` (
  `send_queue_id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(255) DEFAULT NULL,
  `status` varchar(255) DEFAULT NULL,
  `innomktautoid` int(11) NOT NULL,
  `client_id` int(11) NOT NULL,
  `content_id` int(11) DEFAULT NULL,
  `current_stage` varchar(255) DEFAULT NULL,
  `last_run` datetime DEFAULT NULL,
  PRIMARY KEY (`send_queue_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_queue
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_queue`;
CREATE TABLE `abmsco_innomktauto_queue` (
  `queue_id` int(11) NOT NULL AUTO_INCREMENT,
  `last_run` datetime DEFAULT NULL,
  `function` varchar(255) DEFAULT NULL,
  `client_id` int(11) NOT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `current_stage` int(11) DEFAULT NULL,
  `stage_status` varchar(255) DEFAULT NULL,
  `action_id` int(11) DEFAULT NULL,
  `trigger_id` int(11) DEFAULT NULL,
  `content_id` int(11) DEFAULT NULL,
  `batch` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`queue_id`) USING BTREE,
  KEY `batch` (`batch`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1341281 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_report_autocall
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_report_autocall`;
CREATE TABLE `abmsco_innomktauto_report_autocall` (
  `result_id` int(11) NOT NULL,
  `client_id` int(11) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `digit` int(11) DEFAULT NULL,
  `callstatus` varchar(255) DEFAULT NULL,
  `pbxmanagerid` int(11) DEFAULT NULL,
  PRIMARY KEY (`result_id`) USING BTREE,
  CONSTRAINT `abmsco_innomktauto_report_autocall` FOREIGN KEY (`result_id`) REFERENCES `abmsco_innomktauto_client_report_v2` (`result_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_report_email
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_report_email`;
CREATE TABLE `abmsco_innomktauto_report_email` (
  `result_id` int(11) NOT NULL,
  `client_id` int(11) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `count_opened` int(11) DEFAULT '0',
  `first_opened` datetime DEFAULT NULL,
  `count_clicked` int(11) DEFAULT '0',
  `first_clicked` datetime DEFAULT NULL,
  `activityid` int(11) DEFAULT NULL,
  `detail_error` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`result_id`) USING BTREE,
  CONSTRAINT `abmsco_innomktauto_report_email` FOREIGN KEY (`result_id`) REFERENCES `abmsco_innomktauto_client_report_v2` (`result_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_report_global
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_report_global`;
CREATE TABLE `abmsco_innomktauto_report_global` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `client_id` int(11) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `last_update_result` datetime DEFAULT NULL,
  `total_clicked` int(11) DEFAULT '0',
  `total_opened` int(11) DEFAULT '0',
  `total_pressed` int(11) DEFAULT '0',
  `total_sent_mail` int(11) DEFAULT '0',
  `total_autocall` int(11) DEFAULT '0',
  `total_sent_sms` int(11) DEFAULT '0',
  PRIMARY KEY (`id`) USING BTREE,
  KEY `abmsco_innomktauto_report_global` (`innomktautoid`) USING BTREE,
  CONSTRAINT `abmsco_innomktauto_report_global` FOREIGN KEY (`innomktautoid`) REFERENCES `abmsco_innomktauto` (`innomktautoid`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=109984 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_report_setfield
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_report_setfield`;
CREATE TABLE `abmsco_innomktauto_report_setfield` (
  `result_id` int(11) NOT NULL,
  `client_id` int(11) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  PRIMARY KEY (`result_id`) USING BTREE,
  CONSTRAINT `abmsco_innomktauto_report_setfield` FOREIGN KEY (`result_id`) REFERENCES `abmsco_innomktauto_client_report_v2` (`result_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_report_setfield_copy1
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_report_setfield_copy1`;
CREATE TABLE `abmsco_innomktauto_report_setfield_copy1` (
  `result_id` int(11) NOT NULL,
  `client_id` int(11) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  PRIMARY KEY (`result_id`) USING BTREE,
  CONSTRAINT `abmsco_innomktauto_report_setfield_copy1_ibfk_1` FOREIGN KEY (`result_id`) REFERENCES `abmsco_innomktauto_client_report_v2` (`result_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_report_wf
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_report_wf`;
CREATE TABLE `abmsco_innomktauto_report_wf` (
  `result_id` int(11) NOT NULL,
  `client_id` int(11) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `stage_result` varchar(255) DEFAULT NULL,
  `last_update_result` datetime DEFAULT NULL,
  PRIMARY KEY (`result_id`) USING BTREE,
  CONSTRAINT `abmsco_innnomktauto_report_wf` FOREIGN KEY (`result_id`) REFERENCES `abmsco_innomktauto_client_report_v2` (`result_id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_send_queue
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_send_queue`;
CREATE TABLE `abmsco_innomktauto_send_queue` (
  `send_queue_id` int(11) NOT NULL AUTO_INCREMENT,
  `type` varchar(255) DEFAULT NULL,
  `status` varchar(255) DEFAULT NULL,
  `innomktautoid` int(11) NOT NULL,
  `client_id` int(11) NOT NULL,
  `content_id` int(11) DEFAULT NULL,
  `current_stage` varchar(255) DEFAULT NULL,
  `last_run` datetime DEFAULT NULL,
  PRIMARY KEY (`send_queue_id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_sendbulk_email
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_sendbulk_email`;
CREATE TABLE `abmsco_innomktauto_sendbulk_email` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `innomktautoid` int(11) DEFAULT NULL,
  `clientid` int(11) DEFAULT NULL,
  `current_stage` int(11) DEFAULT NULL,
  `module` varchar(255) DEFAULT NULL,
  `fromname` varchar(255) DEFAULT NULL,
  `fromemail` varchar(255) DEFAULT NULL,
  `toemail` varchar(255) DEFAULT NULL,
  `content` longtext,
  `subject` varchar(255) DEFAULT NULL,
  `batch` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5540 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_sendbulk_email_checkerror
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_sendbulk_email_checkerror`;
CREATE TABLE `abmsco_innomktauto_sendbulk_email_checkerror` (
  `email` varchar(255) NOT NULL,
  `client_id` int(11) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `timesend` datetime DEFAULT NULL,
  `contentid` varchar(255) DEFAULT NULL,
  KEY `innomktauto_sendbulk_emailerror` (`email`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_sendemail_smtp
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_sendemail_smtp`;
CREATE TABLE `abmsco_innomktauto_sendemail_smtp` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `batch` varchar(255) DEFAULT NULL,
  `innomktautoid` int(11) DEFAULT NULL,
  `client_id` int(11) DEFAULT NULL,
  `module` varchar(255) DEFAULT NULL,
  `content_id` int(11) DEFAULT NULL,
  `from_name` varchar(255) DEFAULT NULL,
  `sender` varchar(255) DEFAULT NULL,
  `to_email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=10780 DEFAULT CHARSET=utf8mb4;

-- ----------------------------
-- Table structure for abmsco_innomktauto_stage
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_stage`;
CREATE TABLE `abmsco_innomktauto_stage` (
  `stageid` int(11) NOT NULL,
  `stage_type` varchar(50) NOT NULL,
  `stage_name` varchar(255) NOT NULL,
  `innomktautoid` int(11) NOT NULL,
  `triggerid` int(11) NOT NULL,
  `actionid` int(11) NOT NULL,
  `contentid` int(11) NOT NULL,
  `stage_label` varchar(255) NOT NULL,
  `stage_presence` int(11) DEFAULT NULL,
  `stage_limit_time` varchar(50) DEFAULT NULL,
  PRIMARY KEY (`stageid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_stage_result
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_stage_result`;
CREATE TABLE `abmsco_innomktauto_stage_result` (
  `stage_result` varchar(255) DEFAULT NULL,
  `content_type` varchar(255) DEFAULT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktauto_trigger
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_trigger`;
CREATE TABLE `abmsco_innomktauto_trigger` (
  `triggerid` int(11) NOT NULL,
  `stage_result_condition` varchar(255) DEFAULT NULL,
  `condition` text,
  `delaytime` varchar(255) DEFAULT NULL,
  `delaytimetype` varchar(255) DEFAULT NULL,
  `last_run` datetime DEFAULT NULL,
  `function` varchar(255) DEFAULT NULL,
  `ready_time` datetime DEFAULT NULL,
  PRIMARY KEY (`triggerid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Table structure for abmsco_innomktauto_unsubcribes
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktauto_unsubcribes`;
CREATE TABLE `abmsco_innomktauto_unsubcribes` (
  `crmid` int(11) NOT NULL,
  `key` text,
  `status` int(11) DEFAULT NULL,
  `innomktautoid` int(11) NOT NULL,
  PRIMARY KEY (`crmid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

-- ----------------------------
-- Table structure for abmsco_innomktautocf
-- ----------------------------
DROP TABLE IF EXISTS `abmsco_innomktautocf`;
CREATE TABLE `abmsco_innomktautocf` (
  `innomktautoid` int(11) NOT NULL,
  `unsubcribes` int(10) DEFAULT NULL,
  PRIMARY KEY (`innomktautoid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

SET FOREIGN_KEY_CHECKS = 1;

Sau khi chạy xong SQL ở trên ( chạy trong ứng dụng Navicat ) thì kết quả như hình dưới

Bước 6: Chạy thực nghiệm RabbitMQ ( Cả 2 server )

  1. Tạo một tập tin PHP mới: Tạo một tập tin PHP mới trong project, ví dụ index.php.

  2. Thêm phần thư viện AMQP vào composer.json

Mở tệp composer.json bằng trình chỉnh sửa văn bản và thêm phần "require" với thư viện php-amqp:

{
  "require": {
    "maximebf/debugbar": "^1.15",
    "firebase/php-jwt": "^5.4",
    "google/apiclient": "^2.11",
    "phpoffice/phpspreadsheet": "1.22",
    "alhimik1986/php-excel-templator": "^1.0",
    "phpoffice/phpword": "^0.18.2",
    "cmixin/business-time": "^1.11",
    "ezyang/htmlpurifier": "4.13",
    "google/cloud-storage": "^1.30",
    "elasticsearch/elasticsearch": "^7.16.2",
    "guzzlehttp/guzzle": "^7.4",
    "slim/psr7": "^1.5",
    "php-amqplib/php-amqplib": "^3.5",
    "egulias/email-validator": "^2.1"
  }
}

Mở terminal chạy lệnh: composer update

  1. Demo code:

<?php
require_once 'vendor/autoload.php';
 
use PhpAmqpLib\Connection\AMQPStreamConnection;
use PhpAmqpLib\Message\AMQPMessage;
 
$connection = new AMQPStreamConnection('10.0.1', 5672, 'demo', 'demo');
$channel = $connection->channel();
 
$queueName = 'hello';
 
$channel->queue_delete($queueName);
 
$channel->queue_declare($queueName, false, false, false, false);
 
$messageBody = 'Hello, RabbitMQ!';
$message = new AMQPMessage($messageBody);
 
$channel->basic_publish($message, '', $queueName);
 
echo " [x] Sent '$messageBody'\n";
 
$channel->close();
$connection->close();
?>

2.4) Chạy thực nghiệm RabbitMQ đối với nhiều khách hàng A) Ở server 212 Mở terminal chạy lệnh: php modules/InnoMKTAuto/cron/rabbitmq/portal_data.php 3vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH database_demo Trong đó unique_com_id tương ứng với mỗi khách hàng khác nhau Ví dụ: vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH Tên database cần truyền vào ở server 212: database_demo B) Ở server 214: Mở terminal chạy lệnh:

php email/queue_fifo.php 3vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH database_demo_rabbitmq

php email/sendgrid.php 3vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH database_demo_rabbitmq

php email/smtp.php 3vgLMFtlivmpAnEIfsmOgPvtZ2nI287ttc67iphH database_demo_rabbitmq

PreviousNhập – Xuất dữ liệu chiến dịch trên module MKT AutomationNextThêm Tiềm Năng Mới & Gửi Email từ chiến dịch MKT Automation

Last updated 1 year ago