Сейчас на сайте
Сейчас 5 гостей онлайнПоиск
Tag Cloud
Twitter oAuth и Cod... Баллада о г... сихи лирик... стихи лири... Динамическ... Домашняя с... Использова... Использова... Отправка с... Создание ф... Шепот посл... TinyMCE в Rails стихи лири... Быстрая ра... Пишем собс... Создание с... Установка ... Ностальгия... Москва-Бел... стихи лири... Стихи про п... Крылья сти... Создание п... Простой по... Создание п... Одинокий в... Гражданин ... Несчастный... Сонет стих... Отрезок ст... Врагу не сд... Предчувств... Поиск в ст... Использова... Смерть дву... Использова... Как сделат... Как сделат... Облако тег... Южная сере... Программна... Codeigniter в де... CodeIgniter: фор... проверка в... стихи лири... WEB fetcher(scrappe... Простой Twitt... стихи твор... стихи лири... Проверка п... Создание и ... Побег с Сол... Отправка SMS... MS VSTO 2007/Infusio... Установка R... Fckeditor в при... Степные тр... моя любовь. К твоим оз... Сомкнуть л... чтоб отдат... вот – вот ... еще не расс... Снег тишина и лу... и мира пово... что мой пос... Лишь ты. И т... ты любима ты чиста. Экспорт да... Я пью до дн... что нам теп... -Наш первый... Социальные... Социальные... Спит в можж... Воздух про... Стены рожденные ... эхо умрет. Неотправле... стихи лири... Он порезал... Боясь шагн... не осталос... Услышать з... Программир...
| MS VSTO 2007/Infusionsoft API /MS Outlook 2007 – практическая интеграция |
|
|
|
| 19.11.2011 18:35 |
|
Существует такой программный продукт как Infusionsoft - автоматизированная система маркетинга. Желающие могут больше узнать прямо на сайте компании: http://www.infusionsoft.com/ Как и любой крупный проект использующий данные пользователей, Infusionsoft имеет собсвтенный API, используя который можно получить доступ к некоторым его функциям с использованием XML RPC. Мы совестим данное API с VSTO 2007 и создадим приложение, интегрированное в InfusionSoft и MS Outlook.
В начале необходимо скачать с сайта http://www.cookcomputing.com/blog/archives/installing-current-release-of-xml-rpc-net-from-nuget библиотеку XML-RPC.NET и установить ее с помощью «Package Manager Console» в Visual Studio .Для этого запускаем консоль и вводим такой код: >install-package xmlrpcnet -Version 2.5.0 После запускаем в Visual Studio (c заранее установленным пакетом VSTO 2007 ) и создаем проект типа «OutlookAddIn».Сразу добавляем посредством «Add Reference» ссылку на «CookComputing.XmlRpc» и помещаем новое пространство имен в наш исходник. Затем редактируем стандартный код:
1. В начале создаем объекты, создающие новую кнопу в меню MS Outlook 2007
Office.CommandBar menubar; Office.CommandBarPopup cmdBarControl; Office.CommandBarButton menuCommand;
2. Там же размещаем переменную типа string для ключа доступа к InfusionSoft API и описываем реализацию интерфейса XmlRpc с методам, котоые возможно будут здесь использоваться:
string key = "12qqwqssad12123234343434";
[XmlRpcUrl("https://mach2.infusionsoft.com:443/api/xmlrpc")] public interface iFace : IXmlRpcProxy { [XmlRpcMethod("ContactService.add")] int Add(string key, XmlRpcStruct map);
[XmlRpcMethod("ContactService.addToGroup")] bool AddGrp(string key, int conID, int grpID);
[XmlRpcMethod("ContactService.addToCampaign")] bool AddCamp(string key, int conID, int campID);
}
3. Затем в стандартном методе ThisAddIn_Startup описываем реализацию нового пункта меню и его обработчик.Здесь создается новый пункт,который добавляется в MS Outlook.
menubar = Application.ActiveExplorer().CommandBars.ActiveMenuBar; cmdBarControl = (Office.CommandBarPopup)menubar.Controls.Add (Office.MsoControlType.msoControlPopup, missing, missing,menubar.Controls.Count, true); if (cmdBarControl != null) { cmdBarControl.Caption ="InfusionSoft Contact"; menuCommand = (Office.CommandBarButton)cmdBarControl.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, missing,true); menuCommand.Caption ="Add contact To InfusionSoft"; menuCommand.Tag = DateTime.Now.ToString(); menuCommand.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(menuCommand_Click); }
4. На конец, прописываем тело метода обработчика пункта меню: void menuCommand_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault) {
Первым мы созздаем ссылку на метод интерфейса и его структуру данных:
iFace proxy = XmlRpcProxyGen.Create<iFace>(); XmlRpcStruct conDat = new XmlRpcStruct();
Затем получаем экземпляр объекта текущей адрессной книги MS Outlook
Outlook.AddressLists list = Application.Session.AddressLists as Outlook.AddressLists;
Запускаем цикл, для получения списка контактов из адрессной книги и тут же вызываем метод Add () из InfusionSoft API, помещающий данные пользователя в собственно InfusionSoft:
foreach (Outlook.ContactItem contacts in list ) {
conDat.Add("FirstName", contacts.FirstName.ToString()); conDat.Add("LastName", contacts.LastName.ToString()); conDat.Add("Email", contacts.Email1Address.ToString());
И под конец,информируем об этом пользователя сообщением.
Outlook.Application outLk = new Microsoft.Office.Interop.Outlook.Application(); Outlook.MailItem Email = outLk.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as Outlook.MailItem; Email.Subject = "You just added to Infusionsoft"; Email.To = contacts.Email1Address.ToString(); Email.HTMLBody = "You just added to Infusionsoft.Thank you"; Email.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML; Email.Send(); } }
На это все, ничего сложного, далее полный исходный код программы.
using System; using System.Windows.Forms; using Microsoft.VisualStudio.Tools.Applications.Runtime; using Outlook = Microsoft.Office.Interop.Outlook; using Office = Microsoft.Office.Core; using CookComputing.XmlRpc;
namespace InfusionssoftContact { public partial class ThisAddIn
{
Office.CommandBar menubar; Office.CommandBarPopup cmdBarControl; Office.CommandBarButton menuCommand; string key = "12qqwqssad12123234343434";
[XmlRpcUrl("https://mach2.infusionsoft.com:443/api/xmlrpc")] public interface iFace : IXmlRpcProxy { [XmlRpcMethod("ContactService.add")] int Add(string key, XmlRpcStruct map);
[XmlRpcMethod("ContactService.addToGroup")] bool AddGrp(string key, int conID, int grpID);
[XmlRpcMethod("ContactService.addToCampaign")] bool AddCamp(string key, int conID, int campID);
}
private void ThisAddIn_Startup(object sender, System.EventArgs e) {
menubar = Application.ActiveExplorer().CommandBars.ActiveMenuBar; cmdBarControl = (Office.CommandBarPopup)menubar.Controls.Add (Office.MsoControlType.msoControlPopup, missing, missing,menubar.Controls.Count, true); if (cmdBarControl != null) { cmdBarControl.Caption ="InfusionSoft Contact"; menuCommand = (Office.CommandBarButton)cmdBarControl.Controls.Add(Office.MsoControlType.msoControlButton, missing, missing, missing,true); menuCommand.Caption ="Add contact To InfusionSoft"; menuCommand.Tag = DateTime.Now.ToString(); menuCommand.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(menuCommand_Click); } }
void menuCommand_Click(Microsoft.Office.Core.CommandBarButton Ctrl, ref bool CancelDefault) {
iFace proxy = XmlRpcProxyGen.Create<iFace>(); XmlRpcStruct conDat = new XmlRpcStruct(); Outlook.AddressLists list = Application.Session.AddressLists as Outlook.AddressLists;
foreach (Outlook.ContactItem contacts in list ) {
conDat.Add("FirstName", contacts.FirstName.ToString()); conDat.Add("LastName", contacts.LastName.ToString()); conDat.Add("Email", contacts.Email1Address.ToString());
Outlook.Application outLk = new Microsoft.Office.Interop.Outlook.Application(); Outlook.MailItem Email = outLk.CreateItem(Microsoft.Office.Interop.Outlook.OlItemType.olMailItem) as Outlook.MailItem; Email.Subject = "You just added to Infusionsoft"; Email.To = contacts.Email1Address.ToString(); Email.HTMLBody = "You just added to Infusionsoft.Thank you"; Email.BodyFormat = Microsoft.Office.Interop.Outlook.OlBodyFormat.olFormatHTML; Email.Send(); }
}
private void ThisAddIn_Shutdown(object sender, System.EventArgs e) { }
#region VSTO generated code
/// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InternalStartup() { this.Startup += new System.EventHandler(ThisAddIn_Startup); this.Shutdown += new System.EventHandler(ThisAddIn_Shutdown); }
#endregion } }
|


