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
}
]
}
}
Запрос на генерацию ссылок для пользователей Telegram бота
URL:
https://admin.p1sms.ru/apiTelegramBots/getLinks
Метод:
POST
Имя | Тип | Значение | Обязательный | Примечание |
---|---|---|---|---|
apiKey | string | API-ключ | Да | API ключ вы можете найти в разделе «Эмулятор запросов» или «Инструкция по API» |
botUsername | string | Username Telegram Бота | Да | |
phones | array | Да | ||
schema | string | Схема обращения к ресурсу (https, tg) | Нет | По умолчанию https |
phones.*.phone | string(11) | Номер телефона в международном формате | Да |
Пример PHP
<?php
$url = https://admin.p1sms.ru/apiTelegramBots/getLinks?apiKey=AbCd****&botUsername=test1111_bot&phones[]=79991234455";
$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": "79991234455",
"link": "t.me/test1111_bot?start=fgdf",
}
]
}
Коды ошибок
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
}
],
}