<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Technology Blog &#187; alerte</title>
	<atom:link href="http://ro.m-sec.net/tag/alerte/feed/" rel="self" type="application/rss+xml" />
	<link>http://ro.m-sec.net</link>
	<description>Omul este cel mai extraordinar computer</description>
	<lastBuildDate>Sat, 18 Jul 2015 10:45:40 +0000</lastBuildDate>
	<language>ro-RO</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Alerte SMS din Sharepoint 2010</title>
		<link>http://ro.m-sec.net/2011/11/alerte-sms-din-sharepoint-2010/</link>
		<comments>http://ro.m-sec.net/2011/11/alerte-sms-din-sharepoint-2010/#comments</comments>
		<pubDate>Thu, 03 Nov 2011 01:09:36 +0000</pubDate>
		<dc:creator><![CDATA[Bogdan Alecu]]></dc:creator>
				<category><![CDATA[Sharepoint]]></category>
		<category><![CDATA[alerte]]></category>
		<category><![CDATA[custom]]></category>
		<category><![CDATA[email]]></category>
		<category><![CDATA[gsm]]></category>
		<category><![CDATA[handler]]></category>
		<category><![CDATA[modem]]></category>
		<category><![CDATA[sharepoint 2010]]></category>
		<category><![CDATA[sms]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://ro.m-sec.net/?p=14</guid>
		<description><![CDATA[Inspirat fiind de ceea ce scria Valy în această postare  m-am gândit că n-ar fi rău să încerc implementarea de alerte prin SMS oferită de Sharepoint 2010. Totuşi, deşi Microsoft a decis să folosească un format proprietar pentru alertarea prin SMS, denumit OMS (Office Mobile Service Protocol), am început să caut vreo modalitate de a<a href="http://ro.m-sec.net/2011/11/alerte-sms-din-sharepoint-2010/"> <br /><br /> (Read More...)</a>]]></description>
				<content:encoded><![CDATA[<p>Inspirat fiind de ceea ce scria Valy în <a title="Sharepoint migrare" href="http://valygreavu.com/2011/10/12/sharepoint-migrare-la-2010" target="_blank">această postare</a>  m-am gândit că n-ar fi rău să încerc implementarea de alerte prin SMS oferită de Sharepoint 2010. Totuşi, deşi Microsoft a decis să folosească un format proprietar pentru alertarea prin SMS, denumit OMS (<a title="OMS KB" href="http://msdn.microsoft.com/en-us/library/dd774103(v=office.12).aspx" target="_blank">Office Mobile Service Protocol</a>), am început să caut vreo modalitate de a intercepta alerta <strong>înainte</strong> de a fi trimisă.</p>
<p>Nu mi-a luat prea mult să găsesc modalitatea în care pot face acest lucru, deşi ceea ce am găsit <span style="text-decoration: line-through;">nu m-a ajutat prea mult</span> se referea la alertele prin email, aşa că am început să-mi instalez maşina virtuală. Din păcate nu am avut mare success întrucât, odată instalat totul, dura aproximativ 7 minute să dau un click <img src="http://ro.m-sec.net/wp-includes/images/smilies/simple-smile.png" alt=":)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> L-am rugat pe Valy dacă mă poate ajuta cu ceva resurse şi, după cum citiţi, a fost de acord – Valy, dau o bere.</p>
<p>Aşadar, înarmat cu tutorialul găsit pe <a title="Tutorial MS" href="http://support.microsoft.com/kb/948321" target="_blank">KB Microsoft</a> am început treaba. La început ideea a stat în felul următor: implementez captarea alertelor prin e-mail, după care folosesc codul rezultat la alertele prin SMS. Din păcate această abordare a fost total greşită, dându-mi seama târziu că acest lucru nu este posibil. <a title="Implementare Handler" href="http://msdn.microsoft.com/en-us/library/bb897791.aspx" target="_blank">Aici</a>  spune clar că nu este posibilă interceptarea alertelor de tip SMS din handler, dar dacă vrem totuşi să folosim alt protocol decât OMS, va trebui să implementăm propriul <a title="Serviciu web alerte" href="http://msdn.microsoft.com/en-us/library/ee537514.aspx" target="_blank">serviciu web</a> ce se interpune între OMS şi alt protocol. Lucrurile sunt destul de triste şi, aşa cum am mai spus, nu înţeleg abordarea Microsft cu aceste cazuri speciale. Am ales aşadar o altă soluţie: mă voi folosi de alertele prin email, iar userii care doresc să primească şi SMS (lucru ce poate fi aflat printr-un Survey de exemplu) vor primi mesaje text dar şi email în acelaşi timp pentru zonele dorite.</p>
<p>Iată modul de implementare:</p>
<ol>
<li>Utilizatorul optează pentru recepţionarea de mesaje prin SMS</li>
<li>Utilizatorul îşi modifică setările personale (My Settings) definindu-şi un număr de telefon mobil, după care alege alertele prin email pe care le doreşte</li>
<li>Handler-ul creează alerta pentru email şi o altă alertă cu un conţinut mai sumar, fără cod HTML, ce va fi trimis la o adresă suplimentară. Totodată aici se preia numărul de telefon mobil anterior definit şi se pune în subiectul mesajului adiţional pentru putea trimite mai uşor SMS-ul</li>
<li>Adresa de email este monitorizată constant, automat, şi în momentul primirii mesajului există un alt soft ce expediază SMS la numărul pus în subiect, având conţinutul din corpul (body) mesajului. Înainte de trimiterea mesajului se verifică dacă utilizatorul a optat pentru SMS, prin asocierea numărului de telefon cu opţiunea din survey.</li>
<li>Utilizatorul primeşte alerta pe telefonul mobil</li>
</ol>
<p>&nbsp;</p>
<p>Abordarea expusă este buna? Este rea? Ca întotdeauna răspunsul este “depinde”. Câteva aspecte de luat în calcul:</p>
<p>a)      Se renunţă într-adevăr la opţiunea de alertare prin SMS a Sharepoint, ceea ce presupune ceva parte de programare</p>
<p>b)      Totuşi sunt puţini provideri de SMS care suportă protocolul OMS</p>
<p>c)      În medie costul unui SMS este de 5-6 eurocenti către Europa, iar dacă din nefericire am vreo 2000 useri fiecare primind câte 10 alerte pe zi, ajung la un cost de 1000 EUR în fiecare zi</p>
<p>d)      Folosind un provider online pot seta expeditorul, astfel încât de exemplu pot primi mesaj de la PortalFEAA, ceea ce pe modem nu pot face</p>
<p>e)      Folosind handler personalizat am control mai bun a ceea ce se trimite</p>
<p>f)        Nu e nevoie să folosesc un provider online, ci pot folosi la fel de bine 1-2-3 modem-uri GSM ataşate la server. Astfel pot lua un pachet cu SMS-uri nelimitate în reţea şi să mă folosesc de ele, reducând din costuri</p>
<p>g)      Timpul mediu necesar expedierii unui SMS prin modem este undeva pe la 10 secunde, astfel încât la un flux mare de alerte este foarte posibil ca anumiţi utilizatori să primească abia a2a zi mesajul</p>
<p>h)      Având control total, pot expedia mesaje de tip <a title="WAP push" href="http://en.wikipedia.org/wiki/Wireless_Application_Protocol" target="_blank">WAP Push</a> astfel încât daca s-a modificat un document spre exemplu, atunci prin acest mesaj utilizatorul poate deschide automat locaţia documentului. Acest lucru este util mai ales la telefoanele care nu stiu sa interpreteze o adresa web ca fiind hyperlink (vezi demo la final)</p>
<p>&nbsp;</p>
<p>Să trecem acum la implementare&#8230;</p>
<p>Mai întâi am instalat Visual Studio 2010 alături de componentele de Sharepoint (SDK) – treaba se desfăşoară la modul Next, Next, Finish – după care…</p>
<p>&nbsp;</p>
<p>1. Documentaţia spune că trebuie creeat un handler propriu care moşteneşte interfaţa IAlertNotificationHandler, apoi fiind oferit codul. Mda, chestii puţin mai complicate aşa că încerc să-mi amintesc de lucrurile facute în facultate. Pas cu pas, pentru a avea codul funcţional lucrurile stau cam aşa…</p>
<p> a) deschideţi Visual Studio 2010, alegând ca şi interfaţă de dezvoltare Visual C#. Alegeţi File – New – Project, din fereastra nouă selectăm Class Library</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/1-viclass.png"><img class="alignnone size-medium wp-image-16" title="1-viclass" src="http://ro.m-sec.net/wp-content/uploads/2011/11/1-viclass-300x99.png" alt="Visual Studio Class" width="300" height="99" /></a></p>
<p>b) Faceţi Copy-Paste la codul de mai jos. Dacă încercaţi să luaţi codul <strong><span style="text-decoration: underline;">oficial</span></strong>, veţi beneficia de o frumoasa eroare: variabila eventType nu e declarata nicăieri (thanks MS). <strong>Nu uitaţi să modificaţi a2a adresă de email la care se trimite mesajul special construit pentru SMS-uri</strong>.</p>
<p>&nbsp;</p>
<blockquote><p>using System;</p>
<p>using System.Collections.Generic;</p>
<p>using System.Linq;</p>
<p>using System.Text;</p>
<p>using Microsoft.SharePoint;</p>
<p>using Microsoft.SharePoint.Utilities;</p>
<p>using System.Web;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>namespace ClassLibrary1</p>
<p>{</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>    public class Class1 : IAlertNotifyHandler</p>
<p>    {</p>
<p>        #region IAlertNotifyHandler Members</p>
<p>&nbsp;</p>
<p>        public bool OnNotification(SPAlertHandlerParams ahp)</p>
<p>        {</p>
<p>            SPSite site = null;</p>
<p>            SPWeb web = null;</p>
<p>&nbsp;</p>
<p>            try</p>
<p>            {</p>
<p>                site = new SPSite(ahp.siteUrl + ahp.webUrl);</p>
<p>                web = site.OpenWeb();</p>
<p>                SPList list = web.Lists[ahp.a.ListID];</p>
<p>                SPListItem item = list.GetItemById(ahp.eventData[0].itemId);</p>
<p>&nbsp;</p>
<p>                string FullPath = HttpUtility.UrlPathEncode(ahp.siteUrl + &#8222;/&#8221; + ahp.webUrl + &#8222;/&#8221; + list.Title + &#8222;/&#8221; + item.Name);</p>
<p>                string ListPath = HttpUtility.UrlPathEncode(ahp.siteUrl + &#8222;/&#8221; + ahp.webUrl + &#8222;/&#8221; + list.Title);</p>
<p>                string webPath = HttpUtility.UrlPathEncode(ahp.siteUrl + &#8222;/&#8221; + ahp.webUrl);</p>
<p>                string eventType = &#8222;&#8221;;</p>
<p>                string build = &#8222;&#8221;;</p>
<p>                string buildsms = &#8222;&#8221;;</p>
<p>                if (ahp.eventData[0].eventType == 1)</p>
<p>                    eventType = &#8222;Adaugat&#8221;;</p>
<p>                else if (ahp.eventData[0].eventType == 2)</p>
<p>                    eventType = &#8222;Modificat&#8221;;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>                build = &#8222;&lt;style type=\&#8221;text/css\&#8221;&gt;.style1 { font-size: small; border: 1px solid #000000;&#8221; +</p>
<p>                &#8222;background-color: #DEE7FE;}.style2 { border: 1px solid #000000;}&lt;/style&gt;&lt;/head&gt;&#8221; +</p>
<p>                &#8222;&lt;p&gt;&lt;strong&gt;&#8221; + item.Name.ToString() + &#8222;&lt;/strong&gt; a fost &#8221; + eventType + &#8222;&lt;/p&gt;&#8221; +</p>
<p>                &#8222;&lt;table style=\&#8221;width: 100%\&#8221; class=\&#8221;style2\&#8221;&gt;&lt;tr&gt;&lt;td style=\&#8221;width: 25%\&#8221; class=\&#8221;style1\&#8221;&gt;&#8221; +</p>
<p>                &#8222;&lt;a href=&#8221; + webPath + &#8222;/_layouts/mysubs.aspx&gt;Modifica setarile&lt;/a&gt;&lt;/td&gt;&#8221; +</p>
<p>                &#8222;&lt;td style=\&#8221;width: 25%\&#8221; class=\&#8221;style1\&#8221;&gt; &lt;a href=&#8221; + FullPath + &#8222;&gt;Vezi &#8221; + item.Name + &#8222;&lt;/a&gt;&lt;/td&gt;&#8221; +</p>
<p>                &#8222;&lt;td style=\&#8221;width: 25%\&#8221; class=\&#8221;style1\&#8221;&gt;&lt;a href=&#8221; + ListPath + &#8222;&gt;Vezi &#8221; + list.Title + &#8222;&lt;/a&gt;&lt;/td&gt;&#8221; +</p>
<p>                &#8221; &lt;/tr&gt;&lt;/table&gt;&#8221;;</p>
<p>&nbsp;</p>
<p>                // iau userul si informatiile</p>
<p>                SPUser user = web.AllUsers.GetByID(ahp.a.UserId);</p>
<p>                SPListItem userInfo = user.ParentWeb.SiteUserInfoList.GetItemById(user.ID);</p>
<p>&nbsp;</p>
<p>                //subiectul pentru email</p>
<p>                string subject = list.Title.ToString();</p>
<p>                SPUtility.SendEmail(web, true, false, ahp.headers[&#8222;to&#8221;].ToString(), subject, build);</p>
<p>&nbsp;</p>
<p>                //subiectul pentru SMS &#8211; iau nr de tel mobil si construiesc un continut mai scurt</p>
<p>                string smssubject = userInfo[&#8222;MobilePhone&#8221;].ToString();</p>
<p>                buildsms = item.Name.ToString() + &#8221; a fost &#8221; + eventType + &#8221; &#8211; Vezi continutul: &#8221; + FullPath;</p>
<p>                SPUtility.SendEmail(web, true, false, &#8222;alert.sms@feaa.uaic.ro&#8221;, smssubject, buildsms);</p>
<p>                return false;</p>
<p>            }</p>
<p>            catch (System.Exception ex)</p>
<p>            {</p>
<p>                return false;</p>
<p>            }</p>
<p>            finally</p>
<p>            {</p>
<p>                if (web != null)</p>
<p>                    web.Dispose();</p>
<p>                if (site != null)</p>
<p>                    site.Dispose();</p>
<p>            }</p>
<p>&nbsp;</p>
<p>        }</p>
<p>&nbsp;</p>
<p>        #endregion</p>
<p>    }</p>
<p>    //===================code end=====================</p>
<p>&nbsp;</p>
<p>}</p></blockquote>
<p>&nbsp;</p>
<p>c)  Adăugarea de referinţe în proiect: se dă + pe References, selectăm directorul References, click dreapta, Add reference. Referinţa pentru Sharepoint se găseşte în locaţia “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\” de unde selectăm Microsoft.SharePoint.dll. Alte referinţe, în cazul în care aveţi erori, le alegeţi din tab-ul .NET</p>
<p> <a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/2-ref1.png"><img class="alignnone size-full wp-image-17" title="2-ref1" src="http://ro.m-sec.net/wp-content/uploads/2011/11/2-ref1.png" alt="Visual Studio Reference1" width="273" height="157" /></a>  <a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/3-ref2.png"><img class="alignnone size-medium wp-image-18" title="3-ref2" src="http://ro.m-sec.net/wp-content/uploads/2011/11/3-ref2-300x246.png" alt="Visual Studio Reference2" width="300" height="246" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>d)      Dacă nu aveţi erori, codul este perfect. Un alt lucru care nu este spus prin documentaţie este acela că cel mai probabil IIS-ul se bazează pe o versiune mai veche de .NET Framework, astfel încât va trebui să specificăm acest fapt în proiectul C#. Pentru asta click dreapta pe numele de namespace din Solution Explorer, Properties. În noul tab se merge la Application, Target Framework unde selectăm .NET Framework 3.5</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/4-prjprop.png"><img class="alignnone size-medium wp-image-20" title="Visual Studio Project Properties" src="http://ro.m-sec.net/wp-content/uploads/2011/11/4-prjprop-256x300.png" alt="" width="256" height="300" /></a></p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/5-applfrwrk.png"><img class="alignnone size-medium wp-image-21" title="Visual Studio Project .NET Framework" src="http://ro.m-sec.net/wp-content/uploads/2011/11/5-applfrwrk-300x196.png" alt="" width="300" height="196" /></a></p>
<p>2.Codul are ca şi rezultat un fişier .dll, fişier ce trebuie să fie „strongly signed” după care se adaugă în Global Assembly Cache (GAC). Cu alte cuvinte, fişierul trebuie semnat pentru a ne asigura că este unic, după care trebuie adăugat în cache-ul .NET pentru ca Sharepoint-ul să ştie de unde să-l ia.<br />
Pentru a semna dll-ul, în proiectul C# deschidem din nou proprietăţile cum am făcut mai sus, iar de această dată alegem Signing. Se bifează “Sign the assembly”,  iar din drop-down click pe New. În noua fereastră alegem un nume, dar nu bifăm “Protect my key file with a password”.</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img5-1.png"><img class="alignnone size-medium wp-image-22" title="Visual Studio Signing" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img5-1-300x241.png" alt="" width="300" height="241" /></a>   <a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img6.png"><img class="alignnone size-medium wp-image-23" title="Visual Studio Sign Key" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img6-300x185.png" alt="" width="300" height="185" /></a></p>
<p>Acum suntem siguri că fişierul rezultat e semnat. Pentru a obţine dll-ul, din Build alegem Build Solution, rezultatul aflându-se în folder-ul Bin\Debug din locaţia unde aveţi proiectul pe disc.</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img7.png"><img class="alignnone size-full wp-image-24" title="Visual Studio Build Solution" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img7.png" alt="" width="261" height="203" /></a></p>
<p>Adăgarea în GAC are mai multe metode şi nu se face din Visual Studio Command Prompt sau din locaţia .NET 4.0 ca <a title="GAC Info" href="http://msdn.microsoft.com/en-us/library/dkkx7f79(v=VS.100).aspx" target="_blank">aici</a>  ci folosind utilitarul „gacutil” din „C:\program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin. Comanda este „gacutil –i &lt;cale catre fisier dll&gt;”.</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img8.png"><img class="alignnone size-medium wp-image-25" title="GACutil" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img8-300x148.png" alt="" width="300" height="148" /></a></p>
<p>Pentru a fi siguri că într-adevăr a ajuns în GAC, din Start &#8211; Run accesăm C:\Windows\assembly unde ar trebui să existe numele fişierului.</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img9.png"><img class="alignnone size-medium wp-image-26" title="GAC Assembly" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img9-300x225.png" alt="" width="300" height="225" /></a></p>
<p>Dacă totul a decurs bine până aici, acum vine partea mai uşoară. Sharepoint 2010 ţine template-urile pentru alerte în folderul “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Xml”. Aici sunt 2 fişiere XML: alerttemplates.xml pentru alerte prin email, alerttemplates_sms.xml pentru SMS.</p>
<p>3. Faceţi o copie a alerttemplates.xml şi denumiţi-o altfel (eu am folosit CaAlertTemplates.xml). Deschideţi fişierul şi căutaţi tipul de alertă ce vreţi să folosească dll-ul propriu. Tipul de alertă este specificat în tag-ul AlertTemplate. De exemplu pentru Document Library ar fi  &lt;AlertTemplate Type=&#8221;List&#8221; Name=&#8221;SPListTemplateType.DocumentLibrary&#8221;&gt;. În zona de Properties vor trebui adăugate următoarele rânduri:</p>
<blockquote><p> &lt;NotificationHandlerAssembly&gt;ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d59ecf2a3bd66904&lt;/NotificationHandlerAssembly&gt;<br />
&lt;NotificationHandlerClassName&gt;ClassLibrary1.Class1&lt;/NotificationHandlerClassName&gt;<br />
&lt;NotificationHandlerProperties&gt;&lt;/NotificationHandlerProperties&gt;</p></blockquote>
<p>&nbsp;</p>
<p><strong><span style="text-decoration: underline;">Foarte important</span></strong>:</p>
<p>a)      <em>ClassLibrary1</em> este numele atribuit pentru namespace din proiectul C#<br />
b)      <em>Class1</em> este numele clasei din proiect şi va trebui trecut sub forma namespce.clasa<br />
c)      <em>PublicKeyToken</em> e codul unic dat de semnătura dll. Cel mai uşor îl puteţi afla prin vizualizarea proprietăţilor noului fişier din C:\Windows\assembl (img9)</p>
<p>Codul final pentru Properties ar trebui să arate aproximativ astfel:</p>
<blockquote><p>&lt;ImmediateNotificationExcludedFields&gt;ID;Author;Editor;Modified_x0020_By;Created_x0020_By;_UIVersionString;ContentType;TaskGroup;IsCurrent;Attachments;NumComments;&lt;/ImmediateNotificationExcludedFields&gt;            &lt;DigestNotificationExcludedFields&gt;ID;Author;Editor;Modified_x0020_By;Created_x0020_By;_UIVersionString;ContentType;TaskGroup;IsCurrent;Attachments;NumComments;&lt;/DigestNotificationExcludedFields&gt;<br />
&lt;NotificationHandlerAssembly&gt;ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d59ecf2a3bd66904&lt;/NotificationHandlerAssembly&gt;<br />
&lt;NotificationHandlerClassName&gt;ClassLibrary1.Class1&lt;/NotificationHandlerClassName&gt;<br />
&lt;NotificationHandlerProperties&gt;&lt;/NotificationHandlerProperties&gt;</p></blockquote>
<p>&nbsp;</p>
<p>Salvaţi XML-ul şi asiguraţi-vă că se află în folderul “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Template\Xml”.</p>
<p>4. Pentru a folosi template-ul personalizat, din “C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\Bin” se lansează comanda:</p>
<blockquote><p>stsadm -o updatealerttemplates -filename &#8222;C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\XML\nume_fisier_template.xml&#8221; -url adresa_site</p></blockquote>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/img10.png"><img class="alignnone size-medium wp-image-27" title="Stsadm command" src="http://ro.m-sec.net/wp-content/uploads/2011/11/img10-300x148.png" alt="" width="300" height="148" /></a></p>
<p>Întrucat la o instalare implicită timpul de trimitere al alertelor imediate este de 5 minute, vom modifica valoare la 1 minut:</p>
<blockquote><p>stsadm -o setproperty -pn job-immediate-alerts -pv &#8222;every 1 minutes&#8221;</p></blockquote>
<p>5. Au mai rămas doar câţiva paşi: rulăm <strong>iisreset</strong>, restart la serviciul Sharepoint Timer Service.</p>
<p>Dacă schimbaţi ceva în cod, atunci trebuie pus iar în GAC, iisreset si restart la Sharepoint Timer.</p>
<p>După cum observaţi din cod, am construit un email personalizat pentru alerta de tip SMS, în care am pus ca subiect numărul de telefon din profilul personal al utilizatorului, iar în conţinut faptul că fişierul x a fost modificat-adăugat şi adresa unde se află. Ceea ce a mai rămas de făcut este să avem o aplicaţie ce monitorizează permanent căsuţa respectivă de email, preia conţinutul şi-l trimite la un SMS gateway. O soluţie gratuită pentru SMS gateway (pe Linux ce-i drept) este <a title="Kannel" href="http://www.kannel.org/" target="_blank">Kannel</a>  şi cu ceva cătări pe net găsiţi implementat cod care face trimiterea de mesaje email-to-SMS. Eu am folosit pentru Windows produsul <a title="Ozeki NG software" href="http://www.ozekisms.com" target="_blank">Ozeki NG</a>  ce ştie deja de email to SMS. La oricare dintre aceste produse se poate ataşa atât un modem fizic cât şi configura o conexiune via SMPP/HTTP. Informaţii despre modul de configurare găsiţi <a title="Ozeki SMS to Email" href="http://www.ozekisms.com/index.php?owpn=226" target="_blank">aici</a>, iar lucrurile funcţionează cam aşa</p>
<p><a class="shutterset_sms" href="http://ro.m-sec.net/wp-content/uploads/2011/11/ozeking-email.png"><img class="alignnone size-medium wp-image-29" title="Ozeking Email2SMS" src="http://ro.m-sec.net/wp-content/uploads/2011/11/ozeking-email-300x113.png" alt="" width="300" height="113" /></a></p>
<p>Acum aveţi un sistem funcţional de alertare prin SMS al Sharepoint, folosind alertarea prin email. Sper să folosească cuiva cele expuse aici sau, dacă există îmbunătăţiri, să le expună aici.</p>
<p>&nbsp;</p>
<p>Vedere generala a modului de dezvoltare</p>
<p><iframe src="http://player.vimeo.com/video/31347226?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="265"></iframe></p>
<p>Demo funcţionare alerte (email)</p>
<p><iframe src="http://player.vimeo.com/video/31346564?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="160"></iframe></p>
<p>Demo funcţionare alerte (SMS)</p>
<p><iframe src="http://player.vimeo.com/video/31347404?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="225"></iframe></p>
<p>Primire mesaj WAP Push pe telefon</p>
<p><iframe src="http://player.vimeo.com/video/31347541?title=0&amp;byline=0&amp;portrait=0" frameborder="0" width="400" height="707"></iframe></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ro.m-sec.net/2011/11/alerte-sms-din-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
