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

Мультиканальные выпуски

Мультиканальный выпуск позволяет выпускать рассылку с учётом наличия у подписчика идентификаторов email и телефона в их различных сочетаниях.

Типичная задача - "Выпустить в данной группе письмо для тех, у кого указан email. Если email-а нет, но есть телефон, то тогда послать viber, а если нет, то тогда послать sms" (вы экономите sms, отправляя вместо него письмо и viber тем, кому это возможно). Другая задача - "Выпустить в данной группе по всем телефонам и email-ам" (вы оповещаете подписчиков максимально широким способом).

Мультиканальный выпуск происходит по одной группе (по одному и тому же списку при Экспресс-выпуске), но по разным каналам доставки в зависимости от указанного способа выпуска и наличия у получателя email и/или номер телефона.

При Экспресс-выпуске для указания наличия у получателя email, используйте колонку с названием member.email, а для sms - member.cellphone, для прочих типов - по коду типа (например, member.tg). Обе колонки должны присутствовать одновременно. Это отличается от привычного для обычного выпуска или импорта правила, что только в реестре может быть только одна такая колонка одновременно.

Используйте пустое значение в соответствующей ячейке, если у получателя нет адреса или телефона.

Выпустить мультивыпуск

Вызов очень похож на обычный выпуск рассылки, за исключением того, что на каждый канал доставки указывается свой текст письма/сообщения

Параметры оставленные без описания совпадают с одноимёнными из issue.send

{
 "action" : "issue.send.multi" 

 ,"name" : "название мультивыпуска" -- параметр необязателен
                                    -- из-за особенностей учёта выходов Транзакционных писем personal данный параметр
                                    -- для них будет работать не так как ожидается и, в целом, бесполезен

 ,"group" :

 ,"sendwhen":

 ,"group.exclude" :

 ,"campaign.id" :

 ,"later.time" :  -- в отличие от обычного выпуска, мультивыпуски любой одной и той же группы могут быть отложены на одно и тоже время

 ,"delay.time" :

 ,"mca":

 ,"users.slice" :

 ,"users.list" :

 ,"users.url" :

 ,"users.url.remove" :

-- автоподбор для personal

 ,"email" : "адрес получателя" 
          -- если тип указанного адреса не подходит под какой-то из указанных в issue канал доставки,
          -- то будут взяты все идентификаторы (головы), связанные с данным адресом и из них
          -- выбран первый подходящий по типу и доступный для рассылки
          -- если ничего подходящего нет, то данный канал доставки будет пропущен

-- точное указание соответствия для personal

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

 ,"only_unique" :

 ,"multiple" :

 ,"extra" :

 "issue" : [ -- два или более элемента описывающие режим и текст сообщения для используемых каналов доставки

   { -- email

    "mode" : "all" или "rest" -- режим выпуска.
                              -- all  - по всем кто может получать данный канал
                              -- rest - по тем кто не попал в предыдущие каналы и могут получать данный
                              --
                              -- необязательно для первого элемента "issue" - для него всегда all
                              -- обязательно для второго и последующих

    ,"letter" : {
                 "draft.id" 

                 --------------

                 ,"subject" :

                 ,"from.name" :

                 ,"from.email" :

                 ,"reply.name" :

                 ,"reply.email" :

                 ,"to.name" :

                 ,"message" :

                 ,"attaches" :

                 ,"autotext" :
                }

    ,"dkim.id" :

    ,"relink" :

    ,"relink.param" :

    ,"link.qsid":

    ,"tz_limit" 

    ,"tz_observance" 
   }

  ,{ -- viber

    "mode" : "all" или "rest" 

    ,"letter" : {
                 "draft.id" 

                 --------------

                "button.url"   :

               ,"button.text" :

               ,"message" :

               ,"attaches":

    ,"relink" :

    ,"relink.param" :

    ,"link.qsid":

    ,"tz_limit" 

    ,"tz_observance" 
   }

  ,{ -- sms

    "mode" : "all" или "rest" 

    ,"letter" : {
                 "draft.id" 

                 --------------

                ,"from.name" 

                ,message : { }
                }

    ,"tz_limit" 

    ,"tz_observance" 
   }

 ]

}

ответ

{

 <общие поля>

 "id" : номер мульти-выпуска -- если номер выпуска null, то это означает, что при выпуске personal c указанием получателя в "email" ни одному каналу доставки
                             -- не удалось подобрать адрес получателя. Следовательно мультивыпуск не создан, так как не может быть выпущена ни одна рассылка.
                             -- причины по каждому каналу перечислены в "list" 

,"list" : [ -- информация по каждому элементу "issue" в том же порядке как заданы в запросе

           {
            "channel"  : "email|sms|viber" -- канал выпуска

           ,"track.id" : "номер трекера созданного  выпуска для данного канала" 
           }

           -- или

           {
            "channel"  : "email|sms|viber" -- канал выпуска

           ,"errors" :  [ ... ] -- возможно при выпуске personal
                                -- означает, что для данного канала выпуска не нашлось подходящего идентификатора получателя
                                -- или все найденные не доступны для рассылки или в режиме rest и без него нашли что выпускать
                                -- и, следовательно, для данного канала выпуск рассылки не был запущен вообще
           }

          ]

}

Специфические для вызова ошибки

Общая фатальная ошибка - данный канал указан в issue повторно. N - индекс в issue

{ "id" : "wrong_arg", "explain" : "issue/channel", "detail" : N }

Ошибка в результате одного из каналов - канал с режимом rest сразу исключён, так как уже заранее ясно, что ему достанет 0 получателей.

{ "id" : "channel/excluded", "explain" : "rest" }

Список мультивыпусков

{

 "action" : "issue.multi.list" 

}

ответ

{

  <общие поля>

 ,"list" : [

             {

                "id"   : идентификатор мультивыпуска

               ,"name" : "название мультивыпуска" 

               ,"dt"   : "дата мультивыпуска" 

               ,"group" : "группа мультивыпуска" 

             }

             ...

           ]

}

Чтение мультивыпуска

{

 "action" : "issue.multi.get" 

 ,"id" : идентификатор мультивыпуска

}

ответ

{

  <общие поля>

 ,"obj" : {

                "id"   : идентификатор мультивыпуска

               ,"name" : "название мультивыпуска" 

               ,"dt"   : "дата мультивыпуска" 

               ,"group" : "группа мультивыпуска" 

               ,"issue" : [
                           -- описание выпусков вышедших в рамках данного мультивыпуска
                           {
                             "id" : номер выпуска

                            ,"dt" : "дата выпуска (Ys)" 

                            ,"channel" : "email|sms|viber" -- канал выпуска

                            ,"members" : "число получателей" 
                            },

                           ........

                          ]

           }
}