Перейти к содержанию

Черновики выпусков

Черновик выпуска это заготовка выпуска содержащая его содержимое (параметр letter) и ,возможно, разнообразные параметры выпуска влияющие на его формирование (прочие параметры одноимённые с issue.send)

Для использования черновика просто указывает его id или alias в issue.send

Приоритет источника содержимого и параметров выпуска описан в issue.send

Эти вызовы поменяли формат принимаемых и возвращаемых данных на совместимый с issue.sendПоля старого формата ответов будут ещё некоторое время возвращаться для обратной совместимости.Старый формат изменения данных будет ещё некоторое время приниматься для обратной совместимости.

Список черновиков

Такой же список можно получить с помощью вызова stat.uni для объекта draft c использованием более разнообразной фильтрации и с сортировкой

{

  "action" : "issue.draft.list" 

-- параметры фильтрации, должен быть хотя бы один параметр
--
-- если выбрана последняя порция списка то ответ содержит "last_page" : 1
--
-- доступны поля
--
-- issue_draft.id             -- код черновика
-- issue_draft.name           -- "название" 
-- issue_draft.channel        -- канал отправки email|sms|viber|push|vk|tg|vknotify|pushapp|max
-- issue_draft.create.date    -- "дата и время создания" -- Ys, null
-- issue_draft.update.date    -- "дата и время последнего изменения" -- Ys, null
-- issue_draft.alias          -- "альтернативный идентификатор" 
-- issue_draft.reltype        -- число
-- issue_draft.relref         -- число
-- issue_draft.template       -- 0|1 -- признак шаблона (шаблон - заранее предустановленный черновик с оформлением)
-- issue_draft.public_preview -- "ссылка просмотра черновика без пароля" 
--

,"filter" : [ фильтр в синтаксисе stat.uni ]

,"order" : [ сортировка ответа в синтаксисе stat.uni ]

,"skip" : количество пропускаемых записей от начала списка -- по умолчанию 0

,"first" : количество выбираемых записей после skip -- по умолчанию 50, не более 50

}

ответ

{

 <общие поля>

,"list" : [

            {

             "id" : код черновика

            ,"alias" : "альтернативный идентификатор" 

            ,"format" : "viber|sms|html|text|push|vk|tg|vknotify|pushapp|max" -- формат черновика (для черновиков с несколькими текстами указывается только один)

            ,"name" : "название" 

            ,"template" : 0|1 -- признак шаблона (шаблон - заранее предустановленный черновик с оформлением)

            ,"create.date" : "дата и время создания" -- Ys, null

            ,"update.date" : "дата и время последнего изменения" -- Ys, null

            ,"public_preview" : "ссылка просмотра черновика без пароля" 

            ,"thumbnail" : [ список ссылок, аналогично issue.draft.get ]

            ,"reltype" : ...

            ,"relref" : ...
            }

            ...

           ]

}

Чтение черновика

{
  "action" : "issue.draft.get" 

 ,"id" : код черновика или "альтернативный идентификатор" 

 ,"novars" : 0|1 -- не возвращать variables
}

ответ

{

  <общие поля>

  "obj" : {

      "id" : код черновика

      ,"alias" : "альтернативный идентификатор" 

      ,"name" : "название черновика" 

      ,"channel" : "email|sms|viber|push|vk|tg|vknotify|pushapp|max", -- канал для которого предназначен черновик

      ,"format" : "viber|sms|html|text|push|vk|tg|vknotify|pushapp|max" -- формат черновика (для черновиков с несколькими текстами указывается только один)

      ,"create.date" : "дата и время создания" -- Ys, null

      ,"update.date" : "дата и время последнего изменения" -- Ys, null

      ,"public_preview" : "ссылка просмотра черновика без пароля" 

      ,"reltype" : ...

      ,"relref" : ...

      ,"template" : 0|1 -- признак шаблона (шаблон - заранее предустановленный черновик с оформлением)

      -- У предустановленных черновиков (при template = 1)

      ,"template.thumbnail" : "http://.." -- расположение (URL) изображения шаблона

      -- Содержимое письма и настройки выпуска (аналогично issus.send)

      ,"letter" : {
                   параметры содержимого письма
                  }

       ,.... прочие параметры выпуска как в issue.send ....

       -- ссылки на изображения черновика
       -- только для html черновиков
       -- в настоящий момент поддерживаются картинки 800x600
       -- надо учитывать что ссылка может вести на отсутствующее изображение
       -- например, из-за сбоя при её формировании

       ,"thumbnail" : [
                       {
                        "url" : "ссылка на изображение" 
                       ,"width" : ширина в пикселах,
                       ,"height" : высота в пикселах
                       },

                       ...............
                      ]
  }

 -- список используемых в черновике переменных персонализации с указанием где используются
 -- отсутствует при novars : 1 или когда у нет letter

 ,"variables": {
                    "email" {
                             "header": [
                                        "header_var1",
                                        "header_var2",
                                        "header_var3" 
                                         .......
                                       ],
                             "html": [
                                      "html_var1",
                                      "html_var2",
                                      "html_var3" 
                                      .......
                                     ],
                             "amp": [
                                      "html_var1",
                                      "html_var2",
                                      "html_var3" 
                                      .......
                                     ],
                             "text": [
                                      "text_var1",
                                      "text_var2" 
                                      .......
                                     ]
                            }

                  ,"viber" : {
                            "viber": [
                                    "viber_var1",
                                    "viber_var2" 
                                    .......
                                  ]
                           }

                  ,"push" : {
                            "push": [
                                    "push_var1",
                                    "push_var2" 
                                    .......
                                  ]
                           }

                  ,"vk" : {
                            "vk" : [
                                    "vk_var1",
                                    "vk_var2" 
                                    .......
                                  ]
                           }

                  ,"tg" : {
                            "tg" : [
                                    "tg_var1",
                                    "tg_var2" 
                                    .......
                                  ]
                           }

                  ,"vknotify" : {
                            "vknotify" : [
                                    "vknotify_var1",
                                    "vknotify_var2" 
                                    .......
                                  ]
                           }

                  ,"pushapp" : {
                            "pushapp" : [
                                    "pushapp_var1",
                                    "pushapp_var2" 
                                    .......
                                  ]
                           }

                  ,"max" : {
                            "max" : [
                                    "max_var1",
                                    "max_var2" 
                                    .......
                                  ]
                           }

                  ,"sms" : {
                            "sms": [
                                    "sms_var1",
                                    "sms_var2" 
                                    .......
                                  ]
                           }
              }

}

Создание или изменение черновика

Создает или изменяет параметры и содержимое черновиков. Вызов не может быть применён к шаблонам (предустановленным черновикам) с оформлением.

При изменении уже существующего черновика, изменяются только указанные в obj параметры. Не указанные - остаются как были.

{

  "action" : "issue.draft.set" 

  ,"obj" : {
            "alias" : "альтернативный идентификатор" -- не обязательно. не должен начинаться с цифры и не должен содержать пробелы
                                                     -- может использоваться во всех местах где требуется указать код черновика

            ,"name" : "название черновика" -- обязательно при создании

            ,"reltype" : ...

            ,"relref" : ...

           -- Содержимое письма и настройки выпуска (аналогично issus.send)

           -- При выпуске приоритет имеют параметры указанные в самом выпуске, а при их отсутствии берутся из черновика если не указано иное (подробнее в issue.send)
           -- Для удаления параметра из черновика используйте значение null - для части параметров играет роль даже просто их наличие

           ,"letter" : { -- обязательно при создании
                        параметры содержимого письма как у issue.send кроме draft.id
                        для email сообщений обязательны не пустые - адрес отправителя, тема и как минимум один текст
                        для sms сообщения обязательны не пустые - имя отправителя и текст
                        для viber сообщения обязательны не пустые - текст
                        для push сообщения обязательны не пустые - тема/текст
                        для vk сообщения обязательны не пустые - тема/текст
                        для tg сообщения обязательны не пустые - тема/текст
                        для vknotify сообщения обязательны не пустые - тема/текст
                        для pushapp сообщения обязательны - тема/текст
                        для max сообщения обязательны - тема/текст
                       }

           ,"letter.zip" : "содержимое архива закодированное в base64" -- (не обязательно) как и при issue.send
                                                                       -- zip-архив содержащий текст выпуска и сопровождающие картиyки для оформления

                                                      -- В архиве ищется индексный файл который даст текст выпуска -это первый регистронезависимый файл *.htm(l) с наименьшим уровнем вложенности и наименьшим среди одноуровневых именем
                                                      -- Остальное содержимое каталога в котором он находится сохраняется в Хранилище картинок.
                                                      -- Остальные части архива игнорируются
                                                      -- В содержимом индексного файла относительные ссылки в img-src и ссs-url() дополняются веб-базой каталога куда было сохранено содержимое.
                                                      -- Полученный результат записывается в  letter-> message->html (т.е. это будет email черновик)
                                                      -- Остальные параметры по прежнему передаются через явно указанный в вызове letter (например тема)
                                                      -- Если в вызове уже есть letter и в нём есть есть message, то это ошибка

           ,.... прочие параметры выпуска как в issue.send ....
           }

  -- необязательные

  ,"id" : код черновика или "альтернативный идентификатор" -- если не указан, создается новый

 ,"return_fresh_obj" : "нужно вернуть данные объекта -- да, нет ( 1 | 0 )" 

}

ответ

{

 <общие поля>

 ,obj  { ... } -- объект в формате issue.draft.get если "return_fresh_obj" : 1

 ,"zip_draft" : { -- дополнительная информация если letter.zip был использован

                 "zip_base"  : "подкаталог архива взятый за основу" 
                ,"zip_index" : "имя файла взятого за содержимое" 

                ,"rfs_base" : "путь по rfs до каталога куда загружены файлы в домене image" 
                ,"img_base" : "абсолютный url для rfs_base" 

                ,'attachs' : [
                             "имена файлов загруженных в хранилище" 
                            ]
                }

 }

}

Удаление черновика

{

  "action" : "issue.draft.delete" 

-- одного

  ,"id" : код черновика или "альтернативный идентификатор" 

--- или нескольких

  ,"id" : [код или "альтернативный идентификатор черновика1", код или "альтернативный идентификатор черновика2", .. ]
}

ответ

{

 <общие поля>

}

Предпросмотр черновика

Вызов позволяет на основе черновика и указанного адреса получить персонализированный вариант сообщения что бы оценить вид письма.

Вторая схема использования - получить текстовую версию html-черновика что бы оценить корректность автоматического преобразования.

{

 "action" : "issue.draft.preview" 

 ,"addr_type" : "тип адреса" -- не обязательно

-- одно из или ни одного

 ,"email" : "адрес для данных персонализации" -- не обязательно

-- или

 ,"email" :  {  -- не обязательно
               данные персонализации. даже значения для member.*
             }

 ,"autotext" : "1|ширина"  -- не обязательно
                           -- используется только совместно с html-версией
                           -- как результат возвращается html-версия преобразованная в текст
                           -- с сохранением всех команд персонализации
                           --
                           -- 1 - ширина строки 80 символов
                           -- ширина - ширина строки - как указано

,"extra" : {  -- не обязательно
            дополнительные данные персонализации как в issue.send
           }

-- одно из

 ,"id" : номер черновика

-- или

 ,"obj" : { -- можно передавать объект из issue.draft.get - лишние поля будут проигнорированы

            "letter" : {
                        параметры содержимого письма как у issue.send
                       }
           }

}

ответ

{
 <общие поля>

 ,"format" : "предполагаемый формат выпуска" 

 ,"letter" : {
               -- персонализированные параметры содержимого письма
             }

 ,"smses" : число -- для sms. во сколько смс уложится сообщение

--- для совместимости со старым форматом. будет удалено 01 октября 2017 года
 "text" : "текст выпуска" 

}

Предпросмотр в EmailOnAcid

Специфические ошибки

while_preview/authext_error
while_preview/request_error
while_preview/service_error
while_preview/wrong_args
while_preview/wrong_auth
while_preview/wrong_auth_token
while_preview/wrong_client_name
while_preview/wrong_clients
while_preview/wrong_service_name
while_preview/wrong_tag_name
while_preview/wrong_tags

Заказать генерацию предпросмотра

{
 "action" : "issue.draft.preview" 

 <обычные параметры для предпросмотра определяющие черновик или текст>

 ,"preview" : {
               "service" : "eoa" 

              ,"clients" : ["...","..."] -- список почтовых клиентов для которых требуется генерация
                                         -- не обязательно, по умолчанию используется список настроенный
                                         -- в аккаунте сервиса EmailOnAcid

              ,"tags" : ["...","..."] -- список меток, не обязательно
                                      -- позволяет искать результат в интерфейсе сервиса EmailOnAcid
              }
}

ответ

{
 <обычный ответ апи>

,"preview.id" : "идентификатор генерации для последующего вызова получения результата" 

}

Получить результат генерации

Если сервис EmailOnAcid ещё не успел подготовить результат, то вызов завершится с ошибкой

{
 "action" : "issue.draft.preview" 

 ,"preview" : {
               "service":"eoa" 

              ,"id" : "идентификатор генерации" 

              ,"client" : "почтовый клиент для которого нужен результат" 
              }
}

ответ

{
 <общие поля>

 "list" : {
           "почтовый клиент из запроса" : {
                  "url" : "ссылка на полное изображение" 
                 ,"thumb" : "ссылка на миниатюру" 
                 }
          }
}

Получить список доступных почтовых клиентов

{
 "action" : "issue.draft.preview" 

 ,"preview" : {
               "service":"eoa" 

              ,"get" : "clients" 
              }
}

ответ

{
 <общие поля>

,"list" : [
           "notes85",
           "wde_chr26_win",
           "thunderbird13",
           "gapps_ff21_win",
           "aol_ff21_mac",
           "outlook03",
           "iphonese_12",
           "iphone8_12",
           "gmx_ie11_win",
           "gapps_ie11_win",
           "lb_chr26_win",
           "tsa_ie11_win",
           "toe_chr26_win",
           "o365_ff21_win",
           "iphonexsmax_13",
           ...
          ]
}

Получить список почтовых клиентов установленных по умолчанию

{
 "action" : "issue.draft.preview" 

 ,"preview" : {
               "service":"eoa" 

              ,"get" : "clients.default" 
              }
}

ответ

{
 <общие поля>

,"list" : [
           ...
          ]
}

Получить подробное описание почтовых клиентов

{
 "action" : "issue.draft.preview" 

,"preview" : {
              "service":"eoa" 

             ,"get" : "clients.config" 
             }
}

ответ

{
 <общие поля>

,"list" : {
      "notes85" : {
         "client" : "Lotus Notes 8.5",
         "default" : true,
         "category" : "Application",
         "id" : "notes85",
         "os" : "Windows 7" 
      },
      "wde_chr26_win" : {
         "client" : "Web.de",
         "browser" : "Chrome",
         "default" : true,
         "category" : "Web",
         "id" : "wde_chr26_win",
         "os" : "Windows 7" 
      },
      "thunderbird13" : {
         "client" : "Thunderbird",
         "default" : true,
         "category" : "Application",
         "id" : "thunderbird13",
         "os" : "Windows 7" 
      },
...
   }
}