Plugin Erstellung
Endlich mal wieder einen Tag frei. Da ich mit dem freien Tag nicht so viel anzufangen wusste, habe ich einfach mal ein CCNet Plugin erstellt. Allerdings musste ich erst mal herausfinden, was dafür zu tun ist. Die notwendigen Aktionen halten sich in Grenzen, allerdings ist es “gewöhnungsbedürfitg” das Plugin zu erstellen. Ich finde die Entwickler vom CCNet-Team hätten hier einen anderen Weg verfolgen soll. Andererseits muss das jeder selber beantworten. Als Einstieg sollte man die Custom Builder Plug-in Seite sich zu Gemühte führen.
Der 2. Schritt war nun das Suchen nach der richtigen Xmpp-Library (Xmpp==Jabber). Es gibt 3 Libraries für .Net, zumindest laut Wikipedia, also agsXMPP war mir bereits bekannt, also einfach mal Jabber-NET probieren. Um es vorweg zu nehmen – Jabber-NET hat nicht funktioniert, es wurden einfach keine Messages gesendet, also zurück zur bekannten Implementierung.
Nach dem alles zusammengesammelt war, musste das Projekt angelegt werden. Das Assembly muss definierten Regeln für CCNet-Plugins entsprechen, für mein Projekt also “ccnet.xmpp-notifier.plugin”. Anschließend eine Klasse anlegen und mit dem [ReflectorType("xmpp-notifier")]-Attribut versehen. Das letzte sind Attribute definieren und die Logik scribbeln. Ist alles getan kann man mit dem Testen loslegen. Das größte Problem war das herausfinden der .Net Reflector Attribute, aber wenn man sich am CCNet-Code entlang hangelt, war es relativ leicht zu schaffen. Ein bisschen Tricky, wenn das Kommunikationsobjekt zu schnell geschlossen wird, dann scheinen einfach Meldungen verschluckt zu werden.
Die Klasse für den CCNet-Task ist völlig unspektakulär, dort geschieht das reine Handling des Xmpp-Objektes
CCNet-Reflector-Attribute
Attribute-Name | Beschreibung |
ReflectorType | Name des des Tasks, wie dieser in der ccnet.config angesprochen wird. Der Name muss einem Teil des Namespaces entsprechend, unbedingt in der CCNet-Dokumentation genau befolgen. |
ReflectorProperty | Definition einer Property, die mittels Xml-Attributen konfiguriert wird. Der Name muss dem Attribut in der Konfiguration exakt entsprechen. Wenn Required=true angegeben wird, so wird im CCNet-Validator eine Meldung ausgegeben. |
ReflectorArray | Property um Arrays aus der Konfiguration abzulegen, zum Beispiel die Empfängerliste. Der Name der angegeben wird, ist das Gruppierungselement, anschließend müssen die einzelnen Einträge der Property entsprechen. |
ReflectorHash | so ähnlich wie Array |
Configuration Sample
1: <xmpp-notifier
2: server="servername.domain.de"
3: UserName="user@domain.de"
4: Password="xyz1234">
5: <jids>
6: <Jid>user@anydomain</Jid>
7: <Jid>user2@anydomain</Jid>
8: </jids>
9: </xmpp-notifier>
Properies
Property Name | Beschreibung | Default |
server | Optional, ein expliziter Servername für den connect, ansonsten wird dieser über die JID des Nutzers ermittelt. | |
UserName | JID des Benutzer für den Login | |
Password | Passwort des Benutzers | |
jids/jid | Nutzer, an die die Benachrichtung zu senden ist. | |
message | Meldung, die an die Nutzer gesendet wird |
Project $(project) was integrated with status $(status) in $(time) min
|
timeout | Maximale Laufzeit für die Verarbeitung. | 120s |
headline | Angabe, ob die events als HeadLine-Event gesendet werden sollen oder als normale Message. | false |
Download Code http://zieschang-jan.de/documents/Xmpp-Notifier.zip
Keine Kommentare:
Kommentar veröffentlichen