Агент Before New Mail Arrives

18.09.2012
20
0
#1
Доброго времени суток!

Извините если вопрос повторяется. Просто ничем подобным еще не сталкивался.

Вопрос вот в чем:

Есть SCOM сообщения (уведомления о состоянии серверов), которые приходят по почте Lotus.
Эти сообщения делятся на 3 вида критичности: критическое, тревожное, информационное.
Нужно чтобы эти сообщения, сортировались и перенаправлялись другим пользователям по виду критичности.
И это все нужно сделать на клиентском приложении.

Мои действия:
Создаю агент и делаю событие до прихода почты
делаю код
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As NotesItem

Set session = New NotesSession
Set doc = session.DocumentContext

Set auth = doc.Getitemvalue("FROM")
If auth="SCOM" Then
Set subj = doc.Getitemvalue("Subject")
If subj = "AD Op Master is inconsistent" Then
Call doc.Replaceitemvalue("SendTo","Пользователь_1")
Call doc.Replaceitemvalue("Subject", subj & " !!! Сообщение SCOM !!!")
End If
End if
Call doc.send ( True )
Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Почта где тестирую своя и я там дизайнер. Агент подписал.
Не могу понять что не так помогите плиз.

Скажите еще где надо что-то надо настроить?
Просто я сам не админ а разработчик, нужно как-то обяснить нашим админам где и что делать

Большая ли разница при запуске агента на сервере?

ЗЫ: System Center Operations Manager (SCOM) (ранее Microsoft Operations Manager, MOM) — программа компании Microsoft для управления и мониторинга ИТ-сервисов, приложений, серверов
 

savl

Lotus team
28.10.2011
2 136
105
#3
Jhareg
Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Агент на сервере будет работать, надо на сервере права иметь на запуск.
 
18.09.2012
20
0
#4
А рули настроить не пробовали?
По Rules невозможно сделать выборку, т.к. необходимо делать выборку и распределять по теме сообщения.
Название темы может быть разной.


Добавлено:
Jhareg
Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Агент на сервере будет работать, надо на сервере права иметь на запуск.
Не могли бы вы подробнее объяснить какие права и где задаются?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#7
Потому что в коде ошибки.
Правильно так:
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As String

Set session = New NotesSession
Set doc = session.DocumentContext

auth = doc.Getitemvalue("FROM")(0)
If auth="SCOM" Then
subj = doc.Getitemvalue("Subject")(0)
If subj = "AD Op Master is inconsistent" Then
Call doc.Replaceitemvalue("SendTo","Пользователь_1")
Call doc.Replaceitemvalue("Subject", subj & " !!! Сообщение SCOM !!!")
End If
End if
Call doc.send ( False )
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#8
И Send в конце не обязательно делать. Достаточно просто изменить получателей.
 

savl

Lotus team
28.10.2011
2 136
105
#9
Jhareg
Вставь обработчик ошибок в код:
Код:
Sub Initialize
On Error GoTo handler
Const FuncName = {Agent} ' имя агента

Print FuncName & " Start"

' Твой код агента

Print FuncName & " Finish"
Goto endh

handler:
Print FuncName & ": " & Err &", в стр " & Erl & " " & Error$ 'будет писать в Log.nsf
Resume endh
endh:

End Sub
Поищешь по логам потом, искать по имени агента. Чуть упростит жизнь.
 
I

ipopov

#10
Доброго времени суток!

Извините если вопрос повторяется. Просто ничем подобным еще не сталкивался.

Вопрос вот в чем:

Есть SCOM сообщения (уведомления о состоянии серверов), которые приходят по почте Lotus.
Эти сообщения делятся на 3 вида критичности: критическое, тревожное, информационное.
Нужно чтобы эти сообщения, сортировались и перенаправлялись другим пользователям по виду критичности.
И это все нужно сделать на клиентском приложении.

Мои действия:
Создаю агент и делаю событие до прихода почты
делаю код
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As NotesItem

Set session = New NotesSession
Set doc = session.DocumentContext

Set auth = doc.Getitemvalue("FROM")
If auth="SCOM" Then
Set subj = doc.Getitemvalue("Subject")
If subj = "AD Op Master is inconsistent" Then
Call doc.Replaceitemvalue("SendTo","Пользователь_1")
Call doc.Replaceitemvalue("Subject", subj & " !!! Сообщение SCOM !!!")
End If
End if
Call doc.send ( True )
Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Почта где тестирую своя и я там дизайнер. Агент подписал.
Не могу понять что не так помогите плиз.

Скажите еще где надо что-то надо настроить?
Просто я сам не админ а разработчик, нужно как-то обяснить нашим админам где и что делать

Большая ли разница при запуске агента на сервере?

ЗЫ: System Center Operations Manager (SCOM) (ранее Microsoft Operations Manager, MOM) — программа компании Microsoft для управления и мониторинга ИТ-сервисов, приложений, серверов
На клиенте есть ECL (Execution Control List), скорее всего там у тебя руки и оторваны. Посмотри в File - Security - UserSecurity
 
18.09.2012
20
0
#11
Всем спасибо!
вроде все работает, но я не могу понять почему размер сообщения значительно увеличился?
раньше было 2 кб, теперь стал 100 кб
думаю это от того что я делаю reply
Код:
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As String
Dim c_subj As Integer
Set db = session.Currentdatabase
Set session = New NotesSession
Set doc = session.DocumentContext
Set doc2 = New NotesDocument (db)
auth = doc.Getitemvalue("FROM")(0)			
If auth="scom" Then
subj = doc.Getitemvalue("Subject")(0)
If InStr(1,subj,"A problem has been detected with the trust relationship between two domains") > 1 _ 
Or InStr(1,subj,"WMI Probe Module Failed Execution") >1 
Then
doc2.Subject(0) = subj & " *** КРИТИЧЕСКОЕ ***"
doc2.Body(0) = doc.Getitemvalue("Body")
doc2.SendTo(0) = "автор1, автор2, автор3" ' пользователи по списку
Call doc2.send(true)
Else
doc2.Subject(0) = subj & " *** НОВОЕ *** "
doc2.Body(0) = doc.Getitemvalue("Body")
doc2.SendTo(0) = "автор1"
End If
End If
End Sub
но код не работает. помогите
 
I

ipopov

#12
Доброго времени суток!

Извините если вопрос повторяется. Просто ничем подобным еще не сталкивался.

Вопрос вот в чем:

Есть SCOM сообщения (уведомления о состоянии серверов), которые приходят по почте Lotus.
Эти сообщения делятся на 3 вида критичности: критическое, тревожное, информационное.
Нужно чтобы эти сообщения, сортировались и перенаправлялись другим пользователям по виду критичности.
И это все нужно сделать на клиентском приложении.

Мои действия:
Создаю агент и делаю событие до прихода почты
делаю код
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument, doc2 As NotesDocument
Dim auth,subj As NotesItem

Set session = New NotesSession
Set doc = session.DocumentContext

Set auth = doc.Getitemvalue("FROM")
If auth="SCOM" Then
Set subj = doc.Getitemvalue("Subject")
If subj = "AD Op Master is inconsistent" Then
Call doc.Replaceitemvalue("SendTo","Пользователь_1")
Call doc.Replaceitemvalue("Subject", subj & " !!! Сообщение SCOM !!!")
End If
End if
Call doc.send ( True )
Но когда сохраняю пишет "You do not have execution access privileges for agent". It will not run.
Почта где тестирую своя и я там дизайнер. Агент подписал.
Не могу понять что не так помогите плиз.

Скажите еще где надо что-то надо настроить?
Просто я сам не админ а разработчик, нужно как-то обяснить нашим админам где и что делать

Большая ли разница при запуске агента на сервере?

ЗЫ: System Center Operations Manager (SCOM) (ранее Microsoft Operations Manager, MOM) — программа компании Microsoft для управления и мониторинга ИТ-сервисов, приложений, серверов
раз: права на запуск/создание агентов на сервере, закладка Security в Server Document
два: ты уже сказал
Dim session As New NotesSession
Зачем потом
Set session = New NotesSession ?!!
 
18.09.2012
20
0
#13
раз: права на запуск/создание агентов на сервере, закладка Security в Server Document
два: ты уже сказал
Dim session As New NotesSession
Зачем потом
Set session = New NotesSession ?!!
1) права на запуск есть
2) это уже убрал
но код все равно не отрабатывает
стоит обработчик ошибок, но ничего не показывает
как посмотреть где тормозит?
 

savl

Lotus team
28.10.2011
2 136
105
#14
В логах что?
Как обработчик выглядит? Если мой ищи в Log.Nsf сервера по имени агента.
Если есть Start и Finish и без ошибок, то проблема может быть в условии:
If auth="scom" Then - просто не выполняется и идет на выход.
auth - если это имя сервера, то скорее всего ты неверно сравниваешь... Оно каноническое будет CN=..
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 599
277
#15
создать пускалку в интерактиве (агент, с целью None)
@Command([ToolsRunMacro];"ProcessIn");
@All
где вместо "ProcessIn" имя своего маилин и отлаживать спокойно :mail:
 
18.09.2012
20
0
#16
В логах что?
Как обработчик выглядит? Если мой ищи в Log.Nsf сервера по имени агента.
Если есть Start и Finish и без ошибок, то проблема может быть в условии:
If auth="scom" Then - просто не выполняется и идет на выход.
auth - если это имя сервера, то скорее всего ты неверно сравниваешь... Оно каноническое будет CN=..
в логах агент запускается и вот что пишет
189, в стр 76 Illegal use of PROPERTY

76 строка это:
Код:
75:	 Then
76:			doc2.Subject(0) = subj & " *** КРИТИЧЕСКОЕ ***"
77:			doc2.Body(0) = doc.Getitemvalue("Body")
78:			doc2.SendTo(0) = "автор1, автор2, автор3" ' пользователи по списку
79:			Call doc2.send(true)
80:		Else
получается неправильно делаю присвоение темы и тело сообщении для нового документа.
это я делаю для того, чтобы размер файла при отправке не изменялся, а то получается как reply и размер соответственно увеличивается
может я что делаю не так?
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#18
Я ещё в посте #7 написал как надо делать. auth, subj должны быть типа String, а NotesItem.
 
18.09.2012
20
0
#19
Ричтекст-поля так не присвоишь, RTFM.
а как надо присваивать?


Добавлено:
Я ещё в посте #7 написал как надо делать. auth, subj должны быть типа String, а NotesItem.
они сейчас стоят как String

актуальный код в посте #11
 

savl

Lotus team
28.10.2011
2 136
105
#20
Jhareg
Используй копирование NotesItem.
Код:
Set BodyItem = doc.GetFirstItem( "Body" )
if BodyItem is Nothing Then Error 5005, "No Body in mail" 'Это как проверка на существование, можно и убрать.
Set BodyItem2 = BodyItem.CopyItemToDocument( doc2, "Body" )