Integration with email marketing services

Раздел Маркетинг является частью системного решения CRM и используется для отправки рассылок и управления клиентской базой из интерфейса системы. С помощью раздела Маркетинг вы можете:

  • осуществлять массовые рассылки писем отдельным группам клиентов, например, оповещать об изменении цен на продукты или услуги, акциях, вебинарах и т. д.;
  • реализовать долгосрочную поддержку клиентов: отправлять новости, сообщать об обновлениях и т. д.;
  • определить активность клиентов и их заинтересованность в продукте или услуге. Для отправки писем через раздел Маркетинг необходимо подключить модуль интеграции с сервисом рассылок. Интеграции можно скачать из магазина готовых решений или создать собственную интеграцию через пользовательский модуль. В данном разделе описаны сущности раздела Маркетинг и список функций, которые нужно реализовать в пользовательском модуле для создания собственной интеграции. Перед созданием собственной интеграции рекомендуем ознакомиться с документацией по разделу Маркетинг и пользовательским модулям.

    Создание модуля интеграции

    Для создания собственной интеграции с сервисом рассылок сначала вам необходимо создать пользовательский модуль. Далее перейдите на страницу Методы API > Скрипты и вставьте в редактор кода следующую заготовку:
    // Импортировать шаблоны писем из сервиса рассылок в систему. Вызывается автоматически, например, 
    // по кнопке импорта шаблонов в интерфейсе системы. 
    // - `offset` — смещение, начиная с которого должны браться шаблоны из сервиса рассылок; 
    // - `limit` — максимальное количество шаблонов для получения. 
    // Функция изначально вызывается с `offset = 0`. Если необходимо получить с помощью функции больше шаблонов, 
    // чем указано в `limit`, необходимо вернуть массив из `limit` элементов. После этого в системе обработаются 
    // полученные шаблоны, и данная функция вызовется повторно со значением `offset` равным `offset + limit`. 
    async function CRM_Marketing_ImportTemplates( 
      offset: number, 
      limit: number, 
    ): Promise<CRM_Marketing_ImportTemplate[]> { 
      throw new Error('not implemented'); 
    } 
    // Синхронизировать подписчиков из системы с сервисом рассылок. Вызывается автоматически, например, 
    // перед отправкой рассылки из интерфейса системы в сервис рассылок. 
    // - `contactIds` — массив идентификаторов элементов приложения Контакты из раздела CRM, которые необходимо 
    // синхронизировать с сервисом рассылок. 
    async function CRM_Marketing_ExportContacts(contactIds: string[]): Promise<void> { 
      throw new Error('not implemented'); 
    } 
    // Подготовить данные для отправки рассылки, например, добавить подписчиков в список рассылок. Вызывается перед созданием рассылки 
    // (перед вызовом функции `CRM_Marketing_CreateCampaign`). 
    // Если рассылка отправляется большому количеству подписчиков, данная функция будет вызвана несколько раз, и в аргументе `contacts` будет 
    // передана часть из всего списка подписчиков. 
    // - `campaignId` — идентификатор элемента приложения Рассылки, который будет создан в системе; 
    // - `campaignType` — тип рассылки; 
    // - `contacts` — массив электронных адресов. 
    async function CRM_Marketing_PrepareCampaign( 
      campaignId: string, 
      type: CRM_Marketing_CampaignType, 
      contacts: string[], 
    ): Promise<void> { 
      throw new Error('not implemented'); 
    } 
    // Создать рассылку на электронную почту на стороне сервиса рассылок. Эта функция вызывается после создания рассылки из интерфейса 
    // системы. Перед вызовом этой функции данные для рассылки передаются в функцию `CRM_Marketing_PrepareCampaign`. 
    // В результате успешного выполнения функции будет создан элемент приложения Рассылки, который используется 
    // для отслеживания состояния рассылки на стороне системы. 
    // - `request` — информация об отправляемой рассылке. 
    async function CRM_Marketing_CreateCampaign( 
      request: CRM_Marketing_CreateCampaignRequest, 
    ): Promise<CRM_Marketing_CreateCampaignResponse> { 
      throw new Error('not implemented'); 
    } 
    // Получить статистику по рассылке. Функция вызывается автоматически при просмотре статистики рассылки из 
    // интерфейса системы. Результат функции может быть временно закеширован системой. 
    // - `campaignExternalId` — идентификатор рассылки на стороне сервиса рассылок. 
    async function CRM_Marketing_GetCampaignStats( 
      campaignExternalId: string, 
    ): Promise<CRM_Marketing_CampaignStats> { 
      throw new Error('not implemented'); 
    } 
    // Обработать событие от сервиса рассылок. Данная функция вызывается при получении HTTP-запроса на вебхук, 
    // который указан в настройках пользовательского модуля. В теле данной функции необходимо преобразовать события 
    // конкретного сервиса рассылок в список действий, которые выполнятся в системе по окончании выполнения функции 
    // (например, обновление статуса рассылки или состояния отправки письма подписчику). 
    // `request` — данные полученного на вебхук HTTP-запроса. 
    async function CRM_Marketing_ParseWebhookRequest(request: FetchRequest): Promise<CRM_Marketing_WebhookResult> { 
      throw new Error('not implemented'); 
    } 
    // Получить HTML-код для предпросмотра содержимого шаблона. Вызывается из интерфейса системы виджетом 
    // предпросмотра шаблона. Результат функции может быть временно закеширован системой. 
    // - `templateExternalId` — идентификатор шаблона в сервисе рассылок. 
    async function CRM_Marketing_GetTemplateHTML(templateExternalId: string): Promise<string> { 
      throw new Error('not implemented'); 
    } 
    // Установить HTML-код содержимого шаблона. Вызывается при публикации шаблона. 
    // Функция должна возвращать идентификатор шаблона в сервисе рассылок. 
    // - `html` — содержимое шаблона. 
    // - `name` — наименование шаблона. 
    // - `templateExternalId` — идентификатор шаблона в сервисе рассылок. Может быть пустым, если шаблон новый. 
    async function CRM_Marketing_SetTemplateHTML(html: string, name: string, templateExternalId?: string): Promise<string> { 
      throw new Error('not implemented'); 
    } 
    
    Реализуйте тело функции из заготовки кода выше, сохраните модуль и включите его. Теперь при создании новой рассылки через интерфейс системы вы сможете выбрать вашу интеграцию в поле Сервис рассылки.

    Создание модуля интеграции с мессенджерами

    Для настройки собственной интеграции с мессенджером сначала создайте пользовательский модуль. Далее перейдите на страницу Методы API > Скрипты и вставьте в редактор кода следующую заготовку:
    // Подготовить данные для отправки рассылки, например, добавить подписчиков в список рассылок. Вызывается перед созданием рассылки 
    // (перед вызовом функции `CRM_Marketing_CreateMessengerCampaign`) 
    // Если рассылка отправляется большому количеству подписчиков, эта функция вызывается несколько раз, и в аргументе `contacts` 
    // передаётся часть из всего списка подписчиков 
    // - `campaignId` — идентификатор элемента приложения Рассылки, который создаётся в системе; 
    // - `campaignType` — тип рассылки; 
    // - `contacts` — массив идентификаторов контактов 
    async function CRM_Marketing_PrepareCampaign( 
      campaignId: string, 
      type: CRM_Marketing_CampaignType, 
      contacts: string[], 
    ): Promise<void> { 
      throw new Error('not implemented'); 
    } 
    // Создать рассылку сообщения через мессенджер. Эта функция вызывается после создания рассылки из интерфейса 
    // системы. Перед вызовом этой функции данные для рассылки передаются в функцию `CRM_Marketing_PrepareCampaign` 
    // В результате успешного выполнения функции создаётся элемент приложения Рассылки, который используется 
    // для отслеживания состояния рассылки на стороне системы 
    // - `request` — информация об отправляемой рассылке 
    async function CRM_Marketing_CreateMessengerCampaign( 
      request: CRM_Marketing_CreateMessengerCampaignRequest, 
    ): Promise<CRM_Marketing_CreateCampaignResponse> { 
      throw new Error('not implemented'); 
    } 
    // Получить статистику по рассылке. Функция вызывается автоматически при просмотре статистики рассылки из 
    // интерфейса системы. Результат функции может быть временно закеширован системой 
    // - `campaignExternalId` — идентификатор рассылки 
    async function CRM_Marketing_GetCampaignStats( 
      campaignExternalId: string, 
    ): Promise<CRM_Marketing_CampaignStats> { 
      throw new Error('not implemented'); 
    } 
    // Обработать событие от мессенджера. Эта функция вызывается при получении HTTP-запроса на вебхук, 
    // который указан в настройках пользовательского модуля. В теле этой функции преобразуйте события 
    // от конкретного мессенджера в список действий, которые выполнятся в системе по завершении функции 
    // Например, обновление статуса рассылки или состояния отправки сообщения подписчику 
    // `request` — данные полученного на вебхук HTTP-запроса 
    async function CRM_Marketing_ParseWebhookRequest(request: FetchRequest): Promise<CRM_Marketing_WebhookResult> { 
      throw new Error('not implemented'); 
    } 
    // Возвращает типы мессенджеров, для которых реализована отправка рассылки 
    // Тип создаваемой рассылки указывается в функции CRM_Marketing_CreateMessengerCampaign в информации 
    // об отправляемой рассылке `request.campaignType` 
    function CRM_Marketing_GetMessengerTypes(): AccountType[] { 
      throw new Error('not implemented'); 
    } 
    // Получить данные о доступных для рассылки ботах или сообществах мессенджера 
    // - `request` — информация о рассылке 
    async function CRM_Marketing_GetMessengerBots(): Promise<CRM_Marketing_MessengerBot[]> { 
      throw new Error('not implemented'); 
    } 
    
    Реализуйте тело функции из заготовки кода выше, сохраните модуль и включите его. Теперь в настройках блока Мессенджер карт коммуникаций вы сможете выбрать вашу интеграцию в поле Модуль рассылки.

Type aliases

CRM_Marketing_Action

Update data action

Action performed by the system after processing the notification from the email marketing service.