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

Внешние аутентификации

Хранение параметров внешних аутентификаций в данный момент поддерживает

  • Хранение пары логин-пароль для использования в url, требующих аутентификации.
  • Google Analytics для обеспечения автоматического пополнения Рядов Данных статистикой из Google Analytics
  • Google Big Data / Google Big Query для получения данных импорта и списков выпуска рассылки, и для записи событий callback

Список внешних аутентификаций

{

 "action" : "authext.list" 

-- параметры фильтрации, должен быть хотя бы один параметр
--
-- если выбрана последняя порция списка то ответ содержит "last_page" : 1
--
-- доступны поля
--
-- authext.id           -- "идентификатор внешней аутентификации" 
-- authext.type         -- "тип внешней аутентификации, число" 
-- authext.login        -- "логин внешней аутентификации" 
-- authext.status       -- "статус внешней аутентификации" 0 - ошибочная/отключённая, 1 - активная
-- authext.reltype      -- число
-- authext.relref       -- число
--

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

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

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

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

}

ответ

{

  <общие поля>

 ,"list" : [

             {

                "id"   : идентификатор внешней аутентификации

               ,"type" : "тип внешней аутентификации" 

               ,"login" : "логин внешней аутентификации" 

               ,"reltype" : ...

               ,"relref" : ...
             }

             ...

           ]

}

Чтение внешней аутентификации

Поля хранящие собственно данные для аутентификации прочесть нельзя.

{

 "action" : "authext.get" 

 ,"id" : идентификатор внешней аутентификации
}

ответ

{

  <общие поля>

 ,"obj" : {
           "id"   : идентификатор внешней аутентификации

           ,"type" : "тип внешней аутентификации" 

           ,"login" : "логин внешней аутентификации" 

           ,"reltype" : ...

           ,"relref" : ...

           ,"status" : "статус внешней аутентификации" -- 0 - ошибочная/отключённая, 1 - активная

-- для Telegram

           ,"param" : {
                     "id" : номер бота в telegram
                    ,"username" : "username бота" -- системное имя бота
                    ,"first_name" : "название бота" -- Отображаемое название бота

                    ,"supports_inline_queries" : 0|1 -- бот поддерживает встроенные запросы
                    ,"can_read_all_group_messages" : 0|1 -- для бота отключен приватный режим
                    ,"can_join_groups" : 0|1 -- можно ли бота приглашать в группы

                    ,"proxy.url" : "url для проксирования запросов от Telegram" 

                    ,"reply_disabled" :  0|1 -- включен ли запрет ответов нашего бота

                    ,"telegram.webhook" : 0|1 -- включен ли приём колбэков от телеграма.

                    ,"webhook.url" : "url приёма колбэк данных сервером sendsay" -- генерируется автоматически

                    ,"webhook.error" : "сообщение об ошибке" -- ошибка АПИ телеграма при запросах проверки, установки или удаления webhook.
                                                             -- webhook.error удаляется при последующих успешных ответах.

                    ,"webhook.url.previous" : "прежний url" -- если на момент установки webhook от sendsay
                                                            -- в настройках телеграма уже стоял другой webhook, то его url сохраняется

                   }

-- для MAX

           ,"param" : {
                    -- Настраиваемые через authext параметры

                     "proxy.url" : "url для проксирования запросов от MAX" 
                    ,"reply_disabled" :  0|1 -- включен ли запрет ответов нашего бота, кроме триггерных команд
                    ,"webhook" : 0|1 -- включен ли приём колбэков от MAX

                    -- Остальные параметры
                    ,"webhook.url" : "url приёма колбэк данных сервером sendsay" -- генерируется автоматически

                    ,"id" : номер бота в MAX
                    ,"username" : "username бота" -- системное имя бота
                    ,"first_name" : "название бота" -- Отображаемое название бота
                    ,"last_name" : "фамилия бота" 
                    ,"commands" : "команды, установленные для бота в MAX" 
                    ,"avatar_url" : "ссылка на аватарку бота" 
                    ,"full_avatar_url" : "ссылка на аватарку бота в максимальном разрешении" 
                   }
-- для TDE

           ,"param" : {
                        "ftp": { "user" :"логин" }
                       ,"api": { "user" :"логин" }
                      }

-- для pushapp

           ,"param" :
             {
               ,"auth": {
                         "fcm" :
                          {
                           "project_id":  "FIREBASE_PROJECT_ID" 
                          }
                        ,"hms" :
                          {
                           "client_id" : "app_id из HMS" 
                          }
                       ,"apns" :
                          {
                           "topic" : "topic приложения iOS" 
                          ,"production" : false | true  -- использовании апп в режиме разработки (false) или в рабочем режиме (true)
                          ,"key_type" : "pem" | "p12" | "p8" -- тип ключа

                          ,"key_id" : "key_id"  -- только для "key_type": "p8" 
                          ,"team_id" : "team_id" -- только для "key_type": "p8" 
                         }
                       }

              ,"ios_via_fcm" : 0|1 -- отправка в iOS через fcm при работе с "сырым" мобильным api
                                   -- при использовании SDK игнорируется и считается что apns

              ,"sdk_token" : "токен аутентификации" 

              ,"sdk_contact_key" : "название ключа в котором передаётся адрес контакта" 

              ,"sdk_contact_addr_type" :  email|msisdn|viber|csid|push|vk|tg|vknotify|pushapp|max
             }
--
   }

}

Создание внешней аутентификации

{

 "action" : "authext.create" 

 ,"type" : "тип внешней аутентификации" 
            -- в данный момент поддерживается:
            --  0 - пара логин-пароль
            --  8 - Google Analytics
            --  9 - Bitrix24
            -- 10 - Google Big Data / Google Big Query
            -- 11 - amoCRM
            -- 14 - webpush
            -- 15 - emailonacid
            -- 16 - pushapp
            -- 17 - telegram
            -- 21 - TDE
            -- 23 - MAX

 ,"login" : "название внешней аутентификации" -- просто некая уникальная метка (должна быть пустой или отсутствовать для telegram)

 ,"status" : "статус внешней аутентификации" -- не обязательно, по умолчанию - 1
                                             -- 0 - ошибочная/отключённая, 1 - активная

 ,"reltype" : ...
 ,"relref" : ...

-- для пары логин-пароль

 ,"token" : "логин:пароль" 

-- для Google Big Data / Google Big Query

  -- Зарегистрируйтесь в Google, создайте проект в Google Cloud Platform и создайте сервисный аккаунт со ограниченными правами специально для sendsay
  -- Сервисный аккаунт - специальный гугловый аккаунт для работы с конкретным проектом в рамках заданных прав. Подробнее о нём читайте в https://cloud.google.com/iam/docs/service-accounts?hl=en_US

  -- После этого нужно выгрузить приватный ключ сервисного аккаунта в формате json. Все данные будут в одноименных полях - client_email, private_key, project_id - для использования в данном вызове.

 ,"client_email": "XXXXXXXXX@developer.gserviceaccount.com" -- почтовый адрес сервисного аккаунта

 ,"project_id": "XXXX" -- код проекта

 ,"private_key": "-----BEGIN PRIVATE KEY-----XXXXXXX-----END PRIVATE KEY-----\n" -- приватный ключ сервисного аккаунта

 ,"token": "..." - что угодно, скажем, ещё раз адрес сервисного аккаунта

-- для Google Analytics

 ,"token" : "refresh token" 

-- для amoCRM

 ,"user_login": ".....", -- логин (email) пользователя amoCRM

 ,"api_key": "......", -- несменяемый api-ключ пользователя (из профиля amoCRM)

 ,"subdomain": "new5991bf813bceb" -- субдомен действующей amoCRM

 ,"token": "....", - что угодно, скажем, ещё раз subdomain

-- для Bitrix24

 -- получение необходимых данных требует веб-диалога с пользователем Bitrix24 и поэтому не может быть тут описано
 -- воспользуйтесь веб-интерфейсом Sendsay для создания данной внешней аутентификации

-- для EmailOnAcid

 ."login":"eoa" 

 ,"token":"Basic значение-аутентификации" -- значение аутентификации это закодированная в base64 строка "<api_key_emailonacid>:<account_password_for_emailonacid>" 

-- для Telegram

 ,"token":"....." --  строка, полученный клиентом токен при регистрации бота

 ,"telegram.webhook": 0|1 -- необходимость регистрации веб-хука системы в Telegram
                          -- при указании в authext.set регистрирует или убирает регистрация веб-хука системы в Telegram

 ,"reply_disabled" : 0|1 -- включен ли запрет ответов нашего бота. не обязательно

 ,"proxy.url" : "url для просирования запросов от Telegram" -- не обязательно
                                                            -- для удаления укажите пустое значение в authext.set
                                                            -- проверяется доступность ссылки методом POST
                                                            -- наличие ошибки - прерывается создание внешней аутентификации

-- для MAX

 ,"token":"....." --  строка, полученный клиентом токен при регистрации бота

 ,"webhook": 0|1 -- необходимость регистрации нашего веб-хука системы в MAX
                          --  при указании в authext.create и authext.set регистрирует или убирает регистрацию веб-хука системы в MAX

 ,"reply_disabled" : 0|1 -- включен ли запрет ответов нашего бота. не обязательно

 ,"proxy.url" : "url для проксирования запросов от MAX" -- не обязательно
                                                        -- для удаления укажите пустое значение в authext.set
                                                        -- проверяется доступность ссылки методом POST
                                                        -- наличие ошибки - прерывается создание внешней аутентификации

-- для TDE

  "api": { "user" :"логин" , "password" :"пароль" }

-- для pushapp

  "auth": { -- данные аутентификации для Android, iOS и Huawei
    "fcm" :
      {
          "project_id":  "FIREBASE_PROJECT_ID" 
         ,"key_json":  "FIREBASE_API_KEY_JSON" 
      }
   ,"hms" :
      {
          "client_id" : "app_id из HMS" 
         ,"client_secret" :  "secret key, указанный в HMS" 
      }
    ,"apns" :
      {
          "topic" : "topic приложения iOS" 
         ,"production" : 0|1 -- использовании апп в режиме разработки (0) или в рабочем режиме (1)
         ,"key_type" : "pem" | "p12" | "p8" -- тип ключа

         ,"key" : "сертификат или authkey в Base64" 

         ,"key_id" : "key_id"  -- только для "key_type": "p8" 
         ,"team_id" : "team_id" -- только для "key_type": "p8" 

         ,"password" : "пароль к сертификату" -- кроме "key_type": "p8" 
      }
    }

  -- настройка способа отправки в iOS при работе с "сырым" мобильным api
  -- при использовании SDK игнорируется и считается что apns

 ,"ios_via_fcm" : 0|1 -- не обязательно
                  -- 0 -- через apns, по умолчанию.
                  -- 1 -- через apns

  -- настройки для использования мобильного SDK Exponea
  -- параметр sdk_token генерируется автоматически и доступен через autext.get

 ,"sdk_contact_key" : строка -- название ключа в котором передаётся адрес контакта
                             -- email, телефон или ещё какой-то ваш идентификатор клиента залогинившегося в вашем приложении

 ,"sdk_contact_addr_type" :  email|msisdn|viber|csid|push|vk|tg|vknotify|pushapp|max -- тип контакта

}

ответ

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

 ,"id" : идентификатор созданной внешней аутентификации

-- для Telegram

 ,"login"    : "username бота",
 ,"bot_name" : "имя бота" 

-- для MAX

 ,"login"    : "username бота",
 ,"bot_name" : "имя бота" 

}

Изменение внешней аутентификации

Обновляются только указанные в запросе поля

{
 "action" : "authext.set" 

 ,"id" : идентификатор внешней аутентификации

 ,"status" : "статус внешней аутентификации" -- не обязательно
                                             -- 0 - ошибочная/отключённая, 1 - активная

 ,"reltype" : ...

 ,"relref" : ...

 ... прочие поля специфические для используемого типа аутентификации ...

 -- особенность pushapp

 -- параметр sdk_token генерируется автоматически и не может быть произвольно изменйн
 -- однако возможно указание вот таком варианте что бы sdk_token был перегенирирован в новое значение

 ,"sdk_token" : "_RESET_" 
}

ответ

{

  <общие поля>

}

Удаление внешней аутентификации

{
 "action" : "authext.delete" 

 ,"id" : идентификатор внешней аутентификации
}

ответ

{

  <общие поля>

}

Информация об аутентификации в Google Analitics

{

 "action" : "authext.ga.props" 

,"id" : идентификатор внешней аутентификации

}

ответ

{

  <общие поля>

 "list" : {
           "логин-1" : [
                         {
                          "id" : "id сайта" 
                         ,"name" : "название сайта" 
                         }

                        ,....
                       ]

          ,....
          }
}