forum.bitel.ru
http://forum.bitel.ru/

API для работы с логами телефонии
http://forum.bitel.ru/viewtopic.php?f=19&t=7391
Страница 1 из 1

Автор:  Phricker [ 06 ноя 2012, 18:15 ]
Заголовок сообщения:  API для работы с логами телефонии

Добрый день.
Есть в API что-нибудь такое, что позволит вывести все звонки за определенный период не извращаясь с договорами и прочим?
Все что я нашел в ReportManager'е работает либо с ID договора, либо с ID из data_log_{mid}_{yyyyMMdd} где получается надо сначала перебирать все дни в пределах месяца, а потом перебирать ID в таблицах
я уж промолчу для чего использовать подневные таблицы если те же логи сессий - уже помесячные

Автор:  Phricker [ 06 ноя 2012, 18:46 ]
Заголовок сообщения:  Re: API для работы с логами телефонии

ап
Stark писал(а):
нужно что-то уже вчера (директор там что-то намылил уже, маркетолог над вами стоит и т.п)

Автор:  Phricker [ 06 ноя 2012, 23:34 ]
Заголовок сообщения:  Re: API для работы с логами телефонии

Ввысь

Автор:  skn [ 07 ноя 2012, 01:26 ]
Заголовок сообщения:  Re: API для работы с логами телефонии

а что значит "все звонки"?
в АРМе такое где нибудь выводится?

Автор:  Phricker [ 07 ноя 2012, 02:18 ]
Заголовок сообщения:  Re: API для работы с логами телефонии

В клиенте биллинга не видел. Хотя не исключено что не так смотрел :)
Объясню для чего. В конце месяца получить отчет об общем кол-ве трафика прошедшем через станцию / получить все звонки за период для какой-то своей цели / ну и т.п.
Все звонки это все "сырые" логи и все уже тарифицированные.
Например сравнить кол-во "сырого" трафика и уже протарифицированного, чтобы посмотреть куда что ушло может что упустил.

Автор:  skn [ 07 ноя 2012, 03:54 ]
Заголовок сообщения:  Re: API для работы с логами телефонии

см. в сторону sql запросов

Автор:  skyb [ 07 ноя 2012, 04:27 ]
Заголовок сообщения:  Re: API для работы с логами телефонии

Вам че всем не спится то )))))

Автор:  aiwbend [ 07 ноя 2012, 11:11 ]
Заголовок сообщения:  Re: API для работы с логами телефонии

Phricker писал(а):
Ввысь

В конфе читал что нужно в csv самым простым способом вывести. Я писал такую, имхо, очень удобную штуку

Код:
package ru.rta.bgbilling.otherglobal;

import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;
import bitel.billing.server.util.MailMsg;

import java.text.SimpleDateFormat;
import java.sql.*;
import java.io.*;
import java.util.zip.*;

import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.*;
import javax.mail.internet.*;
import java.util.*;

public class ReportsForUsersBG
   extends GlobalScriptBase
{
   @Override
   public void execute( Setup setup, ConnectionSet connectionSet )
      throws Exception
   {

Connection con = connectionSet.getConnection();
//Получаем текущую дату и форматируем её вид для имени файла
long curTime = System.currentTimeMillis();
String curStringDate = new SimpleDateFormat("dd.MM.yy").format(curTime); //Обычная дата стринг

String folder = "/home/reports_for_usersBG/";  //папка для сохранения
String FileName = "Необработанные задачи СКПТ:ППО(" + curStringDate + ").csv"; //имя файла в котором сохранять
String folderAndFileName = folder + FileName;
//String FileNameZipped = "TC" + curStringDateFilename + ".105"; //имя файла в котором зиповать
//String folderAndFileNameZipped = folder + FileNameZipped;

String sql = "SELECT c.title, rtt.title, rt.open_dt, rt.comment FROM contract as c LEFT JOIN register_task as rt ON c.id=rt.cid  LEFT JOIN register_task_type as rtt ON rt.type=rtt.id WHERE rt.type = 18 AND rt.lm_dt is null AND rt.status = 0";
PreparedStatement ps = con.prepareStatement( sql );
ResultSet rs = ps.executeQuery();

int count = 0;
PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(folderAndFileName), "CP1251")); //классы "вкладываются" друг в друга
String header = "№Договора;Тип задачи;Дата создания;Коментарий";
pw.println(header);
      while(rs.next())
        {

         String stroka = rs.getString( 1 ) + ";" + rs.getString( 2 ) + ";" + rs.getString( 3 ) + ";" + rs.getString( 4 );
         pw.println(stroka); // записываем строку задачи в файл

         count = count + 1; //считаем общее кол-во задач
      
        }

String itog = "Итого: " + count + "(задач)"; //готовим строку с итогами для записи в файл

pw.println(itog); // записываем строку c итогами в файл
pw.close(); // закрываем
print ("Отчет по необработанным задачам сформирован и сохранен по адресу " +  folderAndFileName);

//Отправляем на почту------------------------------------------------------------------------------------
Vector<String> Emails = new Vector<String>();
//Emails.add("mail1@m.com");
//Emails.add("mail2@m.com");
//Emails.add("mail3@m.com");
Emails.add("mail4@m.com");
Emails.add("mail5@m.com");


MailMsg mm = new MailMsg(setup);
String subject = "Необработанные задачи СКПТ:ППО(" + curStringDate + ")";
String MailText = "На " + curStringDate + " существует " + count + " необработанных задач. ... тратата...";

Multipart multipart = new MimeMultipart();
MimeBodyPart attachmentBodyPart = new MimeBodyPart();
        DataSource source = new FileDataSource(folderAndFileName); //путь до отправляемого файла
        attachmentBodyPart.setDataHandler(new DataHandler(source));
        attachmentBodyPart.setFileName(MimeUtility.encodeText(source.getName()));
        multipart.addBodyPart(attachmentBodyPart);

mm.sendMessage(Emails, subject, MailText, multipart);
print (FileName + " отправлен на " + Emails);

   }

}



Из запроса пишет нужную инфу через разделитель в файл, считает кол-во, сохраняет, отправляет на мыло. Все очень гибко :)

Автор:  Phricker [ 07 ноя 2012, 11:13 ]
Заголовок сообщения:  Re: API для работы с логами телефонии

skn писал(а):
см. в сторону sql запросов

Это было бы гораздо проще если бы логи телефонии не хранились в таблицах по дням. Как по мне :)

2 aiwbend, тут не совсем про то, чтобы в csv сохранить. а именно само получение данных.
Так я мог бы и табличный отчет написать не проблема :)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/