Страница 1 из 1

Хранение статистики автообзвона в MsSql

Добавлено: 19 янв 2015, 13:34
Denis
Добрый день.

Я пытаюсь настроить автообзвон в CallOffice. Хочется собирать статистику по звонкам, то есть как минимум завести две таблицы, вроде примера на Access, но для более серьезной СУБД, например MsSql.
1. Есть ли стандартные скрипты и структуры базы для двух таблиц или переделывать запросы самому?
2. Мне стандартный скрипт ругается на колонку CallTime. Если делаю ее DateTime, то класс Database ругается Неверно задан тип %s для поля [%s] в базе данных. Тип поля может быть цифровым или текстовым.
Если сделать целочисленным, то уже MsSql говорит, что не может преобразовать getDate()

Re: Хранение статистики автообзвона в MsSql

Добавлено: 20 янв 2015, 03:36
McBurns
Здравствуйте.

Проверка формата поля (только цифровое или текстовое) делается для поля учёта результатов обзвона. 0 или 1 для цифрового формата. Описание ошибки или «OK» для текстового. Вы уверены, что не перепутали поля для записи результатов и времени обзвона?

Для работы с двумя базами данных стандартных скриптов нет. Но с двумя и более таблицами вы можете работать. Для этого в нашем программном продукте есть возможность использовать свои SQL-запросы для выборки и сохранения данных.

Подробное описание работы стандартных сценариев можно посмотреть в нашей базе знаний.

Re: Хранение статистики автообзвона в MsSql

Добавлено: 20 янв 2015, 07:03
Denis
Переписал запрос заново. Теперь ругается на другое
Если написать значение PassField в кавычках, то ошибка преобразования varchar
Код: выделить все
update CallMachine.dbo.Ring   set "CallTime" = getdate(), "Status" = 'Ошибка при воспроизведении звука. : Указанное устройство уже используется. Подождите, пока оно освободится, и повторите попытку.', "Attempts" = '[PassField]' where "Phone" = 'xxxxxxxxxxx';<lf>insert into CallMachine.dbo.Log  (Phone, Status, CallTime) VALUES ('[ColumnPhone]', '[ColumnResult]', getDate())

если без кавычек, то недопустимое имя столбца PassField
Код: выделить все
update CallMachine.dbo.Ring   set "CallTime" = getdate(), "Status" = 'Ошибка при воспроизведении звука. : Указанное устройство уже используется. Подождите, пока оно освободится, и повторите попытку.', "Attempts" = [PassField] where "Phone" = 'xxxxxxxxxxx';<lf>insert into CallMachine.dbo.Log  (Phone, Status, CallTime) VALUES ('[ColumnPhone]', '[ColumnResult]', getDate())


Насчет звукового устройства можно не обращать внимания, звуковая карта иногда не отвечает, с модемом все в порядке.

P.S. Смог найти первоначальную ошибку, выбрал поставляемую базу Access sample.mdb, настройки по умолчанию, запускаю дозвон и получаю
Код: выделить все
Неверно задан тип date для поля [CallTime] в базе данных. Тип поля может быть цифровым или текстовым. Учет результатов предыдущего дозвона не будет осуществлен.

Re: Хранение статистики автообзвона в MsSql

Добавлено: 20 янв 2015, 08:02
McBurns
Вы два запроса сразу пишете? Не совсем понятно по приложенным данным.
Вы можете в скайп Wentor.ru написать?

Re: Хранение статистики автообзвона в MsSql

Добавлено: 20 янв 2015, 10:04
Denis
Да, я сразу два запроса сохраняю - один в Ring, чтобы программа нормально работала, и дублирующий в Log, для хранения журнала звонков.
Но на поле Attempts выдается ошибка, оно типа smallint, а CallOffice в него что-то странное сохраняет.

По скайпу не могу написать, только по ICQ, если есть.

Re: Хранение статистики автообзвона в MsSql

Добавлено: 20 янв 2015, 10:55
McBurns
Возможность использовать два запроса у нас сейчас присутствует только в тестовой версии. Скачать её можно на нашем сайте: http://www.calloffice.ru/Download/CallOffice_new.exe

Запросы должны разделяться строкой, содержащей только два символа слэша: //.

Скорее всего, ошибка происходит именно из-за этого.

Re: Хранение статистики автообзвона в MsSql

Добавлено: 20 янв 2015, 12:30
Denis
Нашел я ошибку у вас на форуме же
Согласно теме http://forum.calloffice.ru/viewtopic.php?f=3&t=151&p=272 нет в SQL запросе поля PASSFIELD.

Я проверил - такой запрос работает!
Код: выделить все
update CallMachine.dbo.Ring   
set  "CallTime" = getdate(), "Status" = '[ColumnResult]', "Attempts" = Attempts+1 
where "Phone" = '[ColumnPhone]';
//
insert into CallMachine.dbo.Log  ("Phone", "Status", "CallTime") VALUES ('[ColumnPhone]', '[ColumnResult]', getDate())

Re: Хранение статистики автообзвона в MsSql

Добавлено: 20 янв 2015, 14:31
Denis
Только теперь не понятно, как число попыток Attempts использовать в общей схеме работы.
Если выполнить стандартный запрос на получение клиентов
Код: выделить все
select * from CallMachine.dbo.Ring where `Status`<> 'OK'    or `Status` is null

то Attempts никак не учитывается.
Его надо в условие запроса добавлять или скрипт сам поймет из расширенных настроек, что надо надо клиенту 5 раз, допустим, попробовать позвонить?

Re: Хранение статистики автообзвона в MsSql

Добавлено: 21 янв 2015, 03:40
McBurns
Вы же при создании запроса знаете, сколько попыток должно быть сделано для одного абонента, поэтому можно сразу написать это в запрос:

Код: выделить все
select *
  from CallMachine.dbo.Ring
 where Status   <> 'OK'
   and Attempts <  5