<?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='\
Прикольно!
А что интересная разработка! 🙂 А если на автоответчик попадешь? 🙂
(2) автоответчик прослушает сообщение 🙂
а обратная связь присутствует?
(0) а каким голосовым движком синтезируется речь?
Примеры проигрывания уже начитанной фразы не очень интересны, а на сайте других не нашёл.
(5) О механизмах синтеза не знаю, писал на основе описанного сервисом API, но мне кажется речь синтезируется через сервис Google.
(4) Да существует, но через API не управляется.
(6) если гугл то дешевле тогда к Astrerixу прикрутить.
(7) Ну здесь можно поспорить, что дешевле, если часто выполнять обзвоны, тогда возможно лучше доработка Asterisk. Но , для маленького предприятия, у которого нет внутренней телефонии, мне кажется проще воспользоваться сервисом. Здесь уже готовый механизм — бери и пользуйся, в случае в Aterisk нужно дописывать скрипты, тестировать сервис и потом увязывать с 1С.
Каждый выбирает что ему удобнее.
Плюс за познавательность и интересные комментарии
Какой то мутноватый сайт, при регистрации нужно стелепатировать в каком формате он ожидает номер телефона. Найти цены тоже целая история. Сайт выглядит как привет из 90x, при том что вроде бы достаточно предложений на рынке такого рода. Почему ваш выбор пал именно на него?
Идея хороша, моя можно сказать ))) Есть бесплатная программа ring. Она работает правда через обычный модем. Да и по поводу регистрации на сайте, вернее ожидания звонка, указал несколько номеров с периодичностью 15 минут, ни звонка, ни чего в общем. Кто то выше написал что сервис аля 90-е, полностью согласен, ни файла справки, ни тарифов… А так решение отличное.
Зачетная штука!!
все отлично работает, только что проверяли, все звонит и отсылает смс
А цен сообщения какая? 1 — 3 рублей одно сообщение?
Выдает ошибку, ключ скопировал на сайте — Wrong api key
(15) Возможно ключ скопировали с ошибкой, проверьте еще раз. Сегодня тестировал — все работает =)
(14) По ценовой политике подсказать не могу, я лишь перевел API сервиса на язык 1С.
(10) Как говорят: «Встречают по одежке, а провожают по уму». Разработчики сервиса, по всей видимости использовал готовый фреймвок и особо не заморачивались, главное что все работает.
Уважаемый автор, поясните, что за код приложения. Может в нем причина, я указал который на скрине. А что касается API ключа (я там выше писал) — копировал не один раз, всё равно ошибка ((( Я Вам отправил сообщение в ЛС, ответьте плз.
Да и еще, как быть с городскими номерами? К примеру 8 (42138) 43331, если его внести на самом сервисе, всё работает, а судя по коду Вашей обработки, там предусмотрены только мобильные номера. Может новый релизик накатать? )))
(18) Да, на уровне обработки выполняется проверка кол-ва символов номера телефона, вы можете сами поправить в конфигураторе.
А можно такое же реализовать на платформе 7.7? Не прошу написать обработку, «пните» в нужную сторону.
(20) Да конечно, API построено на POST запроса к сервису в нужном формате. Прочитав документацию, Вы сможете понять в каком виде отправлять информацию на сервис Бродкастер, затем парсим ответ и выводим в нужном нам формате. Мне кажется, что трудности могут возникнуть при парсинге ответа, т.к. он выводится в формате JSON
Интересная разработка…стоит внедрить
Вы не против если я тут оставлю ссылку на доработанную версию? В доработанной версии: импорт из файла, расчет стоимости, отчет о состоянии звонка, прямые ссылки на сайт (соответственно — регистрация, сведения о тарифах), и т.д. Ваш пример хорош, но нет группового обзвона абонентов. Просто таким образом не будет не связанных публикаций.
(23) Конечно не против)
Не в упрек автору, он здесь не причем. Обработка отличная. Как пример. НО ВОТ СЕРВИС Бродкастер — глючный ваще (((. Потратил две недели на написание обработок (средствами OLE собираются данные с других ИБ). А когда коснулось отправки — то облом, звонки через раз проходят, так же и смс. Пишет ошибка и все, ни каких пояснений. Служба поддержки не отвечает неделями. Да и вообще не отвечает (((. В общем ребята, если хотите замутить обзвон, пишите обработку для других сервисов с такими же возможностями. А автору еще раз спасибо за пример!!!
Внимание изменилось описание API, Тех поддержка отвечает оперативно и от них можно получить скидку на свой проект.
Если делать все по инструкции, все работает. Мануал берите с оф сайта. Для меня добавили несколько функций.
(26) ra9000,
Если можно по подробнее что за функции!
(0) а вот мануал можно было и бесплатно раздавать…
(23) хм… обещали ссылку на доработанную версию, а что-то даже не видно её…
(26) что за офф сайт? если тот из 90-х, то там ничего нет… 🙂
(28) Мануал нет возможности выложить бесплатно, т.к. согласно правилам ИС, такая возможность предоставляется если публикация коммерческая. API с момента публикации обновилось у сервиса (добавились новые возможности), актуальную версию можете скачать с сайта.
Документация к последней версии API в приложении.
(29) Благодарю за ответ и документацию.
Нашел я основной их сайт (вполне даже современный, а не из 90-х :)))
Там и мануалы нашел на Апи.
Тарифы у них конечно не ахти, но главное это идея, а поставщика найдем 🙂