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


Автоматическое контролирование доставки заказа по адресу

смс контроль доставка заказ

Сообщений в теме: 4

#1 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 24 Февраль 2015 - 00:10

Довольно часто приходится сталкиваться с доставкой заказа! Основная проблема в ведении учета доставки и вообще статусов заказа - человеческий фактор во время больших потоков информации, заказов, звонков. Где-то забыл, где-то менеджер не то поставил и т.д. Один из способов исправить данную проблему использовать следующую схему:
  • курьер получает путевой лист с специальным уникальным кодом заказа;
  • после доставки отправляет смс на специальный номер с префиксом и кодом заказа через пробел;
  • кб по крону дергает данные по входящим смс, ищет код в базе заказов и меняет автоматически статус на требуемый вам.
Сервисы которые предоставляют подобные услуги не проблема найти. Один из них Интис. Все что вам нужно - зарегистрироваться в личном кабинете и код представленный мною ниже вставленный в КБ. Цитата из сервиса:

Цитата

Рады сообщить вам о запуске бесплатного сервиса - Прием входящих СМС! Отныне всем клиентам доступен функционал обратной связи при помощи простого и понятного для каждого способа - СМС сообщения. Каким образом это работает? В разделе настройки приема входящих СМС https://new.sms16.ru...oming/settings/ вам выделен специальный префикс, используя который ваши клиенты могут написать вам СМС, и это сообщение будет отображено в личном кабинете! Пример СМС: 1235 Спасибо, мне очень понравилось в вашем ресторане! Абонентская плата за использование сервиса отсутствует, все входящие СМС сообщения на номер через ваш префикс - бесплатны! По желанию вы можете настроить различные правила обработки входящих СМС сообщений, например, настроить автоответчик или переслать смс на номер телефона или email, а также добавить номер абонента в стоп-лист или базу.

Итак зарегистрировались, заходите в личный кабинет - прием входящих. Видим

Цитата

Обратите внимание, что получение входящих СМС на фиксированный номер 79037672672 абсолютно бесплатно, и все полученные в ваш адрес СМС сообщения будут отображаться в личном кабинете!
Начните работать со входящими СМС прямо сейчас!
Номер понятен, чтобы определить префикс - нажимаем "добавить правило"(добавлять не обязательно) и видим префикс. Итак номер, 79037672672, префикс 23998.

А теперь нужен код для получения этих входящих смс. Из личного кабинета получаем логин и апи ключ. В кроне добавляем:

$sms = new IntisSms("testlogin", "865f2f8c9561a4fdf794a2c2f34638d98ecb8176c");
//Получаем смс
$income_sms = $sms->getSms("2015-02-23");

//Код который что-то делает в кб

$income_sms имеет следующую структуру
Array
(
	[498504] => Array
		(
			[sms_id] => 498504
			[date] => 2015-02-23 02:43:22
			[sender] => 79622075063
			[prefix] => 23998
			[text] => 23998 ТЕСТ
			[code] => ТЕСТ
		)

	[498508] => Array
		(
			[sms_id] => 498508
			[date] => 2015-02-23 05:09:03
			[sender] => 79217378164
			[prefix] => 23998
			[text] => 23998 RNXGN
			[code] => RNXGN
		)
)


	class IntisSms
	{
		private $api_key;
		private $login;
		private $url = "https://new.sms16.ru/get/incoming.php";
		private $snoopy;
		private $sms;
		public function __construct($login, $api_key)
		{
			$this->api_key = $api_key;
			$this->login = $login;
			$this->snoopy = new \Snoopy();
		}
		/**
		 * Получаем список смс за указанную дату
		 * @param $date
		 * @return array
		 */
		public function getSms($date)
		{
			$this->snoopy->fetch($this->getUrl($date));
			$sms = json_decode($this->snoopy->results);
			if(isset($sms->error)) {
				print_r($sms);
				$this->sms = array();
			} else {
				$this->sms = array();
				foreach ($sms as $id => $val) {
					preg_match("/([0-9]+)([\s]+)([A-Za-z0-9]+)/", trim($val->text), $part);
					$this->sms[$id] = array('sms_id' => $id,'date' => $val->date, 'sender' => $val->sender, 'prefix' => $val->prefix, 'text' => $val->text, 'code' => $part[3]);
				}
			}
			return $this->sms;
		}
		/**
		 * Генерация ссылки для получения входящих смс
		 * @param $date
		 * @return string
		 */
		private function getUrl($date)
		{
			$params = $this->createParam($date);
			$signature = $this->signature($params);
			$get = "";
			foreach ($params as $key => $value) {
				$get .= $key . "=" . $value . "&";
			}
			$get = substr($get, 0, strlen($get) - 1);
//			echo $signature;
			return $this->url . "?signature=" . $signature . "&" . $get;
		}
		/**
		 * Создание пакета параметров
		 * @param $date
		 * @return array
		 */
		private function createParam($date)
		{
			$param = array();
			$param['login'] = $this->login;
			$param['timestamp'] = $this->getTimeStamp();
			$param['date'] = $date;
			$param['return'] = "json";
			return $param;
		}
		/**
		 * Получение тайместемпа для подписи
		 * @return string
		 */
		private function getTimeStamp()
		{
			$snoopy = new \Snoopy();
			$snoopy->fetch("https://new.sms16.ru/get/timestamp.php");
			return $snoopy->results;
		}
		/**
		 * Генерация подписи
		 * @param $params
		 * @return string
		 */
		private function signature($params)
		{
			ksort($params);
			reset($params);
			return md5(implode($params) . $this->api_key);
		}
	}

Вообще сервис предоставляет и другие функции, а также подробную документацию. Лаконичную и понятную. Советую ознакомится.

#2 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 434 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 17 Март 2015 - 12:48

Я хочу уточнить. У нас Интис, вроде как, прописан в самой базе в качестве поставщика услуг SMS. Надо ли мне переписывать протоколы отправки SMS в случае заключения договора с ним (SMS я отправлял по sendsms), или достаточно в настройках аккаунта прописать его в качестве поставщика, а все остальные трабблы останутся на стороне сервиса?

#3 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 658 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 18 Март 2015 - 09:49

Механизм отправки СМС не зависит от выбранного шлюза, даже если он невстроенный. Все системные функции работают одинаково.

#4 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 434 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 19 Апрель 2016 - 17:07

Кстати, что касается доставки заказа, то я бы реализовал это по=другому и без СМС. Например, отправлял заказ по электронке с встроенной в письмо кнопкой, по которой идет обращение по определенному адресу с определенными параметрами и php по ним делает изменения в базе данных. Я так сделал при отправке счета клиенту. Получил - нажми кнопку "получил", оплатил - нажми кнопку "Оплатил". А в базе текущий статус виден менеджеру.

#5 wondertalik

    Активный участник

  • Пользователи
  • PipPipPip
  • 1 156 сообщений
  • Пол:Мужчина
  • Город:Кривой Рог, Украина

Отправлено 19 Апрель 2016 - 17:11

Просмотр сообщенияАлександр Пономарев (19 Апрель 2016 - 17:07) писал:

Кстати, что касается доставки заказа, то я бы реализовал это по=другому и без СМС. Например, отправлял заказ по электронке с встроенной в письмо кнопкой, по которой идет обращение по определенному адресу с определенными параметрами и php по ним делает изменения в базе данных. Я так сделал при отправке счета клиенту. Получил - нажми кнопку "получил", оплатил - нажми кнопку "Оплатил". А в базе текущий статус виден менеджеру.
Реализовал мобильное приложение. Курьеры всегда в курсе списка заказов и их количества. Ошибки со стороны курьеров сведены к нулю.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных