Сейчас на сайте

Сейчас 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 – практическая интеграция PDF Печать E-mail
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

}

}


0
 

Добавить комментарий


Защитный код
Обновить