Plugin Directory

Changeset 3429109


Ignore:
Timestamp:
12/29/2025 01:08:20 PM (8 weeks ago)
Author:
onwebchat_dev
Message:

Release 3.5.0 with WooCommerce integration and product sync

Location:
onwebchat
Files:
9 added
9 edited

Legend:

Unmodified
Added
Removed
  • onwebchat/trunk/onwebchat.php

    r3281809 r3429109  
    88Plugin Name: onWebChat - Live Chat & AI Chatbot
    99Plugin URI: https://www.onwebchat.com/wordpress-live-chat-plugin.php
    10 Description: Empower visitors with real-time human chat and integrated AI chatbots. onWebChat Live Chat delivers instant responses, smoother interactions, and 24/7 availability - improving engagement, satisfaction, and conversions.
     10Description: Empower visitors with real-time human chat and integrated AI chatbots. onWebChat Live Chat delivers instant responses, smoother interactions, and 24/7 availability - improving engagement, satisfaction, and conversions. Includes WooCommerce product sync for AI training.
    1111Author: onWebChat
    12 Version: 3.4.1
     12Version: 3.5.0
    1313Author URI: https://www.onwebchat.com
    1414*/
    1515
     16/**
     17 * WooCommerce Testing Mode Configuration
     18 * Set to true for local development (127.0.0.1:81)
     19 * Set to false for production (www.onwebchat.com)
     20 */
     21if (!defined('ONWEBCHAT_WC_TESTING_MODE')) {
     22    define('ONWEBCHAT_WC_TESTING_MODE', false);
     23}
    1624
    1725/* ---------------------------------------------------- *
     
    2331define('ONWEBCHAT_SERVER_URL','https://www.onwebchat.com/get-chatid.php');
    2432
     33// Load WooCommerce sync module if WooCommerce is active
     34add_action('plugins_loaded', function () {
     35    if (class_exists('WooCommerce')) {
     36        require_once __DIR__ . '/includes/woocommerce-sync.php';
     37    }
     38});
    2539
    2640// add styles
     
    3549// define the settings
    3650add_action('admin_init','onwebchat_register_setttings');
     51
     52// handle form submissions early (before any output)
     53add_action('admin_init', 'onwebchat_handle_all_form_submissions');
    3754
    3855
     
    5976
    6077function onwebchat_init_menu_page() {
    61 
    62 
    63     $options = get_option('onwebchat_plugin_option');
    64     $chatId = $options['text_string'];
    65 
    66     $isConnected = false;
    67     if($chatId !="") {
    68         $isConnected = true;
    69     }
    70 
    71     $isSecondPage = false;
    72 
    73 
    74     /*****************************************************************
    75      * Ask server for chatId
    76      *****************************************************************/
    77     if ( isset( $_POST["action"] ) && $_POST["action"] == "login" ) {
    78 
    79 
    80         // the following lines are added to verify a correct security nonce(token) by using "wp_verify_nonce()"
    81         if (! isset($_POST['_wpnonce'])
    82          || ! wp_verify_nonce( $_POST['_wpnonce'], 'on_web_chat_nonce')){
    83             print 'Sorry, your nonce did not verify.';
    84             exit;
    85          }
    86 
    87         $options = get_option('onwebchat_plugin_option');
    88         $chatId = $options['text_string'];
    89         //****************************
    90 
    91         // get username, password and chatId
    92 
    93        
    94         $userName = isset($_POST["onWebChatUser"]) ? sanitize_text_field($_POST["onWebChatUser"]) : '';
    95         $userPass = isset($_POST["onWebChatPass"]) ? sanitize_text_field($_POST["onWebChatPass"]) : '';
    96 
    97         $chatId = isset($_POST["chatId"]) ? sanitize_text_field($_POST["chatId"]) : '';
    98 
    99         $pagesSelect = isset($_POST["pages-select"]) ? absint($_POST["pages-select"]) : 1;
    100         $showOnPages = isset($_POST["showonpages"]) ? sanitize_text_field($_POST["showonpages"]) : '';
    101         $hideOnPages = isset($_POST["hideonpages"]) ? sanitize_text_field($_POST["hideonpages"]) : '';
    102         $onwebchatApi = isset($_POST["onwebchat-api"]) ? wp_kses_post($_POST["onwebchat-api"]) : '';
    103 
    104 
    105 
    106         if(isChatIdValid($chatId)) {
    107 
    108             if ( isset($_POST["isSecondPage"])){
    109                 $isSecondPage = $_POST["isSecondPage"];
    110             }
    111 
    112             //----------- update chatId option ------------
    113             $my_options = get_option('onwebchat_plugin_option');
    114 
    115             $my_options['text_string'] = $chatId;
    116 
    117             //Update entire array
    118             update_option('onwebchat_plugin_option', $my_options);
    119             //-----------------------------------------------
    120 
    121             // remove user email from db
    122             if(!$isSecondPage) {
    123                 update_option( 'onwebchat_plugin_option_user', '');
    124                 update_option( 'onwebchat_plugin_option_pages_select', 1);
    125 
    126             } else {
    127 
    128                 update_option( 'onwebchat_plugin_option_pages_select', $pagesSelect);
    129 
    130                 if ($pagesSelect==2){
    131                     update_option( 'onwebchat_plugin_option_show_pages', $showOnPages);
    132                 } else if ($pagesSelect==3){
    133                     update_option( 'onwebchat_plugin_option_hide_pages', $hideOnPages);
    134                 }
    135 
    136                 //TODO update textarea
    137                 update_option( 'onwebchat_plugin_option_api_code', $onwebchatApi);
    138             }
    139 
    140             // move to next page
    141             print('<script>window.location.href="admin.php?page=onwebchat_settings"</script>');
    142 
    143         } else {
    144 
    145             // save username at options
    146             update_option( 'onwebchat_plugin_option_user', $userName );
    147 
    148             // ask server for chatId
    149             $response = wp_remote_post(ONWEBCHAT_SERVER_URL, array(
    150                 'method' => 'POST',
    151                 'timeout' => 45,
    152                 'redirection' => 5,
    153                 'httpversion' => '1.0',
    154                 'blocking' => true,
    155                 'headers' => array(),
    156                 'body' => array( 'email' => $userName, 'pass' => $userPass ),
    157                 'cookies' => array()
    158             ));
    159 
    160 
    161        
    162 
    163             if ( is_wp_error( $response ) ) {
    164                 $error_message = $response->get_error_message();
    165              
    166 
    167             } else {
    168 
    169            
    170                 // If no chatId returned
    171                 if($response['body'] == '') {
    172                     // display an error for wrong credentials
    173                      onwebchat_login_error(true);
    174                      
    175                 } else {
    176 
    177                     //----------- update chatId
    178                     $my_options = get_option('onwebchat_plugin_option');
    179 
    180                     $my_options['text_string'] = $response['body'];
    181 
    182                     update_option('onwebchat_plugin_option', $my_options);
    183                     update_option( 'onwebchat_plugin_option_pages_select', 1);
    184                     //--------------------------------------------
    185 
    186                     // move to next page
    187                     print('<script>window.location.href="admin.php?page=onwebchat_settings"</script>');
    188                 }
    189             }
    190         }
    191 
    192         $m_option_hide = false;
    193         if(isset($_POST['onwebchat_plugin_option_hide'])) {
    194             $m_option_hide = $_POST['onwebchat_plugin_option_hide'];
    195         }
    196 
    197         update_option('onwebchat_plugin_option_hide', $m_option_hide); //an einai stin proti selida tote to kanei keno (opote by default den einai epilegmeno)
    198 
    199     }
    200 
    201     //********************************************************************
    202 
    203 
    204     /*********************************************************************
    205      * Disconnect account
    206      *********************************************************************/
    207     if( isset($_GET["action"]) && $_GET["action"] == "deactivate" && $isConnected) {
    208         $isConnected = false;
    209 
    210         $my_options = get_option('onwebchat_plugin_option');
    211 
    212         $my_options['text_string'] = '';
    213 
    214         update_option('onwebchat_plugin_option', $my_options);
    215         update_option( 'onwebchat_plugin_option_pages_select', 1);
    216 
    217         $chatIdOption = get_option('onwebchat_plugin_option');
    218         $chatId = $chatIdOption['text_string'];
    219 
    220         print('<script>window.location.href="admin.php?page=onwebchat_settings"</script>');
    221 
    222     }
    223     //***********************************************************************
    224 
    225 
    226 
    227     ?>
    228     <div>
    229 
    230 
    231 
    232        
    233         <h1 style="font-weight: 400;margin-top:34px">onWebChat <?php ($isConnected == true) ? print 'Settings' :  print 'Activation'; ?> </h1>
    234 
    235         <form action="admin.php?page=onwebchat_settings" method="post">
    236             <input type="hidden" name="action" value="login">
    237             <?php
    238 
    239             //create nonce(token)
    240             wp_nonce_field('on_web_chat_nonce');
    241 
    242             // Login Page
    243             if($isConnected != true) {
    244 
    245                 $chatId = get_option( 'onwebchat_plugin_option' );
    246                 $chatId = $chatId['text_string'];
    247                 ?>
    248 
    249                 <hr class="small-hr2">
    250 
    251                 <h3 class="header-1">Connect with your onWebChat account</h3>
    252 
    253 
    254 
    255                 <div class="username-div">
    256                     <!-- sanitize user-provided parameter -->
    257                     <strong>Email: </strong><input class="username-text-field" type="text" name="onWebChatUser" value="<?php echo esc_attr(get_option( 'onwebchat_plugin_option_user' )); ?>"/>
    258                 </div>
    259 
    260                 <div class="password-div">
    261                     <strong>Password: </strong><input class="password-text-field" type="password" name="onWebChatPass" value="<?php echo get_option( 'onWebChatPass' ); ?>"/>
    262                 </div>
    263 
    264 
    265                 <div style="width: 560px; height: 10px; border-bottom: 1px solid #bfbfbf; text-align: center; margin-top:30px">
    266                     <span class="header-or" style="color:#656565;font-size: 21px; background-color: #f1f1f1; padding: 0 10px;">
    267                    
    268                         OR
    269                    
    270                     </span>
    271                 </div>
    272 
    273 
    274                 <h3 class="header-2">Paste your onWebChat Chat Id</h3>
    275                 <div class="password-div">
    276                     <strong>Chat Id:</strong> <input class="chatid-text-field" type="text" name="chatId" value="<?php echo $chatId; ?>"/>
    277                 </div>
    278 
    279                 <hr class="small-hr2">
    280 
    281                 <div class="new-account-link">
    282                     Don’t have an onWebChat account yet? <a href="https://www.onwebchat.com/signup.php" target="_blank">Create one here</a> to get started.
    283                 </div>
    284 
    285                 <?php
    286 
    287                     $html = '<input class="button action" style="margin-left: 230px;" type="submit" value="Activate"/>';
    288                     echo $html;
    289             }
    290 
    291             // 2nd Page
    292             else {
    293                 $options = get_option('onwebchat_plugin_option_user');
    294 
    295                 // display user email
    296                 if($options!=''){
    297                     //sanitize user-provided parameter
    298                     $email = esc_html($options);
    299                     $html = '<br><h3 class="header-1-p2">Activated for onWebChat account: </h3>';
    300                     $html .= "<strong class='account-id'>$email</strong> ";
    301                 }
    302 
    303                 // display chatId
    304                 else {
    305                     $chatId = get_option( 'onwebchat_plugin_option' );
    306                     $chatId = $chatId['text_string'];
    307                     $html = '<br><h3 class="header-1-p2">Activated for onWebChat Chat Id: </h3>';
    308                     $html .= "<strong class='account-id'>$chatId</strong> ";
    309                 }
    310                 $html .= ' <a href="admin.php?page=onwebchat_settings&amp;action=deactivate">Unlink account</a>';
    311                 //$html .= ' <div class="admin-login-info"> <span>*</span> To connect to onWebChat dashboard click <a target="_blank" href="https://www.onwebchat.com/login.php">here</a> </div>';
    312                 echo $html;
    313 
    314                 $options = get_option('onwebchat_plugin_option_hide');
    315 
    316                 $chatId = get_option( 'onwebchat_plugin_option' );
    317                 $chatId = $chatId['text_string'];
    318 
    319                 // get correct value
    320                 $onwebchatApi = get_option('onwebchat_plugin_option_api_code');
    321                 $onwebchatApi = str_replace('\\','',$onwebchatApi);
    322                 ?>
    323                
    324 
    325                 <br><br><br>
    326 
    327                 <div class="hide-div">
    328                     <select id="pages-select" name="pages-select" onchange="onwc_select_change()">
    329                         <option value="1" <?php selected( get_option('onwebchat_plugin_option_pages_select'), 1 ); ?>>Show the chat widget on all pages</option>
    330                         <option value="2" <?php selected( get_option('onwebchat_plugin_option_pages_select'), 2 ); ?>>Show the chat widget only on selected pages:</option>
    331                         <option value="3" <?php selected( get_option('onwebchat_plugin_option_pages_select'), 3 ); ?>>Hide the chat widget on selected pages:</option>
    332                         <option value="4" <?php selected( get_option('onwebchat_plugin_option_pages_select'), 4 ); ?>>Hide the chat widget on all pages</option>
    333                     </select>
    334                 </div>
    335 
    336                 <div id="onwc_show_on_pages_div" style="display:none">
    337                     <input id="showonpages" name="showonpages" class="showhidepages" type="text" value="<?php echo esc_attr(get_option( 'onwebchat_plugin_option_show_pages' )); ?>" /><a href="#" style="text-decoration: none;" onmouseover="document.getElementById('help').style.visibility = 'visible'"; ONMOUSEOUT="document.getElementById('help').style.visibility = 'hidden'"><strong><font size="4" face="Arial"> ? </font></strong></a>
    338                 </div>
    339                 <div id="onwc_hide_on_pages_div" style="display:none">
    340                     <input id="hideonpages" name="hideonpages" class="showhidepages" type="text" value="<?php echo esc_attr(get_option( 'onwebchat_plugin_option_hide_pages' )); ?>" /><a href="#" style="text-decoration: none;" onmouseover="document.getElementById('help').style.visibility = 'visible'"; ONMOUSEOUT="document.getElementById('help').style.visibility = 'hidden'"><strong><font size="4" face="Arial"> ? </font></strong></a>
    341                 </div>
    342 
    343                 <div id="help">
    344                     <span>Add multiple pages by separating them with a space. You can enter a full URL or just a part of it. Example:  &nbsp; index price contact.php blog/</span>
    345                 </div>
    346 
    347                 <br>
    348                 <h3 class="header-1-p2">Enter your custom onWebChat JavaScript API code below</h3>
    349                 <div class="chatid-div">
    350                     <!-- <strong>onWebChat API:</strong>
    351                     <br> -->
    352                     <!-- sanitize user-provided parameter  -->
    353                     <textarea class="chatid-text-field" style="margin-left: 0px;" rows="10" name="onwebchat-api"><?php echo esc_html($onwebchatApi); ?></textarea>
    354                     <br>
    355                     <br>
    356                 </div>
    357 
    358                 <div>
    359                     <br /><br />
    360                 </div>
    361 
    362                 <!-- hiden fields -->
    363                 <input class="chatid-text-field-hide" type="text" name="chatId" value="<?php echo esc_attr($chatId); ?>"/>
    364                 <input class="chatid-text-field-hide" type="text" name="onWebChatUser" value="<?php echo esc_attr(get_option( 'onwebchat_plugin_option_user' )); ?>"/>
    365                 <input class="chatid-text-field-hide" type="text" name="isSecondPage" value="1"/>
    366 
    367                 <div class="new-account-link">
    368                     <a target="_blank" href="https://www.onwebchat.com/login.php">Access your onWebChat Dashboard</a>
    369                 </div>
    370                
    371                 <?php
    372                     // Display the Save Button
    373                     $html = '<input class="button action" style="margin-left: 230px;" type="submit" value="Save Changes"/>';
    374                     echo $html;
    375 
    376             }
    377 
    378            
    379             ?>
    380         </form>
    381     </div>
    382 
    383     <script type="text/javascript">
    384 
    385 
    386         function onwc_select_change() {
    387             var e = document.getElementById("pages-select");
    388             if (!e) {
    389                // console.warn("Select element not found");
    390                 return;
    391             }
    392             var selected = e.options[e.selectedIndex].value;
    393             if (selected == 1){
    394                 document.getElementById("onwc_show_on_pages_div").style.display = "none";
    395                 document.getElementById("onwc_hide_on_pages_div").style.display = "none";
    396             } else if (selected == 2){
    397                 document.getElementById("onwc_show_on_pages_div").style.display = "block";
    398                 document.getElementById("onwc_hide_on_pages_div").style.display = "none";
    399             } else if (selected == 3){
    400                 document.getElementById("onwc_show_on_pages_div").style.display = "none";
    401                 document.getElementById("onwc_hide_on_pages_div").style.display = "block";
    402             } else if (selected == 4){
    403                 document.getElementById("onwc_show_on_pages_div").style.display = "none";
    404                 document.getElementById("onwc_hide_on_pages_div").style.display = "none";
    405             }
    406 
    407         }
    408         document.addEventListener('DOMContentLoaded', function() {
    409             onwc_select_change();
    410         }, false);
    411     </script>
    412     <?php
    413 }
    414 
     78    // Load the new tabbed settings page
     79    require_once __DIR__ . '/admin/settings-page.php';
     80    onwebchat_settings_page();
     81}
    41582
    41683/* ----------------------------------------------------- *
     
    443110    //* register the api code
    444111    register_setting( 'onwebchat_plugin_option', 'onwebchat_plugin_option_api_code');
     112   
     113    /******************** WooCommerce Sync Settings ************************/
     114    register_setting( 'onwebchat_wc_sync', 'onwebchat_wc_sync_enabled');
     115    register_setting( 'onwebchat_wc_sync', 'onwebchat_wc_sync_mode');
     116    register_setting( 'onwebchat_wc_sync', 'onwebchat_wc_sync_include_price');
     117    register_setting( 'onwebchat_wc_sync', 'onwebchat_wc_sync_secret');
     118    register_setting( 'onwebchat_wc_sync', 'onwebchat_wc_last_bulk_sync');
     119    register_setting( 'onwebchat_wc_sync', 'onwebchat_wc_excluded_categories');
    445120}
    446121
     
    563238}
    564239
     240/************************************************************************
     241 * Fetch WooCommerce secret during login
     242 * Called automatically when user logs in with email/password
     243 * This way they don't need to re-enter credentials in WooCommerce tab
     244 ***********************************************************************/
     245function onwebchat_fetch_wc_secret_on_login($email, $password, $chatId) {
     246    // Extract key part (before first slash if present)
     247    $key = explode('/', $chatId)[0];
     248   
     249    // Determine endpoint based on testing mode constant
     250    $endpoint = ONWEBCHAT_WC_TESTING_MODE
     251        ? 'http://127.0.0.1:81/api/integrations/woocommerce/secret'
     252        : 'https://www.onwebchat.com/api/integrations/woocommerce/secret';
     253   
     254    // Request secret with authentication
     255    $response = wp_remote_post($endpoint, array(
     256        'timeout' => 15,
     257        'sslverify' => !ONWEBCHAT_WC_TESTING_MODE,
     258        'headers' => array(
     259            'Content-Type' => 'application/json',
     260        ),
     261        'body' => wp_json_encode(array(
     262            'email' => $email,
     263            'password' => $password,
     264            'site_key' => $key,
     265        )),
     266    ));
     267   
     268    if (is_wp_error($response)) {
     269        // Silently fail - user can still connect manually in WooCommerce tab
     270        error_log('onWebChat: Failed to fetch WC secret on login: ' . $response->get_error_message());
     271        return;
     272    }
     273   
     274    $status_code = wp_remote_retrieve_response_code($response);
     275    $response_body = wp_remote_retrieve_body($response);
     276    $body = json_decode($response_body, true);
     277   
     278    if ($status_code >= 200 && $status_code < 300 && isset($body['success']) && $body['success']) {
     279        // Success! Store the secret
     280        update_option('onwebchat_wc_sync_secret', $body['secret']);
     281        error_log('onWebChat: WooCommerce sync connected automatically during login');
     282    }
     283    // If it fails, user can still connect manually - no error shown
     284}
     285
     286/************************************************************************
     287 * Handle all form submissions early to avoid blank page on redirect
     288 * Must run on admin_init before any output is sent
     289 ***********************************************************************/
     290function onwebchat_handle_all_form_submissions() {
     291    // Only run on our settings page
     292    if (!isset($_GET['page']) || $_GET['page'] !== 'onwebchat_settings') {
     293        return;
     294    }
     295   
     296    // Load the general tab handlers
     297    require_once __DIR__ . '/admin/tabs/general.php';
     298    onwebchat_handle_general_actions();
     299}
     300
    565301// omit the closing php tag ? >  for avoid issues
  • onwebchat/trunk/readme.txt

    r3420076 r3429109  
    55Requires at least: 4.7
    66Requires PHP: 5.4
    7 Stable tag: 3.4.1
     7Stable tag: 3.5.0
    88License: GPLv2
    99License URI: https://www.gnu.org/licenses/gpl-2.0.html
    1010
    11 Enhance customer service with our live chat plugin, featuring AI chatbot support for 24/7 visitor engagement.
     11Enhance customer service with our live chat plugin, featuring AI chatbot support for 24/7 visitor engagement. Now with WooCommerce integration, so your AI chatbot knows your products and helps customers instantly!
    1212
    1313== Description ==
     
    2424Key Features & Benefits:
    2525
    26 <li>**Real-Time Monitoring:** Track user behavior on your website.</li>
    2726<li>**AI Chatbot:** Provide instant, automated support 24/7.</li>
    28 <li>**AI Text Correction:** Enhance your writing and correct errors effortlessly.</li>
    29 <li>**Customizable Widget:** Fully personalize the look and feel to match your brand.</li>
    30 <li>**Mobile Support:** Use our iOS and Android apps to support your visitors on the go.</li>
    31 <li>**Live Chat Triggers:** Automatically engage visitors based on behavior.</li>
    32 <li>**Department Routing:** Assign chats to the appropriate operator.</li>
    33 <li>**Chat Ratings:** Collect feedback directly from your visitors.</li>
    34 <li>**Typing Insights:** See what visitors are typing in real-time.</li>
    35 <li>**Transferability:** Easily transfer conversations between operators.</li>
    36 <li>**Metrics & Analytics:** Measure performance.</li>
     27<li>**WooCommerce Integration:** Automatically sync your products so the AI chatbot understands your catalog and answers product questions accurately.</li>
     28<li>**AI Text Correction:** Improve replies and fix writing errors effortlessly.</li>
     29<li>**Customizable Widget:** Fully personalize the design to match your brand.</li>
     30<li>**Real-Time Monitoring:** See who is on your website and what they are doing.</li>
     31<li>**Mobile Support:** Manage chats on the go with iOS and Android apps.</li>
     32<li>**Live Chat Triggers:** Automatically engage visitors based on their behavior.</li>
     33<li>**Department Routing:** Route chats to the right team or agent.</li>
     34<li>**Chat Ratings:** Collect instant feedback from your visitors.</li>
     35<li>**Typing Insights:** See what visitors are typing in real time.</li>
     36<li>**Transferability:** Easily transfer conversations between agents.</li>
     37<li>**Metrics & Analytics:** Track performance and improve your support strategy.</li>
    3738<li>**Data Security:** GDPR-compliant and SSL-secured.</li>
    3839
    3940...and much more!
    4041
    41 Enhance Customer Experience:
    42 <li>Free direct chats</li>
    43 <li>Offline email messaging</li>
    44 <li>In-page chat integration</li>
    45 <li>Easy file sharing</li>
     42Enhance the Customer Experience:
     43<li>Free real-time chat with your visitors</li>
     44<li>Fast 24/7 answers to every question with the AI chatbot</li>
     45<li>Offline email messaging when agents are unavailable</li>
     46<li>Seamless in-page chat integration</li>
     47<li>Easy file sharing during conversations</li>
    4648
    47 Your customers will love the convenience!
     49Your customers will love the speed, convenience, and always-available support.
    4850
    4951**Need Assistance?**
     
    6365== Frequently Asked Questions ==
    6466
     67= How does WooCommerce integration work? =
     68
     69If you have WooCommerce installed, you can enable automatic product synchronization in the onWebChat settings. This allows your AI chatbot to learn about your products and provide accurate product information to customers. Products are automatically synced when created, updated, or deleted. You can also perform a bulk sync of all existing products.
     70
     71= Is my WooCommerce data secure when syncing? =
     72
     73Absolutely! Product sync uses HMAC-SHA256 authentication with a unique secret key. Only essential product information (name, description, URL) is synced - no customer data, orders, or sensitive information is transmitted.
     74
    6575= How can I integrate the AI chatbot into my website? =
    6676
     
    7787= How is the AI chatbot priced? =
    7888
    79 You can try our beta AI bot with 50 free bot credits that we provide with registration. To use the AI chatbot, you'll need to be on our Pro AI plan with at least one operator. Pricing starts at $6 for 200 chat dialogs (chat sessions), with lower prices available if you want to buy more chatbot credits.
     89You can try our beta AI bot with 50 free bot credits that we provide with registration. To use the AI chatbot, you'll need to be on our Pro AI plan with at least one agent. Pricing starts at $6 for 200 chat dialogs (chat sessions), with lower prices available if you want to buy more chatbot credits.
    8090
    8191= Can the AI bot understand questions, even those with errors, in any language? =
     
    97107= Can I hide live chat widget when I am offline? =
    98108
    99 Certainly. Just deselect "use offline form" in your Operator Console.
     109Certainly. Just deselect "use offline form" in your dashboard.
    100110
    101111= Is there a white-label option? =
     
    107117Absolutely. Monitor real-time visitor activity, including geolocation, browsing behavior, and more.
    108118
    109 = Can chats be transferred between operators? =
     119= Can chats be transferred between agents? =
    110120
    111 Yes, active chats can be handed off to other available operators.
     121Yes, active chats can be handed off to other available agents.
    112122
    113123= Can I invite visitors to chat? =
     
    125135= I'm not able to connect to my live chat account using email/password. Why? =
    126136
    127 If your connection is blocked (e.g., by a firewall), use your Chat ID from the Operator Console to connect.
     137If your connection is blocked (e.g., by a firewall), use your Chat ID from the dashboard to connect.
    128138
    129 
    130 http://www.youtube.com/embed/YihmL6BpEvc
    131139
    132140
    133141== Screenshots ==
    1341421. Chat Dashboard
    135 2. AI-powered chat interaction with a visitor
    136 3. Monitoring visitors in real-time
     1432. Monitoring visitors in real-time
     1443. onWebChat plugin - WooCommerce settings
    1371454. onWebChat live chat widget
    138146== Changelog ==
    139147
     148= onWebChat Live Chat (Chat version 3.5.0) =
     149* NEW: WooCommerce Product Sync - Automatically sync products for AI bot training
     150* NEW: Bulk sync feature with background processing
     151* NEW: Real-time product updates (create, update, delete)
     152* NEW: Admin UI for WooCommerce integration settings
     153* Enhanced AI chatbot with product knowledge capabilities
    140154
    141155= onWebChat Live Chat (Chat version 3.4.1) =
Note: See TracChangeset for help on using the changeset viewer.