Наполнение рассылки сообщениями#
Наполнение рассылки#
POST https://direct.i-dgtl.ru/api/v1/dispatch/{dispatchId}/messages
Path Parameters#
Name |
Type |
Description |
|---|---|---|
dispatchId* |
integer |
Идентификатор рассылки |
Headers#
Name |
Type |
Description |
|---|---|---|
Authorization* |
string |
|
Content-Type* |
string |
|
Request Body#
Name |
Type |
Description |
|---|---|---|
destination* |
string |
Номер абонента |
substitutions |
object |
Подстановки для текста рассылки |
Возвращаются идентификаторы успешно созданных, а также коды ошибок неуспешных сообщений.
[
{
"destination": "79818269375",
"messageUuid": "uuid"
},
{
"destination": "79818228228",
"errorCode": 7401
}
]
Использование невалидного токена / отсутствие заголовка авторизации.
{
"error": {
"code": 4012,
"msg": "Bad credentials"
}
}
{
"error": {
"code": 4010,
"msg": "Not Authenticated"
}
}
Использование неподходящего токена.
{
"error": {
"code": 4030,
"msg": "Access Denied"
}
}
Совет
Проверка уникальности destination в рамках одной рассылки не выполняется
В одном запросе можно передать не более 1000 сообщений
Совет
Рекомендуемое время ожидания ответа: 70 секунд.
Как правило, ответ на запрос возвращается не более чем за несколько секунд, но таймаут величиной в 70 секунд позволяет гарантированно получить ответ на запрос, в том числе в ситуациях повышенной нагрузки.
Подстановки #
Ключи объекта substitutions должны соответствовать переменным в тексте рассылки.
Текст рассылки: #
"Уважаемый {{A}}! Рады сообщить, что Вам одобрена кредитная карта на сумму {{B}}, можете забрать ее в ближайшем офисе по адресу {{C}}."
Объект подстановок: #
"substitutions": {
"A": "Сергей Алексеевич",
"B": "100 тыс. руб.",
"C": "Санкт-Петербург, Большой проспект П.С., 12"
}
Совет
При отсутствии подстановок в тексте рассылки, объект substitutions будет проигнорирован.
Коды ошибок #
При отсутствии хотя бы одной подстановки для сообщения - 7401
При невалидном номере абонента - 7402
Пример запроса #
POST https://direct.i-dgtl.ru/api/v1/dispatch/10000000125/messages
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
Content-Type: application/json
[
{
"destination": "79818269375",
"substitutions": {
"A": "Сергей Алексеевич",
"B": "100 тыс. руб.",
"C": "Санкт-Петербург, Большой проспект П.С., 12"
}
},
{
"destination": "79818228228",
"substitutions": {
"A": "Алексей Сергеевич",
"B": "1000 рублей"
}
}
]
curl -X POST 'https://direct.i-dgtl.ru/api/v1/dispatch/10000000125/messages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
-d '[{"destination":"79818269375","substitutions":{"A":"Сергей Алексеевич","B":"100 тыс. руб.","C":"Санкт-Петербург, Большой проспект П.С., 12"}},{"destination":"79818228228","substitutions":{"A":"Алексей Сергеевич","B":"1000 рублей"}}]'
import requests
import json
url = "https://direct.i-dgtl.ru/api/v1/dispatch/{dispatchId}/messages"
payload = json.dumps([
{
"destination": "79818269375",
"substitutions": {
"A": "Сергей Алексеевич",
"B": "100 тыс. руб.",
"C": "Санкт-Петербург, Большой проспект П.С., 12"
}
},
{
"destination": "79818228228",
"substitutions": {
"A": "Алексей Сергеевич",
"B": "1000 рублей"
}
}
])
headers = {
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
const raw = JSON.stringify([
{
"destination": "79818269375",
"substitutions": {
"A": "Сергей Алексеевич",
"B": "100 тыс. руб.",
"C": "Санкт-Петербург, Большой проспект П.С., 12"
}
},
{
"destination": "79818228228",
"substitutions": {
"A": "Алексей Сергеевич",
"B": "1000 рублей"
}
}
]);
const requestOptions = {
method: "POST",
headers: myHeaders,
body: raw,
redirect: "follow"
};
fetch("https://direct.i-dgtl.ru/api/v1/dispatch/{dispatchId}/messages", requestOptions)
.then((response) => response.text())
.then((result) => console.log(result))
.catch((error) => console.error(error));
OkHttpClient client = new OkHttpClient().newBuilder()
.build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "[\n {\n \"destination\": \"79818269375\",\n \"substitutions\": {\n \"A\": \"Сергей Алексеевич\",\n \"B\": \"100 тыс. руб.\",\n \"C\": \"Санкт-Петербург, Большой проспект П.С., 12\"\n }\n },\n {\n \"destination\": \"79818228228\",\n \"substitutions\": {\n \"A\": \"Алексей Сергеевич\",\n \"B\": \"1000 рублей\"\n }\n }\n]");
Request request = new Request.Builder()
.url("https://direct.i-dgtl.ru/api/v1/dispatch/{dispatchId}/messages")
.method("POST", body)
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
<?php
$client = new Client();
$headers = [
'Content-Type' => 'application/json'
];
$body = '[
{
"destination": "79818269375",
"substitutions": {
"A": "Сергей Алексеевич",
"B": "100 тыс. руб.",
"C": "Санкт-Петербург, Большой проспект П.С., 12"
}
},
{
"destination": "79818228228",
"substitutions": {
"A": "Алексей Сергеевич",
"B": "1000 рублей"
}
}
]';
$request = new Request('POST', 'https://direct.i-dgtl.ru/api/v1/dispatch/{dispatchId}/messages', $headers, $body);
$res = $client->sendAsync($request)->wait();
echo $res->getBody();
package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://direct.i-dgtl.ru/api/v1/dispatch/{dispatchId}/messages"
method := "POST"
payload := strings.NewReader(`[
{
"destination": "79818269375",
"substitutions": {
"A": "Сергей Алексеевич",
"B": "100 тыс. руб.",
"C": "Санкт-Петербург, Большой проспект П.С., 12"
}
},
{
"destination": "79818228228",
"substitutions": {
"A": "Алексей Сергеевич",
"B": "1000 рублей"
}
}
]`)
client := &http.Client {
}
req, err := http.NewRequest(method, url, payload)
if err != nil {
fmt.Println(err)
return
}
req.Header.Add("Content-Type", "application/json")
res, err := client.Do(req)
if err != nil {
fmt.Println(err)
return
}
defer res.Body.Close()
body, err := io.ReadAll(res.Body)
if err != nil {
fmt.Println(err)
return
}
fmt.Println(string(body))
}
Совет
Для запуска рассылки необходимо выполнить третий шаг, описанный здесь.