Отправка VIBER#

Отправка VIBER-сообщений#

POST https://direct.i-dgtl.ru/api/v1/message

Метод позволяет отправлять массив одиночных сообщений (от 1 до 1000)

Headers#

Name

Type

Description

Authorization*

string

Basic {TOKEN_1}

Content-Type*

string

application/json

Request Body#

Name

Type

Description

channelType*

string

Канал отправки (VIBER)

senderName*

string

Имя отправителя. Допускаются VIBER-имена в статусе «Одобрено»

destination*

string

Номер абонента

content*

object

Контент сообщения. Ниже описаны возможные варианты содержимого.

tags

array

Теги сообщения (массив строк). Каждый тег должен соответствовать выражению ^\w+$ (допускаются буквы в любом регистре, цифры и нижнее подчеркивание «_»)

useLocalTime

boolean

Флаг, отвечающий за таймзону, в которой будет отправлено сообщение:
true – отправка в таймзоне абонента
false – отправка по МСК
По умолчанию true

localSendTime

string

Нижняя граница допустимого времени отправки сообщения (с учетом значенияuseLocalTime)
Дата в формате YYYY-MM-DD hh:mm:ss в диапазоне от (текущее время в UTC - 12 часов) до (текущее время в UTC + 7 дней)
По умолчанию сообщение будет отправлено сразу

localCompletionTime

string

Верхняя граница допустимого времени отправки сообщения (с учетом useLocalTime) в диапазоне от localSendTime до (текущее время в UTC + 70 дней)

ttl

integer

Время жизни сообщения в секундах. По истечении ttl сообщению устанавливается финальный статус.
60 ≤ ttl ≤ 86400

hours

array

Допустимые часы отправки (массив чисел). В массиве могут быть переданы целые числа от 0 до 23, каждое из которых соответствует разрешенному для отправки интервалу с учетом useLocalTime; значения должны быть уникальны.

days

array

Допустимые дни отправки (массив чисел). В массиве могут быть переданы целые числа от 1 (пн) до 7 (вс), каждое из которых соответствует разрешенному для отправки дню недели; значения должны быть уникальны.

shortUrl

boolean

Флаг, отвечающий за сокращение ссылок в сообщении:
true - ссылки в тексте сообщения будут сокращены
По умолчанию false

callbackUrl

string

Адрес для отправки callback

callbackEvents

array

События, по которым будут отправлены callback (массив строк). При наличии callbackUrl и отсутствии callbackEvents в запросе, будет отправлен callback по событию delivered.

externalMessageId

string

Внутренний id сообщения в вашей системе. До 100 символов.

В случае успешного запроса возвращается ответ, в котором перечислены идентификаторы сообщений и коды результата. При значении errors = false гарантируется, что все переданные сообщения успешно созданы.

{
  "errors": false,
  "items": [
    {
      "messageUuid": "063474ec-a34f-4558-90c5-984395000004",
      "code": 201
    },
    {
      "messageUuid": "063564ec-a34f-4558-90c5-984395000005",
      "code": 201
    }
  ]
}

Использование невалидного токена / отсутствие заголовка авторизации.

{
    "error": {
        "code": 4012,
        "msg": "Bad credentials"
    }
}
{
    "error": {
        "code": 4010,
        "msg": "Not Authenticated"
    }
}

Использование неподходящего токена.

{
    "error": {
        "code": 4030,
        "msg": "Access Denied"
    }
}

Невалидные параметры в теле запроса; ниже приведены несколько примеров ответа.

{
    "error": {
        "code": 4220,
        "msg": "Invalid msisdn"
    }
}
-----------------------------------------------------------------------------
{
    "error": {
        "code": 4220,
        "msg": "Invalid text length in viber content (0)"
    }
}
-----------------------------------------------------------------------------
{
    "error": {
        "code": 4220,
        "msg": "Invalid caption length in viber content (3)"
    }
}
-----------------------------------------------------------------------------
{
    "error": {
        "code": 4220,
        "msg": "Invalid caption length in viber content (3)"
    }
}

Payment Required. Недостаточно средств на балансе.

{
    "error": {
        "code": 402,
        "msg": "Insufficient funds"
    }
}

Совет

Рекомендуемое время ожидания ответа: 70 секунд.
Как правило, ответ на запрос возвращается не более чем за несколько секунд, но таймаут величиной в 70 секунд позволяет гарантированно получить ответ на запрос, в том числе в ситуациях повышенной нагрузки.

Совет

Для использования личного домена в сокращенных ссылках необходимо обратиться в поддержку

Возможные варианты перечислений:

Параметр

Варианты

callbackEvents

События для отправки callback

Текстовое сообщение #

Для отправки текстового VIBER-сообщения используется следующий объект content:

{
  "contentType": "text",
  "text": "текст viber-сообщения"
}

Параметр

Тип

Описание

contentType

string

required

Тип контента (text)

text

string

required

Текст сообщения; строка в кодировке UTF-8 без Byte Order Mark

От 1 до 1000 символов

Сообщение с графическим вложением #

Для отправки VIBER-сообщения с картинкой используется следующий объект content:

{
  "contentType": "image",
  "imageUrl": "<ссылка на изображение>"
}

Параметр

Тип

Описание

contentType

string

required

Тип контента (image)

imageUrl

string

required

Ссылка на изображение

Сообщение с интерактивными элементами #

Для отправки VIBER-сообщения с интерактивными элементами (кнопкой и опционально изображением) используется следующий объект content:

{
  "contentType": "button",
  "text": "текст viber-сообщения",
  "caption": "текст кнопки",
  "action": "<ссылка на кнопке>",
  "imageUrl": "<ссылка на изображение>"
}

Параметр

Тип

Описание

contentType

string

required

Тип контента (button)

text

string

required

Текст сообщения; строка в кодировке UTF-8 без Byte Order Mark

От 1 до 1000 символов

caption

string

required

Текст для кнопки

От 1 до 30 символов

action

string

required

Ссылка для кнопки

imageUrl

string

optional

Ссылка на изображение

Пример запроса с минимальным набором параметров #

В примере ниже указан минимально необходимый набор параметров для отправки VIBER-сообщения.

POST https://direct.i-dgtl.ru/api/v1/message
Authorization: Basic QWxhZGRpbjpvc...
Content-Type: application/json
[
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "content": {
      "contentType": "text",
      "text": "Текст VIBER-сообщения"
    }
  }
]
curl -X POST 'https://direct.i-dgtl.ru/api/v1/message' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic QWxhZGRpbjpvc...' \
-d '[{"senderName":"SENDER","channelType":"VIBER","content":{"contentType":"text","text":"текст сообщения"},"destination":"7818242882"}]
import requests
import json

url = "https://direct.i-dgtl.ru/api/v1/message"

payload = json.dumps([
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "content": {
      "contentType": "text",
      "text": "Текст VIBER-сообщения"
    }
  }
])
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([
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "content": {
      "contentType": "text",
      "text": "Текст VIBER-сообщения"
    }
  }
]);

const requestOptions = {
  method: "POST",
  headers: myHeaders,
  body: raw,
  redirect: "follow"
};

fetch("https://direct.i-dgtl.ru/api/v1/message", 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    \"senderName\": \"SENDER\",\n    \"channelType\": \"VIBER\",\n    \"destination\": \"7818242882\",\n    \"content\": {\n      \"contentType\": \"text\",\n      \"text\": \"Текст VIBER-сообщения\"\n    }\n  }\n]");
Request request = new Request.Builder()
  .url("https://direct.i-dgtl.ru/api/v1/message")
  .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 = '[
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "content": {
      "contentType": "text",
      "text": "Текст VIBER-сообщения"
    }
  }
]';
$request = new Request('POST', 'https://direct.i-dgtl.ru/api/v1/message', $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/message"
  method := "POST"

  payload := strings.NewReader(`[
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "content": {
      "contentType": "text",
      "text": "Текст VIBER-сообщения"
    }
  }
]`)

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

Пример запроса со всеми параметрами #

В примере присутствуют объекты VIBER-сообщений со всеми возможными типами содержимого. В данном примере буду отправлены 3 вида VIBER-сообщений.

POST https://direct.i-dgtl.ru/api/v1/message
Authorization: Basic QWxhZGRpbjpvc...
Content-Type: application/json
[
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "content": {
      "contentType": "text",
      "text": "текст сообщения https://domain.com"
    },
    "destination": "7818242882",
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "shortUrl": true,
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read",
      "click"
    ],
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "content": {
      "contentType": "button",
      "text": "текст сообщения",
      "caption": "текст кнопки",
      "action": "<ссылка на кнопке>",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "destination": "7818242882",
    "content": {
      "contentType": "image",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "externalMessageId": "10898",
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  }
]
curl -X POST 'https://direct.i-dgtl.ru/api/v1/message' \
-H 'Content-Type: application/json' \
-H 'Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==' \
-d '[{"senderName":"SENDER","channelType":"VIBER","content":{"contentType":"text","text":"текст сообщения"},"destination":"7818242882","localSendTime":"2020-06-15 18:00:00","localCompletionTime":"2020-06-16 21:00:00","callbackUrl":"https://company.com/callback","callbackEvents":["delivered","read"],"useLocalTime":true,"ttl":43200,"hours":[12,13,14],"days":[1,2],"tags":["tag1","tag2"]},{"senderName":"SENDER","channelType":"VIBER","destination":"7818242882","callbackUrl":"https://company.com/callback","callbackEvents":["delivered","read"],"content":{"contentType":"button","text":"текст сообщения","caption":"текст кнопки","action":"<ссылка на кнопке>","imageUrl":"<ссылка на изображение>"},"localSendTime":"2020-06-15 18:00:00","localCompletionTime":"2020-06-16 21:00:00","useLocalTime":true,"ttl":43200,"hours":[12,13,14],"days":[1,2],"tags":["tag1","tag2"]},{"senderName":"SENDER","channelType":"VIBER","callbackUrl":"https://company.com/callback","callbackEvents":["delivered","read"],"destination":"7818242882","content":{"contentType":"image","imageUrl":"<ссылка на изображение>"},"localSendTime":"2020-06-15 18:00:00","localCompletionTime":"2020-06-16 21:00:00","useLocalTime":true,"ttl":43200,"hours":[12,13,14],"days":[1,2],"tags":["tag1","tag2"]}]'
import requests
import json

url = "https://direct.i-dgtl.ru/api/v1/message"

payload = json.dumps([
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "content": {
      "contentType": "text",
      "text": "текст сообщения https://domain.com"
    },
    "destination": "7818242882",
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "shortUrl": True,
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read",
      "click"
    ],
    "useLocalTime": True,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "content": {
      "contentType": "button",
      "text": "текст сообщения",
      "caption": "текст кнопки",
      "action": "<ссылка на кнопке>",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": True,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "destination": "7818242882",
    "content": {
      "contentType": "image",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": True,
    "ttl": 43200,
    "externalMessageId": "10898",
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  }
])
headers = {
  'Content-Type': 'application/json',
  'Authorization': 'Bearer MTY3MDQ6c1FOa3BmOTYxdkdJeW9QRHJ6U0Rhaw=='
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

const myHeaders = new Headers();
myHeaders.append("Content-Type", "application/json");
myHeaders.append("Authorization", "Bearer MTY3MDQ6c1FOa3BmOTYxdkdJeW9QRHJ6U0Rhaw==");

const raw = JSON.stringify([
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "content": {
      "contentType": "text",
      "text": "текст сообщения https://domain.com"
    },
    "destination": "7818242882",
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "shortUrl": true,
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read",
      "click"
    ],
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "content": {
      "contentType": "button",
      "text": "текст сообщения",
      "caption": "текст кнопки",
      "action": "<ссылка на кнопке>",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "destination": "7818242882",
    "content": {
      "contentType": "image",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "externalMessageId": "10898",
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  }
]);

const requestOptions = {
  method: "POST",
  headers: myHeaders,
  body: raw,
  redirect: "follow"
};

fetch("https://direct.i-dgtl.ru/api/v1/message", 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    \"senderName\": \"SENDER\",\n    \"channelType\": \"VIBER\",\n    \"content\": {\n      \"contentType\": \"text\",\n      \"text\": \"текст сообщения https://domain.com\"\n    },\n    \"destination\": \"7818242882\",\n    \"localSendTime\": \"2020-06-15 18:00:00\",\n    \"localCompletionTime\": \"2020-06-16 21:00:00\",\n    \"shortUrl\": true,\n    \"callbackUrl\": \"https://company.com/callback\",\n    \"callbackEvents\": [\n      \"delivered\",\n      \"read\",\n      \"click\"\n    ],\n    \"useLocalTime\": true,\n    \"ttl\": 43200,\n    \"hours\": [\n      12,\n      13,\n      14\n    ],\n    \"days\": [\n      1,\n      2\n    ],\n    \"tags\": [\n      \"tag1\",\n      \"tag2\"\n    ]\n  },\n  {\n    \"senderName\": \"SENDER\",\n    \"channelType\": \"VIBER\",\n    \"destination\": \"7818242882\",\n    \"callbackUrl\": \"https://company.com/callback\",\n    \"callbackEvents\": [\n      \"delivered\",\n      \"read\"\n    ],\n    \"content\": {\n      \"contentType\": \"button\",\n      \"text\": \"текст сообщения\",\n      \"caption\": \"текст кнопки\",\n      \"action\": \"<ссылка на кнопке>\",\n      \"imageUrl\": \"<ссылка на изображение>\"\n    },\n    \"localSendTime\": \"2020-06-15 18:00:00\",\n    \"localCompletionTime\": \"2020-06-16 21:00:00\",\n    \"useLocalTime\": true,\n    \"ttl\": 43200,\n    \"hours\": [\n      12,\n      13,\n      14\n    ],\n    \"days\": [\n      1,\n      2\n    ],\n    \"tags\": [\n      \"tag1\",\n      \"tag2\"\n    ]\n  },\n  {\n    \"senderName\": \"SENDER\",\n    \"channelType\": \"VIBER\",\n    \"callbackUrl\": \"https://company.com/callback\",\n    \"callbackEvents\": [\n      \"delivered\",\n      \"read\"\n    ],\n    \"destination\": \"7818242882\",\n    \"content\": {\n      \"contentType\": \"image\",\n      \"imageUrl\": \"<ссылка на изображение>\"\n    },\n    \"localSendTime\": \"2020-06-15 18:00:00\",\n    \"localCompletionTime\": \"2020-06-16 21:00:00\",\n    \"useLocalTime\": true,\n    \"ttl\": 43200,\n    \"externalMessageId\": \"10898\",\n    \"hours\": [\n      12,\n      13,\n      14\n    ],\n    \"days\": [\n      1,\n      2\n    ],\n    \"tags\": [\n      \"tag1\",\n      \"tag2\"\n    ]\n  }\n]");
Request request = new Request.Builder()
  .url("https://direct.i-dgtl.ru/api/v1/message")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .addHeader("Authorization", "Bearer MTY3MDQ6c1FOa3BmOTYxdkdJeW9QRHJ6U0Rhaw==")
  .build();
Response response = client.newCall(request).execute();
<?php
$client = new Client();
$headers = [
  'Content-Type' => 'application/json',
  'Authorization' => 'Bearer MTY3MDQ6c1FOa3BmOTYxdkdJeW9QRHJ6U0Rhaw=='
];
$body = '[
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "content": {
      "contentType": "text",
      "text": "текст сообщения https://domain.com"
    },
    "destination": "7818242882",
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "shortUrl": true,
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read",
      "click"
    ],
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "content": {
      "contentType": "button",
      "text": "текст сообщения",
      "caption": "текст кнопки",
      "action": "<ссылка на кнопке>",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "destination": "7818242882",
    "content": {
      "contentType": "image",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "externalMessageId": "10898",
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  }
]';
$request = new Request('POST', 'https://direct.i-dgtl.ru/api/v1/message', $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/message"
  method := "POST"

  payload := strings.NewReader(`[
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "content": {
      "contentType": "text",
      "text": "текст сообщения https://domain.com"
    },
    "destination": "7818242882",
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "shortUrl": true,
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read",
      "click"
    ],
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "destination": "7818242882",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "content": {
      "contentType": "button",
      "text": "текст сообщения",
      "caption": "текст кнопки",
      "action": "<ссылка на кнопке>",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  },
  {
    "senderName": "SENDER",
    "channelType": "VIBER",
    "callbackUrl": "https://company.com/callback",
    "callbackEvents": [
      "delivered",
      "read"
    ],
    "destination": "7818242882",
    "content": {
      "contentType": "image",
      "imageUrl": "<ссылка на изображение>"
    },
    "localSendTime": "2020-06-15 18:00:00",
    "localCompletionTime": "2020-06-16 21:00:00",
    "useLocalTime": true,
    "ttl": 43200,
    "externalMessageId": "10898",
    "hours": [
      12,
      13,
      14
    ],
    "days": [
      1,
      2
    ],
    "tags": [
      "tag1",
      "tag2"
    ]
  }
]`)

  client := &http.Client {
  }
  req, err := http.NewRequest(method, url, payload)

  if err != nil {
    fmt.Println(err)
    return
  }
  req.Header.Add("Content-Type", "application/json")
  req.Header.Add("Authorization", "Bearer MTY3MDQ6c1FOa3BmOTYxdkdJeW9QRHJ6U0Rhaw==")

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