[Решение] Как сделать СМС оповещение о заказе?

Тема в разделе "Общие вопросы", создана пользователем Ravilr, 17 июл 2015.

  1. whit

    whit Новичок

    Сообщения:
    12
    Симпатии:
    0
    Подскажите как в смс добавить хоть какое-то дополнительное инфо. Модуль из сборки прекрасно работает, но когда несколько магазинов, то смс в виде "VashZakaz #1234" - говорит не о многом. Как бы добавить хоть сокращенное название магазина.
     
  2. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    922
    Симпатии:
    240
    $this->config->get('config_name')
     
  3. whit

    whit Новичок

    Сообщения:
    12
    Симпатии:
    0
    спасибо, а не подскажете куда эту строку? полагаю что в виде ocmod на все магазины установить будет лучшим решением чем менять в коде, я правильно рассуждаю?
     
  4. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    922
    Симпатии:
    240
    Моя задача дать лопату и научить копать. А дальше вы сами или ищете исполнителя.

    Ну конечно.

    Ставим лайк!
     
  5. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.434
    Симпатии:
    780
    \catalog\controller\extension\module\sms_alert.php
     
  6. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    Подскажите будет ли работать на версии 3.2.0 ?
     
  7. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    Вот для 3-й версии. Лежит архив, должен работать.
     

    Вложения:

    • sms_alert-3.zip
      Размер файла:
      9,3 КБ
      Просмотров:
      45
    whit нравится это.
  8. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    работает, теперь встал вопрос как сделать так чтобы при заказе в 1 клик все работало
     
  9. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    Нужно дописывать функционал модуля 1 клика. В рамках данной темы такое не решается.
     
  10. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    Всем привет, вот хочется добавить информации в смс и как то разобраться. В пхп не очень поэтому прошу помощи.
    Хочу добавить тел клиента и название заказанного продукта.

    Код:
    <?php
    class ControllerExtensionModuleSmsAlert extends Controller {
        public function index($route, $data) {
            if ($this->config->get('module_sms_alert_status')) {
                if (isset($data[0]) && !empty($data[0])) {
                    
                    $this->load->language('extension/module/sms_alert');
    
                    $this->load->model('extension/module/sms_alert');
                    
                    $order_id = $data[0];
    
                    $status = $this->model_extension_module_sms_alert->getOrder($order_id);
    
                    if (in_array($status, $this->config->get('module_sms_alert_processing_status'))) {
    
                        $req = "http://sms.ru/sms/send?api_id=" . $this->config->get('module_sms_alert_id') . "&to=" . $this->config->get('module_sms_alert_tel') . "&text=".urlencode($this->language->get('text_order') . $order_id);
                        file_get_contents($req);
                        
                        // тест запроса
                        // $this->log->write($req);
                    }
                }
            }
        }
    
    }
     
  11. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    Из логики чет должно быть в строчке

    Код:
    "&text=".urlencode($this->language->get('text_order') . $order_id);
    поправте если не так название магазина.

    Код:
    "&text=".urlencode($this->language->get('text_order') . ($this->config->get('config_name') . $order.php );
    И переменные телефон и название товара можно взять с order.php или нет ?
    $language->get('text_telephone');
    $language->get('text_order_id');
    $language->get('text_product');
    $language->get('text_total');
     
    Последнее редактирование: 19 фев 2019
  12. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    Нет. Вам проще без модуля, а просто по инструкции добавить в order.php, тогда сможете сформировать нужный текст.
     
  13. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    спасибо за наводку.

    И подскажите как лучше сделать чтобы отправлялся нужный текст и письмо. В order.php ниже прописать
    Код:
    
    file_get_contents("http://sms.ru/sms/send?api_id=4aedc787-5f22-88a4-fd81-ххххх&to=7960000000&text=".urlencode("переменные для нужного текста"));
    
    
    Чтобы срабатывало по нажатию кнопки а не при переходе к ордер. За ранее прошу прощения если глупый вопрос, но я с пхп не очень.
     
  14. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    Не могу выцепить название товара. Все вроди бы есть в $order_info и ип и коменты и тел и имя компании и номер товара, а вот название товара нет и общую сумму (( как это передать смс кой

    Работаю с order вот что получилось пока у меня.

    Код:
    if ($order_info) {
    file_get_contents("http://sms.ru/sms/send?api_id=ххххC8DEB-ххххх-хххх-9ххC-A7B0AB4EC198&to=795ххххх&text=".urlencode($this->language->get('tel: ') . $order_info['telephone'] . $this->language->get(' mail: ') .  $order_info['email'] ));
                // If order status is 0 then becomes greater than 0 send main html email
                if (!$order_info['order_status_id'] && $order_status_id) {
                    $this->add($order_info, $order_status_id, $comment, $notify);
                } 
     
  15. karpov

    karpov Продвинутый пользователь

    Сообщения:
    1.518
    Симпатии:
    241
    Вы посмотрите ко коду. Нет же ничего проще чем посмотреть. Отправку смс лучше делать там где отправляется почта. Смотрите ниже по коду mail и поймете что к чему, где заказ, где название товара итд.

    И не чудите, лучше почитайте про php
    Зачем это?? $this->language->get(' mail: ')
    Когда можно просто в кавычках нужное??????
     
  16. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    Читать то я читаю, но только буквы изучаю, и до чтения этих букв думаю не 1 мес уйдет, а сделать рабочую отправку надо через 3 дня ))
    Если не затруднит напишите как логически правильно.
     
  17. karpov

    karpov Продвинутый пользователь

    Сообщения:
    1.518
    Симпатии:
    241
    как правильно выше уже написал.
     
  18. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    Ну не получается вывести переменную (( ну ткните носом пожалуйста.

    вот код который формируется в конце письма и по логите $order_product['name'] должен быть он. Но вставляя его в код выше не работает. Я так понимаю это другой мосив и может нужно новый if прописывать для этого мосива
    Код:
    $data['products'][] = array(
                    'name'     => $order_product['name'],
                    'model'    => $order_product['model'],
                    'option'   => $option_data,
                    'quantity' => $order_product['quantity'],
                    'price'    => $this->currency->format($order_product['price'] + ($this->config->get('config_tax') ? $order_product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value']),
                    'total'    => $this->currency->format($order_product['total'] + ($this->config->get('config_tax') ? ($order_product['tax'] * $order_product['quantity']) : 0), $order_info['currency_code'], $order_info['currency_value'])
                );
            }
     
  19. Ravilr

    Ravilr Специалист

    Сообщения:
    3.863
    Симпатии:
    1.059
    $order_product['name'] содержит последнее значение массива при переборе, если конечно код расположен после цикла, а не до.
     
  20. kilohel

    kilohel Пользователь

    Сообщения:
    100
    Симпатии:
    2
    код вставил как описывалось выше в теме после if ($order_info). Код с переменной $order_product['name'] находится после цикла

    Переменные
    $order_info['telephone']
    $order_info['email']
    $order_info['total']

    Работают и осталось как то передать название продукта.