PluginProbe ʕ •ᴥ•ʔ
AI Engine – The Chatbot, AI Framework & MCP for WordPress / 1.3.58
AI Engine – The Chatbot, AI Framework & MCP for WordPress v1.3.58
3.5.9 3.5.8 3.5.7 3.5.6 3.5.5 3.5.4 3.5.3 3.5.2 3.5.1 3.5.0 3.4.9 3.4.8 3.4.7 0.2.1 1.6.91 0.2.2 1.6.92 0.2.3 1.6.93 0.2.4 1.6.94 0.2.5 1.6.95 0.2.6 1.6.96 0.2.7 1.6.97 0.2.8 1.6.98 0.2.9 1.6.99 0.3.0 1.7.0 0.3.1 1.7.1 0.3.2 1.7.2 0.3.3 1.7.3 0.3.4 1.7.4 0.3.5 1.7.5 0.3.6 1.7.6 0.4.0 1.7.7 0.4.1 1.7.8 0.4.2 1.7.9 0.4.3 1.8.0 0.4.4 1.8.1 0.4.5 1.8.2 0.4.6 1.8.3 0.4.7 1.8.4 0.4.8 1.8.5 0.4.9 1.8.6 0.5.0 1.8.7 0.5.1 1.8.8 0.5.2 1.8.9 0.5.3 1.9.0 0.5.4 1.9.1 0.5.5 1.9.2 0.5.6 1.9.3 0.5.7 1.9.4 0.5.8 1.9.5 0.5.9 1.9.6 0.6.0 1.9.7 0.6.1 1.9.8 0.6.2 1.9.81 0.6.3 1.9.82 0.6.4 1.9.83 0.6.5 1.9.84 0.6.6 1.9.85 0.6.7 1.9.86 0.6.8 1.9.87 0.6.9 1.9.88 0.7.0 1.9.89 0.7.1 1.9.90 0.7.2 1.9.91 0.7.3 1.9.92 0.7.4 1.9.93 0.7.5 1.9.94 0.7.6 1.9.95 0.7.7 1.9.96 0.7.8 1.9.97 0.7.9 1.9.98 0.8.0 1.9.99 0.8.1 2.0.0 0.8.2 2.0.1 0.8.3 2.0.2 0.8.4 2.0.3 0.8.5 2.0.4 0.8.6 2.0.5 0.8.7 2.0.6 0.8.8 2.0.7 0.8.9 2.0.8 0.9.0 2.0.9 0.9.2 2.1.0 0.9.3 2.1.1 0.9.4 2.1.2 0.9.5 2.1.3 0.9.6 2.1.4 0.9.7 2.1.5 0.9.8 2.1.6 0.9.81 2.1.7 0.9.82 2.1.8 0.9.83 2.1.9 0.9.84 2.2.0 0.9.85 2.2.1 0.9.86 2.2.2 0.9.87 2.2.3 0.9.88 2.2.4 0.9.89 2.2.5 0.9.9 2.2.51 0.9.91 2.2.52 0.9.92 2.2.53 0.9.93 2.2.54 0.9.94 2.2.56 0.9.95 2.2.57 0.9.96 2.2.6 0.9.97 2.2.60 0.9.98 2.2.61 0.9.99 2.2.62 1.0.0 2.2.63 1.0.01 2.2.70 1.0.1 2.2.80 1.0.2 2.2.81 1.0.3 2.2.90 1.0.4 2.2.91 1.0.5 2.2.92 1.0.6 2.2.93 1.0.7 2.2.94 1.0.8 2.2.95 1.0.9 2.3.0 1.1.0 2.3.1 1.1.1 2.3.2 1.1.2 2.3.3 1.1.3 2.3.4 1.1.4 2.3.5 1.1.5 2.3.6 1.1.6 2.3.7 1.1.7 2.3.8 1.1.8 2.3.9 1.1.9 2.4.0 1.2.0 2.4.1 1.2.1 2.4.2 1.2.2 2.4.3 1.2.21 2.4.4 1.2.3 2.4.5 1.2.30 2.4.6 1.3.0 2.4.7 1.3.1 2.4.8 1.3.2 2.4.9 1.3.3 2.5.0 1.3.31 2.5.1 1.3.32 2.5.2 1.3.33 2.5.3 1.3.34 2.5.4 1.3.35 2.5.5 1.3.36 2.5.6 1.3.37 2.5.7 1.3.38 2.5.8 1.3.39 2.5.9 1.3.40 2.6.0 1.3.41 2.6.1 1.3.42 2.6.2 1.3.43 2.6.3 1.3.44 2.6.5 1.3.45 2.6.6 1.3.46 2.6.7 1.3.47 2.6.8 1.3.48 2.6.9 1.3.49 2.7.0 1.3.50 2.7.1 1.3.51 2.7.2 1.3.52 2.7.3 1.3.53 2.7.4 1.3.54 2.7.5 1.3.56 2.7.6 1.3.57 2.7.7 1.3.58 2.7.8 1.3.59 2.7.9 1.3.60 2.8.0 1.3.61 2.8.1 1.3.62 2.8.2 1.3.63 2.8.3 1.3.64 2.8.4 1.3.65 2.8.5 1.3.66 2.8.6 1.3.67 2.8.7 1.3.68 2.8.8 1.3.69 2.8.9 1.3.70 2.9.0 1.3.71 2.9.1 1.3.72 2.9.2 1.3.73 2.9.3 1.3.74 2.9.4 1.3.75 2.9.5 1.3.76 2.9.6 1.3.77 2.9.7 1.3.78 2.9.8 1.3.79 2.9.9 1.3.80 3.0.0 1.3.81 3.0.1 1.3.82 3.0.2 1.3.83 3.0.3 1.3.84 3.0.4 1.3.85 3.0.5 1.3.86 3.0.6 1.3.87 3.0.7 1.3.88 3.0.8 1.3.89 3.0.9 1.3.90 3.1.0 1.3.91 3.1.1 1.3.92 3.1.2 1.3.93 3.1.3 1.3.94 3.1.4 1.3.95 3.1.5 1.3.96 3.1.6 1.3.97 3.1.7 1.3.98 3.1.8 1.3.99 3.1.9 1.4.0 3.2.0 1.4.1 3.2.1 1.4.2 3.2.2 1.4.3 3.2.3 1.4.4 3.2.4 1.4.5 3.2.5 1.4.6 3.2.6 1.4.7 3.2.7 1.4.8 3.2.8 1.4.9 3.2.9 1.5.0 3.3.0 1.5.1 3.3.1 1.5.2 3.3.2 1.5.3 3.3.3 1.5.4 3.3.4 1.5.5 3.3.5 1.5.6 3.3.6 1.5.7 3.3.7 1.5.8 3.3.8 1.5.9 3.3.9 1.6.0 3.4.0 1.6.1 3.4.1 1.6.2 3.4.2 1.6.3 3.4.3 1.6.5 3.4.4 1.6.51 3.4.5 1.6.52 3.4.6 1.6.53 1.6.54 1.6.55 1.6.56 1.6.57 1.6.58 1.6.59 1.6.60 1.6.61 1.6.62 1.6.63 1.6.64 1.6.65 1.6.66 1.6.67 1.6.68 trunk 1.6.69 0.0.1 1.6.70 0.0.2 1.6.71 0.0.3 1.6.72 0.0.4 1.6.73 0.0.5 1.6.74 0.0.6 1.6.75 0.0.7 1.6.76 0.0.8 1.6.77 0.0.9 1.6.78 0.1.0 1.6.79 0.1.1 1.6.81 0.1.2 1.6.82 0.1.3 1.6.83 0.1.4 1.6.84 0.1.5 1.6.85 0.1.6 1.6.86 0.1.7 1.6.87 0.1.8 1.6.88 0.1.9 1.6.89 0.2.0 1.6.90
ai-engine / classes / modules / chatbot_chats.php
ai-engine / classes / modules Last commit date
assistants.php 3 years ago chatbot-chatgpt.css 3 years ago chatbot-chatgpt.scss 3 years ago chatbot.php 3 years ago chatbot_chats.php 3 years ago chatbot_logs.php 3 years ago
chatbot_chats.php
153 lines
1 <?php
2
3 class Meow_MWAI_Modules_Chatbot_Chats {
4 private $wpdb = null;
5 private $table_chats = null;
6 private $db_check = false;
7 private $namespace = 'ai-engine/v1';
8
9 public function __construct() {
10 global $wpdb;
11 $this->wpdb = $wpdb;
12 $this->table_chats = $wpdb->prefix . 'mwai_chats';
13 add_filter( 'mwai_chatbot_reply', [ $this, 'chatbot_reply' ], 10, 3 );
14 add_action( 'rest_api_init', array( $this, 'rest_api_init' ) );
15 }
16
17 public function rest_api_init() {
18 register_rest_route( $this->namespace, '/chats', array(
19 'methods' => 'POST',
20 'callback' => array( $this, 'rest_chats' ),
21 'permission_callback' => '__return_true'
22 ) );
23 }
24
25 function rest_chats( $request ) {
26 try {
27 $params = $request->get_json_params();
28 $offset = $params['offset'];
29 $limit = $params['limit'];
30 $filters = $params['filters'];
31 $sort = $params['sort'];
32 $chats = $this->chats_query( [], $offset, $limit, $filters, $sort );
33 return new WP_REST_Response([ 'success' => true, 'total' => $chats['total'], 'chats' => $chats['rows'] ], 200 );
34 }
35 catch ( Exception $e ) {
36 return new WP_REST_Response([ 'success' => false, 'message' => $e->getMessage() ], 500 );
37 }
38 }
39
40 function chats_query( $chats = [], $offset = 0, $limit = null, $filters = null, $sort = null ) {
41 $offset = !empty( $offset ) ? intval( $offset ) : 0;
42 $limit = !empty( $limit ) ? intval( $limit ) : 100;
43 $filters = !empty( $filters ) ? $filters : [];
44 $sort = !empty( $sort ) ? $sort : [ "accessor" => "time", "by" => "desc" ];
45 $query = "SELECT * FROM $this->table_chats";
46
47 // Filters
48 $where = array();
49 if ( isset( $filters['from'] ) ) {
50 $where[] = "time >= '" . esc_sql( $filters['from'] ) . "'";
51 }
52 if ( isset( $filters['to'] ) ) {
53 $where[] = "time <= '" . esc_sql( $filters['to'] ) . "'";
54 }
55 if ( count( $where ) > 0 ) {
56 $query .= " WHERE " . implode( " AND ", $where );
57 }
58
59 // Count based on this query
60 $chats['total'] = $this->wpdb->get_var( "SELECT COUNT(*) FROM ($query) AS t" );
61
62 // Order by
63 $query .= " ORDER BY " . esc_sql( $sort['accessor'] ) . " " . esc_sql( $sort['by'] );
64
65 // Limits
66 if ( $limit > 0 ) {
67 $query .= " LIMIT $offset, $limit";
68 }
69
70 $chats['rows'] = $this->wpdb->get_results( $query, ARRAY_A );
71 return $chats;
72 }
73
74 function chatbot_reply( $rawText, $query, $params ) {
75 global $mwai_core;
76 $userIp = $mwai_core->get_ip_address();
77 $userId = $mwai_core->get_user_id();
78 $chatClientId = isset( $params['clientId'] ) ? $params['clientId'] : $query->session;
79 $ssChatId = hash( 'sha256', $userIp . $userId . $chatClientId );
80 $this->check_db();
81 $chat = $this->wpdb->get_row( $this->wpdb->prepare( "SELECT * FROM $this->table_chats WHERE chatId = %s", $ssChatId ) );
82 if ( $chat ) {
83 $chat->messages = json_decode( $chat->messages );
84 $chat->messages[] = [
85 'type' => 'user',
86 'text' => $params['rawInput']
87 ];
88 $chat->messages[] = [
89 'type' => 'ai',
90 'text' => $rawText
91 ];
92 $chat->messages = json_encode( $chat->messages );
93 $chat->updated = wp_date( 'Y-m-d H:i:s' );
94 $this->wpdb->update( $this->table_chats, (array) $chat, [ 'id' => $chat->id ] );
95 }
96 else {
97 $chat = [
98 'chatId' => $ssChatId,
99 'messages' => json_encode( [
100 [
101 'type' => 'user',
102 'text' => $params['rawInput']
103 ],
104 [
105 'type' => 'ai',
106 'text' => $rawText
107 ]
108 ] ),
109 'extra' => json_encode( [
110 'ip' => $userIp,
111 'userId' => $userId,
112 'session' => $query->session,
113 'model' => $query->model,
114 'temperature' => $query->temperature
115 ] )
116 ];
117 $this->wpdb->insert( $this->table_chats, $chat );
118 }
119 return $rawText;
120 }
121
122 function check_db() {
123 if ( $this->db_check ) {
124 return true;
125 }
126 $this->db_check = !( strtolower(
127 $this->wpdb->get_var( "SHOW TABLES LIKE '$this->table_chats'" ) ) != strtolower( $this->table_chats )
128 );
129 if ( !$this->db_check ) {
130 $this->create_db();
131 $this->db_check = !( strtolower(
132 $this->wpdb->get_var( "SHOW TABLES LIKE '$this->table_chats'" ) ) != strtolower( $this->table_chats )
133 );
134 }
135 return $this->db_check;
136 }
137
138 function create_db() {
139 $charset_collate = $this->wpdb->get_charset_collate();
140 $sqlLogs = "CREATE TABLE $this->table_chats (
141 id BIGINT(20) NOT NULL AUTO_INCREMENT,
142 chatId VARCHAR(64) NOT NULL NULL,
143 messages TEXT NOT NULL NULL,
144 extra TEXT NOT NULL NULL,
145 created DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
146 updated DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
147 PRIMARY KEY (id)
148 ) $charset_collate;";
149 require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
150 dbDelta( $sqlLogs );
151 }
152
153 }