<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Ого! А я в своё время искал Windows-клиента… и не нашёл… видно, искал плохо )))
Огромный плюс. Отличная статья 🙂
прикрутил к регламентным заданиям .
правда код сократил, да простит меня автор
Вацап = Null;
Вацап = Новый COMОбъект(«WhatsAppApi.ComWrapper»);
Вацап.Create(«ЛОгин», «Пароль», «»);
Вацап.Login();
КлючСообщения = Вацап.SengMessage(«телефон», «Напиши мне напиши «);
теперь при ошибках получаю почти оперативно сообщение до 2 минут идет (((
Автор молодец!
но так чисто из любопытства:
Это где такой город, где мобильный инет лучше смс ? )))
(3) iov, 2 минуты — много, проверьте скорость соединения на телефоне, возможно не успевает нормально синхронизировать сообщения.
(4) KonstB, город Норильск. Представьте себе — смс нормально уходят, но прийти адресату могут через день-два
Идея очень интересная,а можно ли также под Viber что-нибудь сделать ???
(6) saint07, если найдёте API — беглый взгляд не выявил актуальной реализации в открытом доступе, ситуация такая же, как с whatsapp’ом — API закрытое
Отличная статья!
Сколько будет стоить готовая рабочая обработка и ДЛЛ (чтобы работали без отмазок))))?
Чтобы я мог прикрутить к своей рабочей конфе?
(8) spezc, честно говоря даже не представляю, никогда таким образом не пытался зарабатывать. А ещё, хочу напомнить, что DLL останется рабочей ровно до того момента, как WhatsApp не поменяет версию или часть протокола. Никто не может гарантировать, что сделав полностью рабочую DLL ею можно будет пользоваться неограниченное время.
Потому лишний раз предупрежу — не стоит вешать эту оповещалку на что-то важное, она может неожиданно перестать работать.
У меня есть пара идей для следующей публикации подобной тематики, в которых участвует меньше неконтролируемых посредников)
Однако нужно сначала всесторонне изучить эти идеи
О, Норильск) 30 лет там прожил) Но свалил) С инетом и СМС там беда, подтверждаю)
Статья отличная — можно все привести к законченной подсистеме (если еще прикрутить Viber и прочие мессенджеры на возможность выбора)
(9) k4rimov, Viber, как и WhatsApp, имеет закрытое API, однако для WhatsApp есть репозитории на гитхабе, которые с горем пополам можно прикрутить, а вот с Viber’ом там в этом смысле слабовато. Ну и представьте как поддерживать многообразие сервисов с закрытым API да ещё и совмещать с работой.
Одна из идей, о которых я упомянул выше, заключается в отдельной подсистеме, а вот с чем она будет работать — пока не скажу, сначала руками на себе обкатаю)
(11) delete, как вариант — с telegram ))https://core.telegram.org/
(12) k4rimov, по сути всё, что имеет открытое API можно прикрутить как уведомлялку) Хоть телеграм, хоть инстаграмм, вконтакте и т.д. Они тоже требуют отслеживания изменений в API, хотя, конечно, в случае его открытости это не составляет большого труда)
(10) delete, может тогда все-таки стоит подумать над коммерческой частью проекта? сделать готовое решение и поддерживать его, по мере изменения апи ватсапа? лично для меня было бы прикольно прикрутить подобную оповещалку в компании)
Красиво! Согласна с (14), может, подумаете над продажей и поддержкой проекта?
Это всё здорово, но email чем не угодил?
Отправка сообщений уже реализована, немного допилить и можно слать всё что угодно, на любой адрес, группу итд.
Ну хоть кто нибудь — сделайте прием данных от jabber, что бы можно было к гуглю подключиться и отправлять данные и получать их.
Ну плиииииз….
Там же все открыто, не надо никаких костылей 🙂
(17)Да их просто вагон.Поиском пробовали пользоваться?
(14) spezc, (16) orehova123, раз людям интересно, подумаю над этим)
(18) иногда надо вчитываться в каммент, что бы понять его содержание.
Давайте еще раз повторю и выделю важные моменты:
сделайте прием данных от jabber, что бы можно было к гуглю подключиться и отправлять данные и получать их.
Раз уж вы так ловко умеете обращаться с гуглом, то может вы поможете мне с поиском данного решения? Ибо мои скромные навыки не позволили найти его.
В замен, я готов вам перечислить 50$m. Я думаю за поиск готового варианта с использованием ВК для 1С 8.2,8.3, которая умеет работать с джабером гугла и получать и отправлять сообщения — должно хватить 🙂
Автор молодец! Спасибо за подробную инструкцию.
(20)
Перечитал раза три так и не понял, что вам не понравилось, вот к примеру описание одной из обработок:
Взято отсюдаhttp://infostart.ru/public/83685/
Эх, а ведь все апи идет через вызовы типа
https://v.whatsapp.net/v2/code?cc= {0}&in={1}&to={0}{1}&method={2}&mcc={3}&mnc={4}
Поэтому можно обойтись без лишних компонент
(23) acsent, с одной стороны — да, можно, с другой — многое придётся пилить с нуля (шифрование, разбор пакетов, построение пакетов, обработку событий стороны сервера и т.д.).
Но, в итоге, нет ничего невозможного)
Спасибо! Отличная идея!
Спасибо за статью) Интересно почитать подобные материалы.
(23) acsent,
Да можно и свой сервер запилить, что в общем случае даже проще, пожалуй.
(27)И второй ватсапп в аппстор 🙂
(24) Весь код уже есть на С. Нужно только перевести на 1С )))
Да, клевая статья. Спасибо автору за идею и примеры!
Автор молодец.
Основной минус данного решения: сложность и ненадёжность.
Требуем коммерческую версию на УТ10.3!!!!
(29) acsent, и правда, всего-то)
(31) tunesoft, сложность, пожалуй, для тех, кто не знаком с другими яп (c# в нашем случае), а ненадёжность — полностью согласен, огромный минус
(32) victor-tm, к сожалению оч загружен по работе, в ближайшее время ждать готового решения не стоит
хочу ещё раз обозначить — я не претендую на новизну или эксклюзивность идеи или решения
если кто-то возьмётся и реализует полноценный поддерживаемый компонент — честь, слава, хвала и почёт)
насчёт коммерческого решения тоже есть нюанс — в трактовке некоторых юристов это может быть не очень-то и законно)
(33) delete,
сделать коммерческую версию. выложить демку и рабочую за 5000р (ценообразование за вами). с учетом того, сколько скачано и сколько звезд — думаю профит будет нормальный) можно несколько ночей на разработку выделить)
Крутяк. Не знаю на сколько это актуально, так как imap на телефоне можно настроить и почту отправлять так что…
Тут разве что сравнение чата и почтовика.
нужная вещь, автору спасибо)
Автору однозначно плюс. Спасибо, разработка пригодилась.
Господа хотел поинтересоваться кто нибудь прикрутил возможность отправки изображений?
Что на счет коммерческой версии?
да не помешала бы. очень нужна рабочая версия с отправкой изображений
(39) victor-tm,
А можно услышать что вы хотите от коммерческой версии? Какие требования к ней?
Коммерческой версии не будет
Извините
RegAsm : error RA0000 : Unable to locate input assembly ‘WhatsAppApi.dll’ or one of its dependencies.
(43) androgin, Проверьте, есть ли путь к фрэймворку в переменной среды (можно посмотреть пример тут —http://www.jagjot.com/2014/01/register-c-vb-net-dll-regasm-gacutil/)
смс не приходят при регистрации. как можно решить?
длл зарегистрировал, при регистрации ком объект создан. такое ощущение что в правах винды где то проблема. (вин8)
(45) Ti_Gor1, уже давно изменилась версия официального приложения и токен. Чтобы всё заработало, нужно брать свежую библиотеку с github, если нужные изменения в неё уже внесли
Про DLL на .Net с 1С?
http://infostart.ru/public/238584/
Можно так
Использование сборок .NET в 1С 7.x b 8.x
Ну и использование NuGethttps://www.nuget.org/packages/WhatsAppAPI/
(8) spezc,
3000 руб.
А если я вытащу токен из приложения Whats app dll ка заработает?
Вот рабочий вариантhttps://github.com/mgp25/Chat-API-NET
Проверил рабочий. Правда я через 47
Скомпилируй и замени WhatsAppApi.dll
Победил отправку файлов
Камрады! Подскажите с отправкой изображений.
Добавил метод
public void SengMessageImage(string toPhoneNum, byte[] ImageData, ApiBase.ImageType imgtype)
{
instance.SendMessageImage(toPhoneNum, ImageData, imgtype);
return;
}
И никак не могу корректно передать этот ImageData!
Я так понимаю со стороны он ComSafeArray. Но как его заполнить правильно из картинки не догоняю!
Пытался переделать его через string Base64
public void SengMessageImage(string toPhoneNum, string ImageData, ApiBase.ImageType imgtype)
{
instance.SendMessageImage(toPhoneNum, Convert.FromBase64String(ImageData), imgtype);
return;
}
На стороне 1с
Данные = Base64Строка(ЭлементыФормы.Картинка.Картинка.ПолучитьДвоичныеДанные())
Данные = СтрЗаменить(Данные, Лев(Данные,4),»»)
Данные = СтрЗаменить(Данные , Символы.ПС, «»);
Вацап.SengMessageImage(Адресат, Данные, 0);
Подвешивает 1с!
Если у тебя вертится цикл с PollMessages();
то тебе нужно подправить в UploadFile
}
Ну и представить номер
То есть вместо
<=10 поставить <=100?
А вот это не понял где!
ApiBase.GetJID(toPhoneNum)
Вместо
// this.pollMessage();
нужно
System.Threading.Thread.Sleep(100);
Так как для получения событий у тебя наверное уже крутится цикл с pollMessage() и они блокируют друг друга
WhatsApp.cs метод
protected WaUploadResponse UploadFile(string b64hash, string type, long size, byte[] fileData, string to, string contenttype, string extension)
instance.SendMessageImage(ApiBase.GetJID(toPhoneNum), Convert.FromBase64String(ImageData), imgtype);
(55) Serginio, Спасибо! Все заработало!
Выложил статью.NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия
Именно большое количество событий в WhatsAppApi сподвигло меня на динамическую генерацию и компиляцию класса обертки и генерации модуля 1С для использования событий
ждем коммерческий продукт
(50) Serginio,
Можно попросить готовый вариант dll?
Спасибо заранее
(59) Смотря какой вариант DLL тебе нужен. Если по сабжу то проси автора. Есть вариант для тестов генерации событий
http://infostart.ru/public/417830/
Там в класс добавлена запуск цикла.
Обнови ДЛЛ, токен и тд, по теме, если этот вариант скачаю, запыхает?
Спасибо автору.
Вопрос всем кто использует. Работает без глюков? и как часто нужно перекомпилировать DLL ку, что бы решение работало?
dll нужно пересобирать когда ключ меняют в программе.
Отправка текстов работает нормально, а вот картинки никак не хочет отправлять на рабочей базе!
Хотя у меня, с компьютера шлет все отлично и картинки и текст.
Возможно это связано с тем, что у меня выделенный канал. А на рабочей базе, 4g модем.
Я уже не знаю где искать причину!
Где брать рабочий токен?
(64) set5553, рабочий токен в библиотеке на гитхабе, ссылка есть выше.
(65) stoned, вы про эту ссылку?https://github.com/mgp25/Chat-API-NET
{«status»:»fail»,»reason»:»old_version»}
Чего то подкрутили, ошибка авторизации!
На гитхабе пишут что сеть, однако до сих пор не пашет с утра.
(68) Так заного получи пароль напримерhttps://davidgf.net/whatsapp/pwd.html
(69) Serginio, кстати, на наш формат постоянно ругается, что можно сделать? номер +996701775777 +996 код станы, 701 код оператора, 775777 номер телефона
По моему они поменяли протокол авторизации. То, что раньше подключалось, сейчас говорит oldversion
посмотри многоизмененийhttps://github.com/mgp25/Chat-API-NET/commits/master
Кстати WaUploadResponse подправили
Показать
waTocken изменилиhttps://github.com/mgp25/Chat-API-NET/blob/master/WhatsAppApi/Register/WaToken.cs
Настроил, все работало и сегодня перестал авторизовываться. Посмотрел, номер заблокировали. Как быть? Из за чего заблокировали? Как обходить это?
Народ добрый вечер. кто-нибудь решил проблему с внедрением вацап в 1С? У кого работает нормально, отпишитесь пожалуйста
Посмотри. В декабре еще делал
(77) Serginio, Спасибо большое. сегодня испытаю. а у тебя до сих пор работает? интересная тема? мне это нужно чтобы в указанное время руководству шли отчеты всякие остатки, а картинки можно отправлять
Не знаю не пользуюсь, но тем кому делал вроде не жалуются. Картинки можно отправлять. Но лучше использовать свой серверhttp://infostart.ru/public/434771/
Вацап постоянно авторизацию меняет, блокирует
(76) astraborz,
у меня работает 🙂
(77) Serginio,
Скачал декабрьский архив.
При попытке получения пароля на мой номер: +79166123636
ругается:
Could not request code using either sms. SMS: {«status»:»fail»,»reason»:»old_version»}
значит опять токен поменяли
«Could not request code using either sms. SMS: Удаленный сервер возвратил ошибку: (407) Требуется аутентификация посредника.»
У меня ошибка регистрации компоненты
RegAsm : error RA0000 : Unable to locate input assembly ‘c:WhatsAppApi.dll’ or one of its dependencies.
Вчем же дело?
43, как то решили проблему?
(85) если посмотрите саму статью и посмотрите что используют репозиторий на github — репозиторий оттуда был удален…
(86) и нет решений?
(87) конкретно эта работать не будет точно, возможно есть другие версии (или написать свою обертку для другого живого qpi на github), цель статьи, вроде, в этом и заключалась — показать как сделать обертку самому.
(88) Ну тогда можно взять.NET(C#) для 1С. Динамическая компиляция класса обертки для использования .Net событий в 1С через ДобавитьОбработчик или ОбработкаВнешнегоСобытия
И на примере1C Messenger для отправки сообщений, файлов и обмена данными между пользователями 1С, вэб страницы, мобильными приложениями а ля Skype, WhatsApp
Сделать свою обертку. Просто WhatsApp постоянно меняет протоколы, блокирует.
Да еще и деньги начал просить
(89) деньги просить? это как? у них есть банальное платное API?
Да чего то жене разные сообщения приходят. Я вацапом не пользуюсь.
Данная разработка живая? Стоит качать?
Не работает… На этапе отправки смс с кодом:
Вацап.RequestCode() — возвращает ложь…
Здорово! Интересная идея.
Актуально ещё ? Работает ?
Обработка мертвая, ошибка при открытии: -2147221005(0x800401F3): Недопустимая строка с указанием класса
Автор, в чем проблема?
(97)
Зарегистрировать класс не пробовали?
Вообще, уже нет смысла качать и использовать эти файлы.
Обработка уже давным-давно не актуальна.
Читайте внимательнее.
Используйте статью как общее руководство.
(5)
Секретность, должны быть проверены.