Перейти к содержимому


Фото
* * * * * 9 голосов

Модуль SMS оповещения

sms

  • Чтобы отвечать, сперва войдите на форум
232 ответов в теме

#41 heyfor

heyfor
  • Пользователь
  • 7 сообщений

Опубликовано 03.09.2013 - 08:30

Похоже, у Вашего файла api/smssend.php неверная кодировка. Надо UTF-8 (без BOM).

Если это Вы мне, то кодировка файла правильная.



#42 heyfor

heyfor
  • Пользователь
  • 7 сообщений

Опубликовано 03.09.2013 - 11:21

В сообщении об ошибке четко видно, что причина в smssend.php в начальной строке. Если кодировка правильная, то, видимо, в содержании файла...
 

Как ни странно, всё было правильно... NOTE++ показал, что кодировка была UTF-8 без BOM... Переконвертировал в 1251, потом обратно и заработало. Мистика. Или руки не из того места...



#43 Александр Маттэ

Александр Маттэ
  • Пользователь
  • 113 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Екатеринбург

Опубликовано 10.09.2013 - 11:05

Попробую еще раз. Хотя я загружал не файлом, а код вставлял.



#44 Александр Маттэ

Александр Маттэ
  • Пользователь
  • 113 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Екатеринбург

Опубликовано 10.09.2013 - 11:48

Кодировка верная. все-равно происходит ошибка при отправке в cartView. 

Не могу понять причины.



#45 Александр Маттэ

Александр Маттэ
  • Пользователь
  • 113 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Екатеринбург

Опубликовано 10.09.2013 - 12:33

>В сообщении об ошибке четко видно, что причина в smssend.php в начальной строке. Если кодировка правильная, то, видимо, в содержании файла...

Кодировка  UTF-8 без BOM 

Какая то фигня.

?вот файл. 

 

 

<?php


require_once('Simpla.php');


class SMSSend extends Simpla
{
    public function send($phone,$sms)
    {
    
        $ch = curl_init("http://sms.ru/sms/send");
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        curl_setopt($ch, CURLOPT_TIMEOUT, 30);
        curl_setopt($ch, CURLOPT_POSTFIELDS, array(


        "api_id"        =>    "************",
        "to"            =>    $phone,
        "text"        =>    iconv("windows-1251","utf-8",$sms)
));
$body = curl_exec($ch);
curl_close($ch); 


return false;


    }
}
 

 



#46 Александр Маттэ

Александр Маттэ
  • Пользователь
  • 113 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Екатеринбург

Опубликовано 10.09.2013 - 13:32

Все, разобрался! 

 

В фйле Simpla.php добавил строку 'smssend'    => 'smssend', - smssend было с маленькой буквы. Надо с большой. 

Вот так  'smssend'    => 'Smssend'

 

Ура Ура Ура



#47 Александр Маттэ

Александр Маттэ
  • Пользователь
  • 113 сообщений
  • Дизайн, Программирование, Верстка, Заказчик
  • Версия CMS:2.x
  • Откуда:Екатеринбург

Опубликовано 10.09.2013 - 13:40

+1 реферал



#48 Vasiliy-lv

Vasiliy-lv
  • Пользователь
  • 21 сообщений
  • Версия CMS:2.x

Опубликовано 07.10.2013 - 17:40

Всё работает отлично) Спасибо!



#49 allon925

allon925
  • Пользователь
  • 231 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 09.10.2013 - 03:54

Все работает, только остается один вопрос, возмлжно ли сделать так чтобы отправитель sms был указан не мой номер, а например название магазина. Заранее благодарен за любую помощь.



#50 Rash

Rash
  • Пользователь
  • 450 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x
  • Откуда:Russian Federation

Опубликовано 09.10.2013 - 08:27

Все работает, только остается один вопрос, возмлжно ли сделать так чтобы отправитель sms был указан не мой номер, а например название магазина. Заранее благодарен за любую помощь.

 

Пользуюсь сервисом bytehand.com, там в личном кабинете есть нечто вроде "Подписи отправителя" где можно задать название от кого будет рассылка.



#51 Noxter

Noxter
  • Фрилансер
  • 5 760 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 09.10.2013 - 11:35

Все работает, только остается один вопрос, возмлжно ли сделать так чтобы отправитель sms был указан не мой номер, а например название магазина. Заранее благодарен за любую помощь.

Да можно. Достаточно в sms.ru подать заявку http://sms.ru/?panel...l=senders&add=1 а также в скрипте api/smssend.php после "to" => $phone, прописать "from" => "Название которое запросили на смс.ру".



#52 allon925

allon925
  • Пользователь
  • 231 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 10.10.2013 - 01:41

Спасибо, заявку подал, жду ответа, теперь у меня на телефон приходят сообщения с номером заказа и суммой заказа. Что нужно добавить. чтобы приходил еще и товар, который заказали. Заранее благодарен за любую помощь. 



#53 Gyxman

Gyxman
  • Пользователь
  • 18 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x

Опубликовано 15.10.2013 - 10:55

А как сделать, чтобы приходила сумма с учетом доставки?



#54 Romalibert

Romalibert
  • Пользователь
  • 82 сообщений
  • Дизайн, Программирование, Заказчик
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 17.10.2013 - 23:03

Может кому пригодится, добавил в админку новое поле трекер ID, в которое можно записать номер почтового идентификатора, а после смены статуса заказа пользователю отправляется уведомление о новом заказе, итак,вот реализация:

Создадим новое поле в БД, для этого выполним комманду

ALTER TABLE `s_orders` ADD `trackerid` VARCHAR(255) NOT NULL AFTER `note`

Или просто создадим новую колонку по аналогии с полем note или просто скопируем его переименовав(если не дружите с консолью)

 

Далее открываем файл api/Orders.php и в строках 24 и 79 дописываем o.trackerid, должно получиться так:

		$query = $this->db->placehold("SELECT o.id, o.delivery_id, o.delivery_price, o.separate_delivery,o.payment_method_id, o.paid, o.payment_date, o.closed, o.discount, o.coupon_code, o.coupon_discount, o.date, o.user_id, o.name, o.address, o.phone, o.email, o.comment, o.status, o.url, o.total_price, o.note, o.trackerid

После открываем файл simpla/design/html/order.tpl и после строчек

			<div class="view_note" {if !$order->note}style='display:none;'{/if}>
				<label class=property>Ваше примечание (не видно пользователю)</label>
				<div class="note_text">{$order->note|escape}</div>
			</div>
		</li>
	</ul>
	</div>

в 189 строку дописываем:

	<div class='layer'>
	<h2>Трекер ID <a href='#' class="edit_trackerid"><img src='design/images/pencil.png' alt='Редактировать' title='Редактировать'></a></h2>
	<ul class="order_details1">
		<li>
			<div class="edit_trackerid" style='display:none;'>
				<textarea name="trackerid">{$order->trackerid|escape}</textarea>
			</div>
			<div class="view_trackerid" {if !$order->trackerid}style='display:none;'{/if}>
				<div class="trackerid_text">{$order->trackerid|escape}</div>
			</div>
		</li>
	</ul>
	</div>

Далее после строчек

	// Редактировать примечание
	$("div#order_details a.edit_note").click(function() {
		 $("div.view_note").hide();
		 $("div.edit_note").show();
		 return false;
	});

в 514-ю вписываем:

	$("div#order_details a.edit_trackerid").click(function() {
		 $("div.view_trackerid").hide();
		 $("div.edit_trackerid").show();
		 return false;
	}); 

После нужно править файл simpla/OrderAdmin.php, в строку 21 вставляем

$order->trackerid = $this->request->post('trackerid');

Далее в строках 120 дописываем отправление не только на почту уведомления, но и sms:

				if($this->request->post('notify_user')){
				$this->notify->email_order_user($order->id);

меняем на

				if($this->request->post('notify_user')){
				$this->notify->email_order_user($order->id);
		
				if($new_status == 1)					
				{
          $this->smssend->send($order->phone, 'Здравствуйте '.$order->name.'. Ваш заказ N'.$order->id.' подтверждён и принят в обработку. Магазин example.ru');
				}
				elseif($new_status == 2)					
				{
           $this->smssend->send($order->phone, 'Ваш заказ N'.$order->id.' отправлен, идентификатор посылки '.$order->trackerid.'. Подробнее об идентификаторах и отслеживании посылки: www.example.ru/post');
				}
				elseif($new_status == 3)					
				{
          $this->smssend->send($order->phone, 'Ваш заказ N'.$order->id.' отменён. Магазин example.ru');				
        }
        }								

Незнаю, насколько решение хорошо, но вроде работает, если есть что дополнить или поправить, с радостью выслушаю.



#55 Booster

Booster
  • Пользователь
  • 112 сообщений
  • Дизайн, Верстка
  • Версия CMS:2.x

Опубликовано 17.10.2013 - 23:10

Romalibert, теоретически должно работать.

Но я себе сделал гораздо проще, просто тупо добавил условие примечания на страницу order.tpl, email_order.tpl и в simpla/OrderAdmin.php для СМС. А на странице админки тупо сменил имя примечание на Трек-номер.



#56 Noxter

Noxter
  • Фрилансер
  • 5 760 сообщений
  • Дизайн, Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Киев

Опубликовано 17.10.2013 - 23:12

Может нужно так:  $related_product->variant->price?



#57 Romalibert

Romalibert
  • Пользователь
  • 82 сообщений
  • Дизайн, Программирование, Заказчик
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 17.10.2013 - 23:28

Так, с почтой вроде решилось, а с ошибкой нет :(



#58 Romalibert

Romalibert
  • Пользователь
  • 82 сообщений
  • Дизайн, Программирование, Заказчик
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 17.10.2013 - 23:30

Может нужно так:  $related_product->variant->price?

не уверен, там везде эта переменная используется, к тому-же я вроде ничего не правил там

 

    foreach($related_products_variants as $related_product_variant)
    {
        if(isset($related_products[$related_product_variant->product_id]))
        {
            $related_product_variant->price *= (100-$discount)/100;
            $related_products[$related_product_variant->product_id]->variants[] = $related_product_variant;
        }
    }


#59 Romalibert

Romalibert
  • Пользователь
  • 82 сообщений
  • Дизайн, Программирование, Заказчик
  • Версия CMS:2.x
  • Откуда:Москва

Опубликовано 19.10.2013 - 22:48

А еще можно сэкономить на отправке сообщения для себя любимого (тобишь администратору сайту, менеджеру, в общем тому, кто следит за заказами). Делаем так:

 

$sms_msg = 'Заказ на сумму '.$order->total_price.' р. от '.$order->name;
if (mb_strlen($sms_msg, 'UTF-8') > 70) $sms_msg = mb_substr($sms_msg, 0, 67, 'UTF-8').'...';
$this->smssend->send($this->settings->notify_from_sms, $sms_msg);	

Естественно это из CartView.php

SMS.ru позволяет слать на свой номер (указанный при регистрации) смски бесплатно, НО бесплатно до 60 шт. в день и размер смс не должен привышать 1-ну смску. Следовательно мы:

1. Формируем текст СМС

2. Проверяем его длинну, и если она больше 70 символов (ограничение для смс кириллицей) то урезаем его до 67 символов и добавляем "..." для понимания того, что смс была урезана.

3. Далее шлем это смс

Я подобрал, по моему мнению, самый оптимальный текст. Мы имеем информацию о факте нового заказа, о сумме и что останется - это инфа о клиенте.

 

Если вам необходимо смс уведомление только для себя, то смс.ру можно юзать почти бесплатно :) (ну если у вас заказов менее 60 в день, ну а если уж больше, то можно и не читать этот пост - экономия это низко для вас =))))

 

Держите, функция транслитерации, можно перекодировать себе письма в латиницу и не париться нсчёь длины сообщения

function translit($str) {
	$tr = array("А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D","Е"=>"E","Ж"=>"J","З"=>"Z","И"=>"I","Й"=>"Y","К"=>"K","Л"=>"L","М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R","С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"H","Ц"=>"TS","Ч"=>"CH","Ш"=>"SH","Щ"=>"SCH","Ъ"=>"","Ы"=>"YI","Ь"=>"","Э"=>"E","Ю"=>"YU","Я"=>"YA","а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j","з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l","м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y","ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya");
	return strtr($str,$tr);
} 



#60 allon925

allon925
  • Пользователь
  • 231 сообщений
  • Заказчик
  • Версия CMS:2.x

Опубликовано 21.10.2013 - 17:36

Какой файл отвечает за вывод заказанного товара, хочу чтобы еще в sms приходило, что заказали. Заранее благодарен за любую помощь.







Также с меткой «sms»

0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых