P1SMS P1SMS

API документация P1sms

Запрос на отправку сообщения

URL:

https://admin.p1sms.ru/apiSms/create

Метод:

post

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
webhookUrl string webhook URL Нет URL для отправки изменений статуса
sms array Список сообщений Да Максимальное количество СМС в одном запросе - 1000
sms.*.phone string(11) Номер телефона Да
sms.*.text string Текст сообщения Нет
sms.*.link string Ссылка для подстановки Нет
sms.*.channel string Канал сообщений (digit, char, viber, vk, telegram) Да
sms.*.sender string Имя отправителя Да, если канал сообщений - char, viber
sms.*.plannedAt timestamp Количество секунд Unix timestamp Нет
sms.*.viberParameters array Параметры сообщений Viber Да, если канал сообщений - viber Изображение, кнопка в сообщений, параметры каскадной рассылки
sms.*.viberParameters.*.type string Тип сообщения Viber Да 'text' - сообщение без кнопки 'link' - сообщение с кнопкой, открывающей ссылку 'phone' - сообщение с кнопкой с номером телефона
sms.*.viberParameters.*.btnText array Текст кнопки Да, если type равен link, phone
sms.*.viberParameters.*.btnLink string Ссылка кнопки Да, если type равен link
sms.*.viberParameters.*.btnPhone string(11) Номер кнопки Да, если type равен phone
sms.*.viberParameters.*.imageHash string Хэш картинки Нет Возвращается в результате запроса на загрузку картинки
sms.*.viberParameters.*.smsLifetime integer Время жизни сообщения Нет от 60 до 86400
sms.*.vkParameters array Параметры сообщений ВКонтакте Да, если канал сообщений - vk
sms.*.vkParameters.*.templateId integer Идентификатор шаблона Да Присваивается и возвращается в запросе на добавление шаблона
sms.*.vkParameters.*.tmplData JSON Значения переменных шаблона Да JSON объект, где ключи имена переменных в шаблоне
sms.*.vkParameters.*.userId integer Идентификатор пользователя, которому нужно доставить уведомление Нет Предварительно передается в клиентскую библиотеку в установленном приложении
sms.*.vkParameters.*.pushToken string Хэш картинки Нет Получается libverify или средствами клиента с устройства
sms.*.vkParameters.*.pushAps string iOS-поле aps Нет APS Dictionary содержит ключ, используемый Apple для того, чтобы отправлять уведомления на устройство
sms.*.vkParameters.*.pushEncrypt integer (0 | 1) Указывает, шифровать ли сообщение для приложения Нет Значения 0 или 1. По умолчанию = 0.
sms.*.vkParameters.*.userIp string (0.0.0.0) IP адрес пользователя Нет Используется для определения подборов кодов (bruteforce), а так же для лимитирования запросов; Если user_ip не будет указан, то соответствующие рейтлимиты использоваться не будут.
sms.*.vkParameters.*.ttl integer Время жизни сообщения в секундах (от 60 до 86400 секунд) Нет По умолчанию сообщение живет вечно. Если сообщение не было доставлено за время, оно не будет доставлено и ttl тарифицировано.
sms.*.vkParameters.*.issueTime timestamp Время создания сообщения в GMT+0 (Гринвич, unixtime) в формате десятичного числа в секундах с 1 января 1970 года. Нет По умолчанию берется время выполнения запроса на отправку. Используется вместе с параметром для вычисления времени ttl жизни сообщения.
sms.*.telegramChatIds array ID чатов в Telegram Нет ID чатов в Telegram, куда необходимо послать сообщение у одного номера телефона может быть привязано несколько чатов).
sms.*.tgParameters array Параметры сообщений Telegram Да, если канал сообщений - telegram
sms.*.tgParameters.*.botUsername string Хэш картинки Да
sms.*.tgParameters.*.content array Да
sms.*.tgParameters.*.content.*.priority integer Приоритет сообщения Да
sms.*.tgParameters.*.content.*.message string Текст сообщения Нет
sms.*.tgParameters.*.content.*.baseMessage boolean Указывает на то, что контетом сообщения будет основное сообщение Нет
sms.*.tgParameters.*.content.*.fileId integer ID файла в нашей системе Нет
sms.*.tgParameters.*.content.*.fileId integer ID файла в нашей системе Нет
sms.*.tgParameters.*.content.*.buttons array Настройки inline-клавиатуры Нет
sms.*.tgParameters.*.content.*.buttons.*.caption string Подпись кнопки inline-клавиатуры Да
sms.*.tgParameters.*.content.*.buttons.*.rowPriority integer Порядок кнопки в строках inline-клавиатуры Да
sms.*.tgParameters.*.content.*.buttons.*.columnPriority integer Хэш картинки Да
sms.*.tgParameters.*.content.*.buttons.*.removeKeyboard integer Удалять после нажатия inline-клавиатуру, или нет Нет
sms.*.tgParameters.*.content.*.buttons.*.redirectUrl string Удалять после нажатия inline-клавиатуру, или нет Нет
sms.*.tgParameters.*.content.*.buttons.*.actionId integer ID действия в нашей системе Нет
sms.*.tgParameters.*.content.*.buttons.*.action array Нет
sms.*.tgParameters.*.content.*.buttons.*.action.*.name string Название действия Да
sms.*.tgParameters.*.content.*.buttons.*.action.*.message string Текст сообщения Нет
sms.*.tgParameters.*.content.*.buttons.*.action.*.remoteScriptUrl string Вебхук на Ваш сервис нет Пример тела запроса от нашего сервера и пример ответа вашего сервера указан ниже, в разделе примеров (вкладка Telegram)
sms.*.tgParameters.*.content.*.buttons.*.action.*.tgParameters string tgParameters Нет
sms.*.cascadeSchemeId integer ID схемы каскадных смс Нет ID, заранее созданной схемы каскадных сообщений

Пример PHP

if( $curl = curl_init() ) {
          $jsonstr = '{"apiKey": "AbCd********", "sms": [{"channel":"digit", "text": "test1", "phone": "79*********", "plannedAt": 1490612400}, {"channel":"digit", "text": "test2", "phone": "79*********", "plannedAt": 1490612400}]}';
          curl_setopt($curl, CURLOPT_URL, 'https://admin.p1sms.ru/apiSms/create');
          curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($curl, CURLOPT_POST, true);
          curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonstr);
          curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
          curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
          $out = curl_exec($curl);
          echo $out;
          curl_close($curl);
      }
  ?>
<?php
      if( $curl = curl_init() ) {
          $jsonstr = '{"apiKey": "AbCd********", "sms": [{"channel":"char", "sender": "VIRTA" ,"text": "test1", "phone": "79*********", "plannedAt": 1490612400}, {"channel":"digit", "text": "test2", "phone": "79*********", "plannedAt": 1490612400}]}';
          curl_setopt($curl, CURLOPT_URL, 'https://admin.p1sms.ru/apiSms/create');
          curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($curl, CURLOPT_POST, true);
          curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonstr);
          curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
          curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
          $out = curl_exec($curl);
          echo $out;
          curl_close($curl);
      }
  ?>
<?php
      $url = "https://admin.p1sms.ru/apiSms/create";
      $requestArray = array(
          'apiKey' => "AbCd****",
          'sms' => array(
              array(
                  'channel' => 'viber',
                  'sender' => 'TEST',
                  'text' => 'TEST',
                  'phone' => '79*********',
              'plannedAt' => 1510000000,
                  'viberParameters' => array(
              'type' => 'link',
              'btnLink' => 'https://link.example.com',
                      'btnText' => 'click me',
                      'imageHash' => '15a27ef2c31999.jpg',
               ),
              )),
          'webhookUrl' => 'https://yoursite.com/viberUpdateStatusWebhook',
          );
      $json = json_encode($requestArray, JSON_UNESCAPED_UNICODE);
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>
<?php
      $url = "https://admin.p1sms.ru/apiSms/create";
      $requestArray = array(
          'apiKey' => "AbCd****",
          'sms' => array(
              array(
                  'channel' => 'vk',
                  'phone' => '79*********',
                  'plannedAt' => 1510000000,
                  'vkParameters' => array(
                      'templateId' => 1,
                      'tmpl_data' => '{"servicename":"yourorganization", "managername":"nameofyourmanager"}'
                  ),
              )),
          'webhookUrl' => 'https://yoursite.com/vkUpdateStatusWebhook',
      );
      $json = json_encode($requestArray, JSON_UNESCAPED_UNICODE);
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>
<?php
      $url = "https://admin.p1sms.ru/apiSms/create";
      $requestArray = array(
          'apiKey' => "AbCd****",
          'sms' => array(
              array(
                  'channel' => 'viber',
                  'sender' => 'TEST',
                  'text' => 'TEST',
                  'phone' => '79*********',
              'plannedAt' => 1510000000,
                  'viberParameters' => array(
              'type' => 'link',
              'btnLink' => 'https://link.example.com',
                      'btnText' => 'click me',
                      'imageHash' => '15a27ef2c31999.jpg',
               ),
              )),
          'webhookUrl' => 'https://yoursite.com/viberUpdateStatusWebhook',
          );
      $json = json_encode($requestArray, JSON_UNESCAPED_UNICODE);
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>
<?php
      $url = "https://admin.p1sms.ru/apiSms/create";
      $requestArray = array(
          'apiKey' => "AbCd****",
          'sms' => array(
              array(
                  'channel' => 'vk',
                  'phone' => '79*********',
                  'plannedAt' => 1510000000,
                  'vkParameters' => array(
                      'templateId' => 1,
                      'tmpl_data' => '{"servicename":"yourorganization", "managername":"nameofyourmanager"}'
                  ),
              )),
          'webhookUrl' => 'https://yoursite.com/vkUpdateStatusWebhook',
      );
      $json = json_encode($requestArray, JSON_UNESCAPED_UNICODE);
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>
<?php
      if( $curl = curl_init() ) {
          $url = "https://admin.p1sms.ru/apiSms/create";
          $params = [
            "apiKey" => "XXXXXXX",
            "sms" => [
              [
                "channel" => "telegram",
                "phone" => "7919XXXXXXX",
                "text" => "test",
                "telegramChatIds" => [999999999], // Можно установить ID чатов в телеграме, в которые нужно послать сообщение(у одного номера телефона может быть привязано несколько чатов)
                "tgParameters" => [
                  "botUsername" => "p1sms_test_bot",
                  "content" => [
                    [ //Отправляем основное сообщение
                      "baseMessage" => true, // В таком случае можно не указывать message - отправится то, что указано в качестве текста у смс. Если указать другой текст - основное сообщение(в данном случае "test") не будет отправлено
                      "priority" => 1, //Указываем то, что это сообщение должно отправиться самым первым
                      "buttons" => [ //Отправляем кнопки, которые будут являться inline-клавиатурой у сообщения
                        [
                            "caption" => "Нажми меня и перейди на наш сайт!",
                            "rowPriority" => 1, // Порядок кнопки в строках
                            "columnPriority" => 1, //Порядок кнопки в столбцах
                            "redirectUrl" => "https =>//admin.p1sms.ru",
                            "removeKeyboard" => true // Удалять после нажатия inline-клавиатуру, или нет
                        ]
                      ]
                    ],
                    [ // Отправляем какой то документ клиенту
                      "message" => "Подпись к документу, будет видна ниже прикрепляемого документа",
                      "fileId" => 1, //Идентификатор для отправляемого файла. Загружать можно по пути apiTelegramBots/files/upload
                      "priority" => 2,
                      "buttons" => [
                        [
                            "caption" => "Получить текущий курс доллара",
                            "rowPriority" => 1,
                            "columnPriority" => 1,
                            "action" => [ // Новое созданное действие идёт всегда в приоритете перед actionId(в случае если будут переданы оба параметра).
                              "name" => "get dollar rate",
                              "message" => "Текущий курс доллара => #rate# руб.",
                              "remoteScriptUrl" => "https =>//admin.p1sms.ru/api/telegramBots/getRate", //Вебхук на Ваш сервис. Формат входных и выходных данных можно увидеть в примере про вебхуки(читай ниже)
                              "tgParameters" => [ //Все параметры полностью аналогичны параметрам, указанным в текущем примере
                                "botUsername" => "p1sms_test_bot"
                              ]
                            ]
                        ],
                        [
                            "caption" => "Сделать какое-то действие",
                            "rowPriority" => 1,
                            "columnPriority" => 1,
                            "actionId" => 1 // Можно указать идентификатор уже созданного действия(по API или из ЛК), получить можно с помощью apiTelegramBots/actions/get
                        ]
                      ]
                    ]
                  ]
                ]
              ]
            ]
          ];
          $json = json_encode($params, JSON_UNESCAPED_UNICODE);
          $curl = curl_init();
          curl_setopt($curl, CURLOPT_URL, $url);
          curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($curl, CURLOPT_POST, true);
          curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
          curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
          curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
          $out = curl_exec($curl);
          $response = json_decode($out);
          curl_close($curl);
      }
  ?>?>

Пример тела запроса remoteScriptUrl

POST /yourUrl
  {
    "spamBotId": 1, // Идентификатор телеграм бота
    "chatId": 999999999, //Идетификатор чата с клиентом
    "actionId": 1, // Идентификатор действия, которое вызвало вебхук
    "actionName": "unsubscribe", //Название действия, которое вызвало вебхук
    "variables": [{ // Переменные, которые будут использовать при заменах конечного сообщения
      "firstName": "first name of client",
      "lastName": "last name of client",
      "phone": "7999XXXXXXX"
    }],
    "parameters": "параметр1 параметр2 параметр3", //Параметры(строка), указанные при вызове команды. Если параметров не было - параметра не будет во входных данных. В данном примере могла быть вызвана команда /test параметр1 параметр2 параметр3
    "messageId": 999888777 //Идентификатор сообщения, у которого была нажата кнопка, которое вызвало данное действие. Если кнопки не было - параметра не будет во входных данных
  }

Ответ вашего сервера на webhook remoteScriptUrl (Status code: 200)
Если не требуется совершать никаких действий, менять сообщение

  {}

Если требуется изменить сообщение

 {
    "message": "Новое сообщение с новой переменной #var1# и переменной, которая уже есть у нас: #firstName#", // Сообщение, которое заменит сообщение указанное как baseMessage в одном из telegramParameters.content массиве
    "variables": [{ // Дополнительные переменные, которые будут использоваться при отправке сообщения. Если новых переменных не будет - параметр не обязателен
      "var1": "переменная 1"
    }],
    "tgParameters": { //Все параметры телеграм сообщений совпадают с теми, которые используются при создании сообщения. Если не требуется менять content - параметр не обязателен
      "botUsername": "p1sms_bot",
      "content": [
        {
          "baseMessage": true,
          "priority": 1
        }
      ]
    }
  }
<?php
     $url = "https://admin.p1sms.ru/apiSms/create";
     $params = json_decode('{
        "apiKey":"AbCd****",
        "sms":[
           {
              "channel":"viber",
              "phone":"79*********",
              "sender":"VIRTA",
              "text":"text viber message 2",
              "viberParameters":{
                 "type":"text",
                 "smsLifetime":60000
              },
              "cascade":{
                 "name":"API CASCADE TEST",
                 "schemeDetail":[
                    {
                       "needStatus":"not_delivered",
                       "smstemplate":{
                          "channel":"char",
                          "texts":[
                             "test cascade message 2"
                          ],
                          "sender":"VIRTA"
                       }
                    }
                 ]
              }
           }
        ]
     }', true);
     $curl = curl_init();
     curl_setopt($curl, CURLOPT_URL, $url);
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($curl, CURLOPT_POST, true);
     curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
     curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
     curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
     $out = curl_exec($curl);
     $response = json_decode($out);
     curl_close($curl);
  ?>

Пример ответа

                                        {
      "status": "success",
      "data": [
          {
              "message": "test1 _\\",
              "id": 370506708,
              "status": "sent",
              "phone": "79991002233"
          },
          {
              "message": "test2 (/",
              "id": 370506709,
              "status": "sent",
              "phone": "79991112233"
          }
      ]
  }

Запрос на отправку сообщения

URL:

https://admin.p1sms.ru/apiSms/get

Метод:

post

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
apiSmsIdList array Список ID сообщений Да
apiSmsIdList.* integer Список сообщений

Пример на PHP

<?php
      $jsonstr = '{"apiKey": "AbCd********", "apiSmsIdList": [1, 2, 3, 4, 5]}';
      if( $curl = curl_init() ) {
          curl_setopt($curl, CURLOPT_URL, 'https://admin.p1sms.ru/apiSms/get');
          curl_setopt($curl, CURLOPT_POST, true);
          curl_setopt($curl, CURLOPT_POSTFIELDS, $jsonstr);
          curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
          curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
          $out = curl_exec($curl);
          echo $out;
          curl_close($curl);
      }
  ?>

Пример на 1с

Соединение = Новый HTTPСоединение("https://admin.p1sms.ru/apiSms/",,,,,, Новый ЗащищенноеСоединениеOpenSSL());
   Запрос = Новый HTTPЗапрос("get");
   Запрос.Заголовки.Вставить("Content-Type", "application/json");
   Запрос.Заголовки.Вставить("accept", "application/json");
   Запрос.УстановитьТелоИзСтроки("{""apiKey"": ""AbCd********"",
                                   ""apiSmsIdList"": [1, 2, 3, 4, 5]}",
      "utf-8", ИспользованиеByteOrderMark.НеИспользовать);
   Ответ = Соединение.ОтправитьДляОбработки(Запрос);
   ТелоОтвет = Ответ.ПолучитьТелоКакСтроку();
                            

Пример ответа

                                      {
      "status": "success",
      "data": [
         {
             "id": "7777000",
             "errorDescription": null,
             "cost": "0.50",
             "createdAt": 1504988172,
             "updatedAt": 1504988191,
             "cascadeSmsId": null,
             "status": "delivered",
         }
      ],
  }

Запрос на создание схемы каскадных сообщений

URL:

https://admin.p1sms.ru/apiSms/create

Метод:

post

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
name string Название схемы каскада Нет
comment string Комментарий Нет
schemeDetail array Схема каскадных сообщений Да
schemeDetail.*.needStatus string Статус, при котором должно отправиться каскадное сообщение Да delivered - Доставлено, not_delivered - Не доставлено, error - Ошибка отправки, read - Прочитано (Доступно только для каналов: vk, viber)
schemeDetail.*.smstemplate array Шаблон сообщения Да
schemeDetail.*.smstemplate.*.channel string Канал сообщений (digit, char, viber, vk, telegram) Да
schemeDetail.*.smstemplate.*.sender string Имя отправителя Да, если канал сообщений - viber, char
schemeDetail.*.smstemplate.*.texts array Тексты сообщений Да
schemeDetail.*.smstemplate.*.texts.* string Текст сообщения Да
schemeDetail.*.smstemplate.*.minutesDelay integer Задержка отправки сообщения (в минутах) Нет
schemeDetail.*.smstemplate.*.sendStartTime integer Время, от которого можно отпралять сообщения Нет Количество минут с начала дня по UTC, например, 10:00 по МСК = 420 минут с начала дня по UTC
schemeDetail.*.smstemplate.*.sendEndTime integer Время, до которого можно отпралять сообщения Нет Количество минут с начала дня по UTC, например, 10:00 по МСК = 420 минут с начала дня по UTC
schemeDetail.*.smstemplate.*.viberParameters array Параметры сообщений Viber Да, если канал сообщений - viber Изображение, кнопка в сообщений, параметры каскадной рассылки
schemeDetail.*.smstemplate.*.viberParameters.*.type string Тип сообщения Viber Да 'text' - сообщение без кнопки'link' - сообщение с кнопкой, открывающей ссылку'phone' - сообщение с кнопкой с номером телефона
schemeDetail.*.smstemplate.*.viberParameters.*.btnText string Текст кнопки Да, если type равен link, phone
schemeDetail.*.smstemplate.*.viberParameters.*.btnLink string Ссылка кнопки Да, если type равен link
schemeDetail.*.smstemplate.*.viberParameters.*.btnPhone string(11) Номер кнопки Да, если type равен phone
schemeDetail.*.smstemplate.*.viberParameters.*.imageHash string Хэш картинки Нет Возвращается в результате запроса на загрузку картинки
schemeDetail.*.smstemplate.*.vkParameters array Параметры сообщений ВКонтакте Да, если канал сообщений - vk
schemeDetail.*.smstemplate.*.vkParameters.*.templateId integer Идентификатор шаблона Да JSON объект, где ключи имена переменных в шаблоне
schemeDetail.*.smstemplate.*.vkParameters.*.tmplData JSON Значения переменных шаблона Да JSON объект, где ключи имена переменных в шаблоне
schemeDetail.*.smstemplate.*.vkParameters.*.userId integer Идентификатор пользователя, которому нужно доставить уведомление Нет Предварительно передается в клиентскую библиотеку в установленном приложении
schemeDetail.*.smstemplate.*.vkParameters.*.pushToken string Push token iOS или Android Нет Получается libverify или средствами клиента с устройства
schemeDetail.*.smstemplate.*.vkParameters.*.pushAps string iOS-поле aps Нет APS Dictionary содержит ключ, используемый Apple для того, чтобы отправлять уведомления на устройство
schemeDetail.*.smstemplate.*.vkParameters.*.pushEncrypt integer (0 | 1) Указывает, шифровать ли сообщение для приложения Нет Значения 0 или 1. По умолчанию = 0.
schemeDetail.*.smstemplate.*.vkParameters.*.userIp string (0.0.0.0) IP адрес пользователя Нет Используется для определения подборов кодов (bruteforce), а так же для лимитирования запросов; Если user_ip не будет указан, то соответствующие рейтлимиты использоваться не будут.
schemeDetail.*.smstemplate.*.vkParameters.*.ttl integer Время жизни сообщения в секундах (от 60 до 86400 секунд) Нет По умолчанию сообщение живет вечно. Если сообщение не было доставлено за время, оно не будет доставлено и ttl тарифицировано.
schemeDetail.*.smstemplate.*.vkParameters.*.issueTime timestamp Время создания сообщения в GMT+0 (Гринвич, unixtime) в формате десятичного числа в секундах с 1 января 1970 года. Нет По умолчанию берется время выполнения запроса на отправку. Используется вместе с параметром для вычисления времени ttl жизни сообщения.
schemeDetail.*.smstemplate.*.tgParameters array Параметры сообщений Telegram Да, если канал сообщений - telegram
schemeDetail.*.smstemplate.*.tgParameters.*.botUsername string Username Telegram Бота Да
schemeDetail.*.smstemplate.*.tgParameters.*.readButton boolean Кнопка "Прочитано" Нет Необходимо ли посылать кнопку "прочтено" с сообщением (По умолчанию посылается)
schemeDetail array Схема каскадных сообщений Нет

Пример PHP

<?php
      $params = json_decode('{
         "apiKey": "AbCd****",
         "cascade": {
             "name": "Api_Cascadee_Template_1",
             "schemeDetail":[
                {
                   "needStatus":"delivered",
                   "smstemplate":{
                      "channel":"digit",
                      "texts":[
                         "test"
                      ],
                      "minutesDelay":60,
                      "sendStartTime":420,
                      "sendEndTime":1020
                   },
                   "schemeDetail":[
                      {
                         "needStatus":"delivered",
                         "smstemplate":{
                            "channel":"digit",
                            "texts":[
                               "test2"
                            ],
                            "sendStartTime":420,
                            "sendEndTime":960
                         }
                      }
                   ]
                },
                {
                   "needStatus":"not_delivered",
                   "smstemplate":{
                      "channel":"digit",
                      "texts":[
                         "test"
                      ]
                   }
                }
             ]
         }

      }', true);
      $url = https://admin.p1sms.ru/apiSms/createCascadeScheme";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Загрузка изображения для Viber

URL:

https://admin.p1sms.ru/apiSms/loadImage

Метод:

post

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
img file (.jpg, .png) Файл с изображением Да

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiSms/loadImage";
      $requestArray = array(
          'apiKey' => "AbCd****",
          'img' => new \CURLFile('/path_to_file/image.jpg'),
      );
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $requestArray);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: multipart/form-data', 'accept: multipart/form-data'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>
                            

Пример ответа

{
  "status": "success",
  "data": {},
  }

Запрос статуса сообщения

URL:

https://admin.p1sms.ru/apiSms/getSmsStatus

Метод:

get

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
smsId array Список ID сообщений Да

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiSms/getSmsStatus?apiKey=AbCd****&smsId[0]=1&smsId[1]=2&smsId[2]=3";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

[
      {
          "sms_id": 2222,
          "sms_status": "delivered",
          "receive_date": "2019-11-18 16:00:53"
      }
  ]

Запрос на получение баланса

URL:

https://admin.p1sms.ru/apiUsers/getUserBalanceInfo

Метод:

get

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiUsers/getUserBalanceInfo?apiKey=arEre****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
  "status": "success",
  "data": "15.0000"
  }

Запрос на получения списка отправителей

URL:

https://admin.p1sms.ru/apiUsers/getUserSenders

Метод:

get

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiUsers/getUserSenders?apiKey=arEre****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": [
            {
          "senderName": "SENDER",
          "status": null
          }
      ],
  }

Запрос на получение списка отправленных сообщений

URL:

https://admin.p1sms.ru/apiSms/getSmsList

Метод:

get

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
page integer Номер страницы Нет Страница содержит 20 записей. Без указания номера страницы выводятся первые 20 записей.
pageCapacity integer Строка поиска Нет Строка поиска по номеру телефона
search string Количество записей Нет Количество записей на странице. По умолчанию 20
from integer Дата Нет Дата начала поиска в формате Timestamp, по умолчанию - начало текущего дня (00:00)
to integer Дата Нет Дата конца поиска в формате Timestamp, по умолчанию - конец текущего дня (23:59)
column string Поле для сортировки Нет Доступные поля: (created_at, updated_at, sent_at)
order string Порядок сортировки Нет (asc, desc)
sources array Нет
sources.* string Источник сообщений Нет Источники для фильтрации: (delivery, api, smpp, amocrm, yclients, birthday)
channels array Нет
channels.* string Канал сообщений Нет Канал сообщений (digit, char, viber, telegram, vk)
statuses array Нет
statuses.* string Статус сообщения Нет Доступные статусы для фильтрации: (created, delivered, not_delivered, low_balance, sent, error, read)
senders array Нет
senders.* string api.senderName Нет
messageType string Тип сообщения Нет Доступные типы: (service, promo)
shortUrlClicked boolean Переход по короткой ссылке Нет

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiSms/getSmsList?apiKey=arEre****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": [
          {
          "smsId": 9345490,
          "receiveDate": {
              "date": "2019-04-18 07:05:12.000000",
              "timezone_type": 3,
              "timezone": "UTC"
          },
          "senderPhone": "72343534534",
          "phone": "79091112233",
          "text": "test1 ]-"
          },
          ]
  }

Запрос на получение информации по номеру телефона

URL:

https://admin.p1sms.ru/apiPhones/getPhoneInfo

Метод:

get

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
phone string(11) Номер страницы Да

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiPhones/getPhoneInfo?apiKey=arEre****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": {
          "phone": "79091111212",
          "operator": "Теле2",
          "region": "Пермский край",
          "additionalInfo": null
      }
  }

Запрос на получение информации об операторах по номерам телефонов

URL:

https://admin.p1sms.ru/api/v2/phones

Метод:

get

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
p array Номера телефонов Да Массив номеров (до 1000 шт. за один запрос)
p.* string Номер страницы Да Номер телефона в международном формате

Пример PHP

<?php
      $url = https://admin.p1sms.ru/api/v2/phones?p[0]=79637303932&apiKey=8xn****7cbms;
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": {
          "79637303932": {
              "operator": "Билайн",
              "country": "Россия",
              "region": "Вологодская область",
          }
      }
  }

Запрос на получение списка баз

URL:

https://admin.p1sms.ru/apiUsers/getUserBases

Метод:

get

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiUsers/getUserBases?apiKey=arEre****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": [
          {
          "baseId": 4464,
          "baseName": "18.04.2019 (14:38:33)"
          }
      ],
  }

Запрос на получение списка абонентов базы

URL:

https://admin.p1sms.ru/apiUsers/getBasePhones

Метод:

get

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
baseId integer ID базы Да
page integer Номер страницы Страница содержит 100 записей. Без указания номера страницы выводятся первые 100 записей.

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiUsers/getBasePhones?apiKey=arEre****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": {
          "total": 4,
          "perPage": 100,
          "currentPage": 1,
          "lastPage": 1,
          "nextPageUrl": null,
          "prevPageUrl": null,
          "from": 1,
          "to": 4,
          "data": [
                {
              "phone": "79092342312"
              },
                {
              "phone": "79091234353"
              },
                {
              "phone": "79091233523"
              },
                {
              "phone": "79091141212"
              }
          ],
      }
  }

Запрос на добавление номера телефона в базу номеров

URL:

https://admin.p1sms.ru/apiPhoneBases/{phone_base_id}/phones

Метод:

POST

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
phones array Да
phones.*.phone string(11) Номер телефона в международном формате Да
phones.*.additionalcolumns array Дополнительные столбцы Нет

Пример PHP

<?php
      $params = json_decode('{
         "apiKey":"arEre****",
         "phones":[
            {
               "phone":"79999996669"
            },
            {
               "phone":"Номер_2"
            }
         ]
      }', true);
      $url = https://admin.p1sms.ru/apiPhoneBases/999999/phones";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $params);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": {
          "total": 4,
          "perPage": 100,
          "currentPage": 1,
          "lastPage": 1,
          "nextPageUrl": null,
          "prevPageUrl": null,
          "from": 1,
          "to": 4,
          "data": [
                {
              "phone": "79092342312"
              },
                {
              "phone": "79091234353"
              },
                {
              "phone": "79091233523"
              },
                {
              "phone": "79091141212"
              }
          ],
      }
  }

Запрос на получение списка номеров из черного списка

URL:

https://admin.p1sms.ru/apiUsers/getUserBlacklist

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
page integer Номер страницы Страница содержит 100 записей. Без указания номера страницы выводятся первые 100 записей.

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiUsers/getUserBlacklist?apiKey=arEre****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": [
          {
          "phone": "71231231211",
          "additionalInfo": null
          }
      ],
  }

Запрос на получение списка запланированных сообщений

URL:

https://admin.p1sms.ru/apiUsers/getPlannedSms

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
page integer Номер страницы Страница содержит 20 записей. Без указания номера страницы выводятся первые 20 записей.

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiUsers/getPlannedSms?apiKey=arEre****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
  "status":"success",
  "data":
  []
  }

Запрос на просмотр доступных шаблонов Вконтакте

URL:

https://admin.p1sms.ru/apiSms/listMessageTemplates

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiSms/listMessageTemplates?apiKey=AbCd****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": [
          {
          "id": 14,
          "name": "zvonobot_communicate_soon",
          "status": "available",
          "tmpl": "Наш специалист в ближайшее время свяжется в вами, #user#",
          "vkGroupUrl": "https://vk.com/zvonobot",
          "okGroupUrl": null,
          "attdir": null,
          "attachments": [],
          }
      ],
  }

Запрос на просмотр доступных шаблонов каскадных сообщений

URL:

https://admin.p1sms.ru/apiSms/getCascadeSchemes

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
apiKey string Строка поиска Нет

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiSms/getCascadeSchemes?apiKey=AbCd****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Запрос на получение списка Telegram ботов

URL:

URL: https://admin.p1sms.ru/apiTelegramBots/get

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiTelegramBots/get?apiKey=AbCd****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": [
          {
              "id": 4,
              "name": "Тестовый бот",
              "username": "test1111_bot",
              "welcomeMessage": "Вас приветствует тестовый бот!",
              "phoneInputMessage": "Укажите ваш номер телефона",
              "lang": "ru",
              "createdAt": 1589810295,
              "updatedAt": 1589810295,
          }
      ]
  }

Запрос на получение списка файлов для Telegram

URL:

https://admin.p1sms.ru/apiTelegramBots/files/get

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
botUsername string Username бота Да

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiTelegramBots/files/get?apiKey=AbCd****&botUsername=test111_bot";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>
                   

Запрос на загрузку файла для Telegram

URL:

https://admin.p1sms.ru/apiTelegramBots/actions/get

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
botUsername string Username бота Да

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiTelegramBots/actions/get?apiKey=AbCd****&botUsername=test111_bot";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Запрос на создание нового действия для Telegram

URL:

https://admin.p1sms.ru/apiTelegramBots/files/upload

Метод:

POST

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
botUsername string Username бота Да
name string Название действия Да
comment string Комментарий Нет
message string Текст сообщения Нет
mayUsedAsButton boolean Текст сообщения Нет
remoteScriptUrl string Вебхук на Ваш сервис Нет Пример тела запроса от нашего сервера и пример ответа вашего сервера указан ниже
tgParameters array Параметры сообщений Telegram
tgParameters.*.botUsername string Username Telegram Бота Да
tgParameters.*.content array Да
tgParameters.*.content.*.priority integer Приоритет сообщения Да
tgParameters.*.content.*.message string Подпись к документу, будет видна ниже прикрепляемого документа Нет
tgParameters.*.content.*.baseMessage boolean Указывает на то, что контетом сообщения будет основное сообщение Нет
tgParameters.*.content.*.fileId integer ID файла в нашей системе Нет
tgParameters.*.content.*.buttons array Настройки inline-клавиатуры Нет
tgParameters.*.content.*.buttons.*.caption string Подпись кнопки inline-клавиатуры Да
tgParameters.*.content.*.buttons.*.rowPriority integer Порядок кнопки в строках inline-клавиатуры Да
tgParameters.*.content.*.buttons.*.columnPriority integer Порядок кнопки в столбцах inline-клавиатуры Да
tgParameters.*.content.*.buttons.*.removeKeyboard integer Удалять после нажатия inline-клавиатуру, или нет Нет
tgParameters.*.content.*.buttons.*.redirectUrl string Ссылка, по которой будет осуществлен переход после нажатия кнопки Нет
tgParameters.*.content.*.buttons.*.actionId integer ID действия в нашей системе Нет
tgParameters.*.content.*.buttons.*.action array Нет
tgParameters.*.content.*.buttons.*.action.*.name string Название действия Да
tgParameters.*.content.*.buttons.*.action.*.message string Текст сообщения Да no
tgParameters.*.content.*.buttons.*.action.*.remoteScriptUrl string Вебхук на Ваш сервис Нет Пример тела запроса от нашего сервера и пример ответа вашего сервера указан ниже, в разделе примеров (вкладка Telegram)
tgParameters.*.content.*.buttons.*.action.*.tgParameters string tgParameters Нет

Пример PHP

<?php
      $url = https://admin.p1sms.ru/apiTelegramBots/files/upload";
      $requestArray = array(
          "botUsername" => "p1sms_bot",
          "name" => "Новое действие", // Название действие, возвращается в вебхуке
          "comment" => "Комментарий",
          "message" => "Совершено действие 1", //baseMessage у нового действия
          "tgParameters" => [], // По аналогии с выше
          "remoteScriptUrl" => "https://admin.p1sms.ru/api/actions/getRate", //Webhook на удалённый адрес
           mayUsedAsButton" => false, // Может ли данное действие использоваться в клавиатуре у телеграма ( если есть обязательные параметры - не может)

      );
      $json = json_encode($requestArray, JSON_UNESCAPED_UNICODE);
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_POST, true);
      curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример тела запроса remoteScriptUrl

POST /yourUrl
  {
    "spamBotId": 1, // Идентификатор телеграм бота
    "chatId": 999999999, //Идетификатор чата с клиентом
    "actionId": 1, // Идентификатор действия, которое вызвало вебхук
    "actionName": "unsubscribe", //Название действия, которое вызвало вебхук
    "variables": [{ // Переменные, которые будут использовать при заменах конечного сообщения
      "firstName": "first name of client",
      "lastName": "last name of client",
      "phone": "7999XXXXXXX"
    }],
    "parameters": "параметр1 параметр2 параметр3", //Параметры(строка), указанные при вызове команды. Если параметров не было - параметра не будет во входных данных. В данном примере могла быть вызвана команда /test параметр1 параметр2 параметр3
    "messageId": 999888777 //Идентификатор сообщения, у которого была нажата кнопка, которое вызвало данное действие. Если кнопки не было - параметра не будет во входных данных
  }

Ответ вашего сервера на webhook remoteScriptUrl (Status code: 200)
Если не требуется совершать никаких действий, менять сообщение

    {}

Если требуется изменить сообщение

  {}{
    "message": "Новое сообщение с новой переменной #var1# и переменной, которая уже есть у нас: #firstName#", // Сообщение, которое заменит сообщение указанное как baseMessage в одном из telegramParameters.content массиве
    "variables": [{ // Дополнительные переменные, которые будут использоваться при отправке сообщения. Если новых переменных не будет - параметр не обязателен
      "var1": "переменная 1"
    }],
    "tgParameters": { //Все параметры телеграм сообщений совпадают с теми, которые используются при создании сообщения. Если не требуется менять content - параметр не обязателен
      "botUsername": "p1sms_bot",
      "content": [
        {
          "baseMessage": true,
          "priority": 1
        }
      ]
    }
  }

Коды ошибок

core.api.code Имя Примечание
0 Нет ошибки Абонент существует и Доступные
1 Объект не существует Объект с указанным id или номером не существует
2 Нет доступа Недостаточно прав для доступа к запрашиваемым данным

Статусы рассылок

Имя Примечание
"created" Создано
"moderation" На модерации
"sent" Отправлено
"error" Ошибка в системе
"delivered" Доставлено
"not_delivered" Не доставлено
"read" Прочитано
"planned" Запланировано
"low_balance" Низкий баланс клиента
"low_partner_balance" Ошибка 592
"rejected" Отклонена

Запрос на просмотр статистики

URL:

https://admin.p1sms.ru/api/statistics

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
startDate integer Количество секунд Unix timestamp Нет
endDate integer Количество секунд Unix timestamp Нет
channel string 'digit', 'char', 'viber', 'voice' or 'vk' Нет
source string 'delivery', 'api', 'birthday' or 'yclients' Нет
grouping.* string 'channel', 'delivery', 'operator', 'sender', 'smpp', 'source', 'tariff' Нет
grouping.time string 'minute', 'hour', 'day', 'month' or 'year' Нет

Пример PHP

<?php
      $url = https://admin.p1sms.ru/api/statistics?startDate=15554****";
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, $url);
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'accept: application/json'));
      curl_setopt($curl, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4);
      $out = curl_exec($curl);
      $response = json_decode($out);
      curl_close($curl);
  ?>

Пример ответа

{
      "status": "success",
      "data": [
          {
          "delivered": 0,
          "read": 0,
          "notDelivered": 0,
          "sent": 0,
          "cost": null,
          "smsCount": null,
          "compensation": null
          }
      ],
  }

Запрос на просмотр статистики (Новый)

URL:

https://admin.p1sms.ru/api/statistics

Метод:

GET

Имя Тип Значение Обязательный Примечание
apiKey string API-ключ Да API ключ вы можете найти в разделе «‎Эмулятор запросов»‎ или «‎Инструкция по API»‎
startDate integer Количество секунд Unix timestamp Нет
endDate integer Количество секунд Unix timestamp Нет
channels string 'digit', 'char', 'viber', 'voice' or 'vk' Нет
currencies string Нет
exclCurrencies string Нет
grouping.* string 'channel', 'delivery', 'operator', 'sender', 'smpp', 'source', 'tariff' Нет

Пример ответа

{
  "status": "success",
  "data": [
      {
          "currency": "USD",
          "cCost": 0.16,
          "cComp": 0,
          "notDelivered": 0,
          "delivered": 4,
          "read": 0,
          "sent": 0,
          "totalSent": 4,
          "cesCost": 0.9,
          "pesCost": 0,
          "esNotDelivered": 0,
          "esDelivered": 1,
          "esRead": 0,
          "esSent": 0,
          "esTotalSent": 1,
          "notSended": 0,
          "esNotSended": 0
      },
      {
          "currency": "RUB",
          "cCost": 553.3,
          "cComp": 69.34,
          "notDelivered": 23,
          "delivered": 200,
          "read": 7,
          "sent": 14,
          "totalSent": 273,
          "cesCost": 0.9,
          "pesCost": 0,
          "esNotDelivered": 0,
          "esDelivered": 1,
          "esRead": 0,
          "esSent": 0,
          "esTotalSent": 2,
          "notSended": 29,
           "esNotSended": 1
      }
  ]
  }
          "smsCount": null,
          "compensation": null
          }
      ],
  }