СМС оповещение клиентов



  • Добрый день!
    На старом форуме была уже такая тема.
    Возможно ли прикрутить смс оповещение изменений заказа?
    ModX Revo и Shopkeeper 3.



  • @LoGruS Да, возможно. Я правда делал свой плагин связанный с atompark.com



  • @alexinc А мануала нет почитать?
    Нашел SHKsendSMS 0.2.0, но там ни мануала ни рабочего сервиса на который он ссылается.
    Буду весьма признателен за помощь.



  • Мануал к чему? SHKsendSMS? у меня нет его. А плагин epochta (AtomPark) - могу здесь разместить, с инструкцией. Сам SHKsendSMS должен работать с http://sendmsg.ru/ - если они не сменили API.



  • @alexinc я про плагин epochta (AtomPark)



  • Делаем в админской панели плагин - epochta
    далее вставляем туда код:

    <?php
    $sms_url = $scriptProperties['sms_url'];
    $sms_login = $scriptProperties['sms_login']; //Логин
    $sms_secret = $scriptProperties['sms_secret'];
    $phone=$scriptProperties['sms_phone'];
    $phone1=$scriptProperties['sms_phone1'];
    $phone2=$scriptProperties['sms_phone2'];
    $type=$scriptProperties['type_sms'];
    $site_name = $modx->getOption('site_name');
    $site_url = $modx->getOption('site_url');
    $tpl=$scriptProperties['sms_tpl'];
    if ($modx->event->name == 'OnSHKsendOrderMail') {
    
    $order_id = isset($order_id) ? $order_id : '';
    if (isset($phone1)) {
    $src_phone1='<number messageID="msg">'.$phone1.'</number>';
    }
    if (isset($phone2)) {
    $src_phone2='<number messageID="msg">'.$phone2.'</number>';
    }
    
    require_once MODX_CORE_PATH."components/shopkeeper/model/shopkeeper.class.php";
    	require_once MODX_CORE_PATH."components/shopkeeper/model/shk_mgr.class.php";
    	$SHKmanager = new SHKmanager($modx);
    	$SHKmanager->getModConfig(); //Конфигурация Shopkeeper
    	$order = $modx->getObject('SHKorder', $order_id); //Параметры заказа
            $phone_num_client=$order->get('phone');
            $contacts_client=$order->get('contacts');
            $order_data = array();
        $src = '<?xml version="1.0" encoding="UTF-8"?>   
        <SMS>
        <operations> 
        <operation>SEND</operation>
        </operations>
        <authentification>   
        <username>'.$sms_login.'</username>  
        <password>'.$sms_secret.'</password>  
        </authentification>  
        <message>
        <sender>DolceCrema</sender>   
        <text>Поступил новый заказ №'.$order_id.' от '.date("d.m.Y H:i:s").' , проверьте почту.</text>  
        <type>'.$type.'</type>
        </message>   
        <numbers>
        <number messageID="msg11">'.$phone.'</number>
        '.$src_phone1.$src_phone2.'
        </numbers>   
        </SMS>'; 
             
        $Curl = curl_init();   
        $CurlOptions = array(  
        CURLOPT_URL=>$sms_url, 
        CURLOPT_FOLLOWLOCATION=>false,  
        CURLOPT_POST=>true, 
        CURLOPT_HEADER=>false,  
        CURLOPT_RETURNTRANSFER=>true,   
        CURLOPT_CONNECTTIMEOUT=>15, 
        CURLOPT_TIMEOUT=>100,   
        CURLOPT_POSTFIELDS=>array('XML'=>$src),  
        ); 
        curl_setopt_array($Curl, $CurlOptions);
        if(false === ($Result = curl_exec($Curl))) {   
        throw new Exception('Http request failed');
        }  
             
        curl_close($Curl); 
    }
    

    Имеет настройки:
    ['sms_url'] - путь до API epochta
    ['sms_login'] - Логин
    ['sms_secret'] - Пароль (не шифрованный - храниться в прямом виде)
    ['sms_phone'] - Телефон 1 для рассылки
    ['sms_phone1'] - Телефон 2 для рассылки
    ['sms_phone2'] - Телефон 3 для рассылки
    ['type_sms'] - Тип смс прямая (2). кривая (вроде 3)
    ('site_name') - От кого приходит смс - Название. Требуем регистрации в сервисе
    ['site_url'] - ставит ссылку сайта (мы отказались - знаки экономили)
    ['sms_tpl'] - шаблон смс. Не работает. Заделка на будущее.

    Плагин повешен на событие отправки почты на заказ. Можно повесить на изменение статуса заказа.
    Если тяжко разбираться - могу подредактировать, что бы отправляло на телефон заказчика, ибо мы под себя делали и отправляли только менеджерам.
    Плагин писался под версию SHK2. под SHK3, с изменениями, будет через недельку другую.
    Спасибо.



  • @alexinc Это Вам спасибо большое, попробую сам разобраться.


  • Администраторы

    Пример плагина для Shopkeeper3:

    <?php
    
    /*
    
    Событие: OnSHKChangeStatus
    
    */
    
    $order_ids = $modx->getOption('order_ids', $scriptProperties, '' ); // Массив ID заказов
    $orderStatus = $modx->getOption('status', $scriptProperties, '1' ); // Статус
    
    require_once $modx->getOption('core_path') . "components/shopkeeper3/model/shopkeeper.class.php";
    $shopCart = new Shopkeeper( $modx );
            
    $config =  $shopCart->getConfig( array( 'statuses' ) ); // Настройки статусов
    
    //Название статуса
    $statusName = '';
    foreach( $config['statuses'] as $st ){
        if( $st['id'] == $orderStatus ){
            $statusName = $st['label'];
            break;
        }
    }
    
    foreach( $order_ids as $order_id ){
        
        $order = $modx->getObject('shk_order', $order_id);
        if( $order ){
            
            //Разбор контактных данных заказа
            $contacts = $order->contacts;
            $contacts = json_decode( $contacts, true );
            if( !is_array( $contacts ) ){
                $contacts = array();
            }
            foreach( $contacts as $contact ){
                $contacts[$contact['name']] = $contact['value'];
            }
            
            // ТУТ ВАШ КОД (заменить)
            var_dump(
                $order->id, // ID заказа
                $orderStatus, // ID статуса
                $statusName, // Название статуса
                $contacts // Массив контактных данных. Пример: $contacts['email']
            );
            
        }
        
    }
    


  • Однажды подключал ByteHand. В техподдержке бесплатно помогли с настройкой и адаптацией под Shopkeeper3 (на тот момент обновленной версии у них не было).
    https://www.bytehand.com/cms#modx3



  • Я пользовался для своих проектов http://www.smsfeedback.ru/smsapi/php.php
    У них есть скрипт на PHP, пришлось немного допилить, но удобно что отправка по всему миру.



Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.