Avaya Supervisor CMS извлекает данные из отчета и загружает их в MySQL

ВАЖНО! Это не правильный способ сделать это! Это просто быстрый хак, который мне нужно реализовать. Прямое подключение к Avaya DB было бы намного лучше. Планировщик заданий Windows работает медленно. Это будет работать только в локальной сети.

Мой план по этому быстрому взлому состоит в следующем:

  1. Вход в Avaya CMS Supervisor версии 19.0
  2. Запустите ".acsauto"
  3. Извлечь данные в .txt

который будет выглядеть так:

Some Nice Service Desk
2,Martin Scorsese,8869711,5543711,,AVAIL,0,47,
5,Alfred Hitchcock,8869712,5543732,Default,AUX,0,785,
5,Stanley Kubrick,8869714,5543722,Default,AUXOUT,173,85,
2,Francis Ford Coppola,8869715,5543733,,AVAIL,0,1252,
5,John Huston,8869713,5543743,Default,AUXOUT,173,186,
  1. Наконец, загрузите его в MySQL 8.0.19 Таблица:
CREATE TABLE `avaya_live_report` (
    `icon_number` TINYINT unsigned NOT NULL,
    `agent_name` TINYTEXT CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
    `agent_number` INT unsigned NOT NULL,
    `extension` INT unsigned NOT NULL,
    `state_type` TINYTEXT CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
    `state` TINYTEXT NOT NULL,
    `zero` TINYINT unsigned NOT NULL,
    `time` SMALLINT unsigned NOT NULL,
    `empty` TINYTEXT NOT NULL);

Поскольку невозможно запланировать Load Data как запланированное событие повторного получения в MySQL:

LOAD DATA INFILE 'C:\\ProgramData\\MySQL\\MySQL Server 8.0\\Uploads\\live_report.txt' 
INTO TABLE avaya_live_report
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n'
IGNORE 1 LINES;

Мне нужно подключиться к MySQL напрямую из сценария .acsauto:

'LANGUAGE=ENU
'SERVERNAME=SOME_NICE_IP_ADDRESS
Public Sub Main()

'## begin
'## ID = 1000
'## Description = "Report: Real-Time: Agent: Agent Group Report: Export Data"
'## Parameters.Add "Report: Real-Time: Agent: Agent Group Report: Export Data","_Desc"
'## Parameters.Add "Reports","_Catalog"
'## Parameters.Add "2","_Action"
'## Parameters.Add "1","_Quit"
'## Parameters.Add "Real-Time\Agent\Agent Group Report","_Report"
'## Parameters.Add "1","_ACD"
'## Parameters.Add "1335","_Top"
'## Parameters.Add "2580","_Left"
'## Parameters.Add "6930","_Width"
'## Parameters.Add "4575","_Height"
'## Parameters.Add "default","_TimeZone"
'## Parameters.Add "The report Real-Time\Agent\Agent Group Report was not found on ACD 1.","_ReportNotFound"
'## Parameters.Add "*","_BeginProperties"
'## Parameters.Add "Nice Service Desk","Agent Group"
'## Parameters.Add "*","_EndProperties"
'## Parameters.Add "*","_BeginViews"
'## Parameters.Add "*","_EndViews"
'## Parameters.Add "C:\Scripts\live.txt","_Output"
'## Parameters.Add "9","_FldSep"
'## Parameters.Add "0","_TextDelim"
'## Parameters.Add "False","_NullToZero"
'## Parameters.Add "False","_Labels"
'## Parameters.Add "True","_DurSecs"

   On Error Resume Next

   cvsSrv.Reports.ACD = 1
   Set Info = cvsSrv.Reports.Reports("Real-Time\Agent\Agent Group Report")

   If Info Is Nothing Then
      If cvsSrv.Interactive Then
          MsgBox "The report Real-Time\Agent\Agent Group Report was not found on ACD 1.", vbCritical Or vbOKOnly, "Avaya CMS Supervisor"
      Else
          Set Log = CreateObject("ACSERR.cvsLog") 
          Log.AutoLogWrite "The report Real-Time\Agent\Agent Group Report was not found on ACD 1."
          Set Log = Nothing
      End If
   Else

       b = cvsSrv.Reports.CreateReport(Info,Rep)
       If b Then

          Rep.Window.Top = 1335
          Rep.Window.Left = 2580
          Rep.Window.Width = 6930
          Rep.Window.Height = 4575        


                        Rep.TimeZone = "default"



          Rep.SetProperty "Agent Group","Nice Service Desk"

          ' StackOverflow PLEASE START READING HERE
          ' This loop lets me action something and then wait for 30 seconds in a loop
          For i=1 To 10
          ' This line creates this nice comma separated txt file (Using TXT file is a lot faster then CSV)
            b = Rep.ExportData("C:\ProgramData\MySQL\MySQL Server 8.0\Uploads\live_report.txt", 44, 0, True, False, True)

            Dim dteWait
            '30 sek
            dteWait = DateAdd("s", 30, Now())
            Do Until (Now() > dteWait)
            Loop
            Next




          Rep.Quit



              If Not cvsSrv.Interactive Then cvsSrv.ActiveTasks.Remove Rep.TaskID
          Set Rep = Nothing
       End If

   End If
   Set Info = Nothing
'## cvs_cmd_end

End Sub

И мне нужно интегрировать это соединение с MySQL в приведенный выше скрипт. Очевидно, что приведенный ниже сценарий является просто сценарием VBA Excel, поэтому он довольно сложен.

Подключить

conMySQL.ConnectionString = "DRIVER={MySQL ODBC 5.1 Driver};" & "SERVER=" & server & ";" & " DATABASE=" & database & ";" & "UID=" & login_user & ";PWD=" & password & "; OPTION=3; PORT=" & port & ";Connect Timeout=20;"

conMySQL.Open

Запрос

strSQL = "SELECT x FROM some_table"
MySQL.Query (strSQL)

With rsTemporary
      Do Until .EOF
          recordCount = recordCount + 1
          some_variable = ![supcode]
          rsTemporary.MoveNext
      Loop
End With
        MySQL.closeCon

Я уже установил драйвер ODBC, но помимо этого у меня есть Avaya CMS Supervisor версии 19.0 + MySQL 8.0.19 в среде разработки.

МОЙ ВОПРОС: Кто-нибудь пытался интегрировать это соединение MySQL в .acsauto Avaya Script?

Заранее спасибо. КК


person Krzysztof Kwietniewski    schedule 09.03.2020    source источник
comment
Это твой вопрос? Кто-нибудь пробовал это?   -  person Robert Harvey    schedule 09.03.2020
comment
Да разве это возможно? Если у кого-то есть работающий пример, это было бы здорово!   -  person Krzysztof Kwietniewski    schedule 09.03.2020
comment
С MySQL 8.0.19, который стал общедоступным 13 января 2020 г., есть ли ПРИЧИНА, по которой вы решили установить программное обеспечение, которому меньше 2 месяцев? У вас есть время сообщать об ошибках и ждать исправления? Если нет, выберите версию, которая была общедоступной не менее 6 месяцев, чтобы не быть человеком, обнаружившим ошибку. А можно поискать в журнале изменений MySQL 8.0.19 и просмотреть уже известные проблемы с 8.0.19 за два месяца использования.   -  person Wilson Hauck    schedule 10.03.2020
comment
Я почти уверен, что драйвер mysql odbc 5.1 не будет работать с сервером 8.0.19. Различный набор символов, другой механизм входа в систему mysql.   -  person Krish    schedule 10.03.2020
comment
Понятно! Это верное замечание. Я понизу версию MySQL. Есть ли у вас примеры сценариев .acauto, работающих с ODBC 5.1? Очевидно, я спрашиваю после того, как уже погуглил, но ничего из того, что я нашел, на самом деле не работало. Еще раз спасибо. Я буду держать вас всех в курсе!   -  person Krzysztof Kwietniewski    schedule 10.03.2020
comment
Я не знаком с ODBC 5.1. Добро пожаловать на stackoverflow.com   -  person Wilson Hauck    schedule 10.03.2020


Ответы (1)


Итак, много лет назад я поигрался с SQL и смог понять, как создать таблицу, удалить таблицу и вставить записи в таблицу. Ниже вставка записей в таблицу Sql

'LANGUAGE=ENU
'SERVERNAME=xxx.xxx.xxx.xxx
Public Sub Main()

   On Error Resume Next

StrConnect = "Driver={SQL Server};Server=xxx.xxx.xxx.xxx\QLIS,2026;Database=OADB;UID=xxxxxxx;PWD=xxxxxxx"
Set cnt = CreateObject("ADODB.Connection")
cnt.Open StrConnect

set recordSet = CreateObject("ADODB.Recordset")
SQLStr = "Select * from tmpCMSData2 "
recordSet.Open SQLStr, cnt, 1, 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("C:\Inetpub\wwwroot\Telecom\COOL_TEXT.txt", 1)

If (objFSO.FileExists("C:\Inetpub\wwwroot\Telecom\COOL_TEXT.txt")) Then

Do Until objFile.AtEndOfStream

  strCharacter = objFile.Read(1)
  strLine = objFile.ReadLine

  For z = Ubound(strLine) to LBound(strLine) Step -1
    arrProcessLines = Split(strLine,",")
    '##msgbox(arrProcessLines(3))
    cnt.Execute "INSERT INTO tmpCMSData2 (Extension, Workmode, Direction)VALUES(" & arrProcessLines(0) & "," & arrProcessLines(1) & "," & arrProcessLines(2) & ")"
  Next

Loop

else
  strFileExists = Msgbox("no")
End If

End Sub

Создание таблицы это:

cnt.Execute "CREATE TABLE tmpCMSData2 (Extension int,Workmode int,Direction int, Duration int, Split int, OnHold int, ACD int, AuxReason int, LogID int, CID varchar(25))"

Пример данных, которые я импортировал в файл COOL_TEXT.txt:

Extn,State,Direction,Time,Split/Skill,ONHOLD,ACD,AUX Reason,Login ID
21281,AUX,0,327,10,0,1,General,42554
17334,AUX,0,1049,10,0,1,General,47322
68909,AUX,IN,71,10,0,1,General,45466
16425,AUX,0,11856,10,0,1,General,48103
16322,AUX,0,2773,10,0,1,General,45955
21394,AVAIL,0,278,10,0,1,,47633
17501,AUX,0,10463,10,0,1,General,48513
16360,AUX,0,3811,10,0,1,General,45996
21305,AUX,0,10229,10,0,1,General,44873

Надеюсь это поможет!

Дэйв М.

person DaveM    schedule 15.06.2020