Наполнение рассылки сообщениями#

Наполнение рассылки#

POST https://direct.i-dgtl.ru/api/v1/dispatch/{dispatchId}/messages

Path Parameters#

Name

Type

Description

dispatchId*

integer

Идентификатор рассылки

Headers#

Name

Type

Description

Authorization*

string

Basic {TOKEN_1}

Content-Type*

string

application/json

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))
}

Совет

Для запуска рассылки необходимо выполнить третий шаг, описанный здесь.