Liebes Forum, liebe Programmierer
Ein Freund von mir bat mich ihm bei einem kleinen Problem für seine Handelswarenfirma zu helfen. Und zwar will er über Outlook (Exchange Server) Aufträge als Termine eintragen und 2 Stunden bevor der Termin eintreten würde, sollte eine SMS an die beteiligte Person beim Termin gesendet werden.
Sprich:
C# Programm liest Outlook Termine aus.
C# Programm vergleicht den Zeitwert. Wenn Zeitwert ≤ 2H vor Terminbeginn
C# Programm liest die SMS Nummer des Kontaktes im Termin aus.
C# Programm verbindet sich mit einem SMS Gateway und schickt so eine SMS ab
Fragen:
Wie schwer zu realisieren ist folgendes Projekt?
Was für einen Arbeitsaufwand schätzt Ihr für das Projekt?
Habt Ihr Erfahrungen mit C# und einem SMS Gateway?
Wie komplex wird der Outlook-Teil werden?
Was muss ich beachten?
Danke für alle Infos bezüglich diesem Thema 😃
Schöne Grüße und ein schönes Wochenende!!
Hallo,
bei den SMS kann ich leider nicht weiterhelfen.
Aber bist du dir sicher, dass Outlook der geeignete Zugriffspunkt auf Termine ist ?
Exchange Web Services (EWS), wozu es auch eine managed API gibt wäre jedenfalls bei
sowas der Kandidat meiner Wahl...
Pc muss nich an sein, Outlook muss nich gestartet sein...
Nur als Anregung 😉
Gruß
Achim
Hallo,
Du meinst also direkt auf den Exchange Server zugreifen und die Termine dort auslesen?
Hi,
das mit dem SMS-Versand sollte aus meiner Sicht kein Problem sein.
Wir setzen sowas auch ein.
Es gibt dafür eigene Firmen die komplette SMS-Solutions anbieten,
aber auch Webhoster haben teilweise kleine SMS-Pakete im Angebot.
Der Funktionsumfang reicht hierbei von einfachem SMS-Versand bis
zu komplexen Lösungen mit Mehrwert-Diensten,...
Mit denen arbeiten wir z.b. zusammen: http://www.mms.ag/
Setzen aber derzeit nur den einfachen SMS-Versand ein.
Funktionieren tut das ganze so dass einfach ein HTTP-GET-Request
an das SMS-Service der Firma abgesetzt wird. Für komplexere
Aufgaben werden XML-Files ausgetauscht... (HTTP-POST afaik)
lg
Da's bei meinem Freund nur ne einfache SMS sein muss, reicht ja ein SMS Gateway für ein paar Euro + entsprechende AT Befehle oder?
Zum Thema Exchange:
Direktzugriff: auf jeden Fall (soweit möglich / Exchange ab 2007)
Ist Outlook zwecks Daten meist vorzuziehen 😉
Und man mag's nicht glauben - aber es ist SEHR einfach 😉
Gruß
Achim
Hallo,
sry für die späte Antwort.
Handelt sich um einen Exchange 2003 Server.
Gehts nun auch mit nem Direktzugriff?
Hi,
Exchange 2003 bietet leider keine WebServices ...
Bleibt dir somit die Wahl zwischen Outlook (falls sinnvoll möglich - eig. halt mehr zur Fernsteuerung gedacht) und Direktzugriff via Redemption (Mapi-Kapselung, was Direktzugriff ermöglichen würde).
Bei Outlook wirst du halt leider Geschwindigkeitsprobleme haben - je nach OL-Version auch noch Warnmeldungen (speziell bei Datenzugriff...)
Ich persönlich würde anfangen mich in Redemption einzuarbeiten.
--> Selbst noch keine Erfahrung damit
Viel Glück
Gruß
Achim
hm alles klar.
denkst du es wird schwer über redemption?
hab selber leider 0 erfahrung mit sowas...
Hoi hur
Würde dir auch Redemption ans Herz legen. Habe damit einen Absenzenservice erstellt der anhand Terminen/Serientermine aus Exchange die Umleitungen einer VOIP-Anlage steuert.
Der Zugriff über Redemption auf Exchange ist recht einfach gehalten. Stolpersteine können Serientermine sein, die man anhand eines "Pattern" und dem (Start-)Termin selber berechnen muss. Kann mir aber vorstellen, dass Serientermine in deinem Fall keine Rolle spielen.
Gruss
David
Ja Serientermine wären für mich ohne Bedeutung 😃
Hättest du mir eventuell ein paar Codebeispiele die den Zugriff von Redemption auf Exchange und einen Termin beschreiben?
Bin leider in dem Bereich absoluter Neuling 😉
Danke.
Hoi hur
//Session initialisieren
RDOSession oSession = RDOSession();
//Mit Exchange connecten
oSession.LogonExchangeMailboxEx(this.exUser, this.exServer, false, false, false, false);
if (oSession.ExchangeConnectionMode == rdoExchangeConnectionMode.olOnline)
{
//Enddatum setzen
DateTime eDate = new DateTime();
eDate = DateTime.Today.AddDays(1).AddSeconds(-1);
//Kalender
RDOFolder oCalendar = oSession.GetDefaultFolder(rdoDefaultFolders.olFolderInbox);
oCalendar.Items.Sort("Start", "false");
//Normale Termine
string filter = "[Start] < '" + eDate.ToString("s") +
"' And [End] > '" + DateTime.Now.ToString("s") +
"' And [IsRecurring] = 'False'";
foreach (RDOAppointmentItem oAppt in oCalendar.Items.Restrict(filter))
{ //Alle Termine von jetzt bis Mitternacht lesen
string subject = oAppt.Subject;
...
..
.
}
}
//Session schliessen
if (this.oSession.LoggedOn) { this.oSession.Logoff(); }
Marshal.ReleaseComObject(oSession);
Gruss
David
Danke 😃
Werd das mal studieren 😉
By the way:
Da ich das Teil eigentlich als Dienst auf dem Exchange Server laufen lassen will, nehme ich an, dass ich den Teil:
LogonExchangeMailboxEx(...)
mit den richtigen Authentifizierungsdaten (User, Passwort, Mailbox) abändern muss?
Schöne Grüße
Du muss nur folgendes angeben:
oSession.LogonExchangeMailboxEx(this.exUser, this.exServer, false, false, false, false);
this.exServer enthält den Namen des Exchange-Servers und
this.exUser den Namen des freigegebenen Kalenders.
Natürlich braucht der User unter dem der Service läuft die entsprechenden Berechtigungen (auf Exchange/Outlook) um den Kalender zu lesen.
Die Beschreibung aller Objekte, Methoden; Properties und Events findest du unter Redemption Data Objects
Gruss
David
Das geht schon sehr ins Detail. Laut Titel geht es hier aber nur um die "Aufwandsschätzung für und [die grobe] Vorgehensweise bei Projekt mit Outlook/SMS Zugriff". Detailfragen gehören in extra Threads mit spezifischem Titel. Dieser Thread hier soll nicht zum Sammel-Thread für alle anfallenden Fragen und auftretenden Probleme werden.