Каналы

Подключение каналов сообщений и управление ими

Каналы

Чтобы получать и отправлять сообщения, нужно подключить каналы. Каналы — это источник входящих сообщений в системе. Провайдеры каналов:

  • MAX
  • WhatsApp
  • Instagram_business
  • Telegram
  • Telegram Personal
  • Viber
  • VK
  • Facebook

Нужные каналы также можно подключить через веб-интерфейс на странице настроек.

Получить все каналы

shell
curl "https://api.pact.im/p1/companies/COMPANY_ID/channels"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"

Приведённая выше команда возвращает JSON следующей структуры:

json
{
   "status":"ok",
   "data":{
      "channels":[
         {
            "external_id":399,
            "provider":"whatsapp"
         }
      ],
      "next_page": "fslkfg2lkdfmlwkmlmw4of94wg34lfkm34lg"
   }
}

Этот эндпоинт возвращает все каналы компании.

HTTP Request

GET https://api.pact.im/p1/companies/<COMPANY_ID>/channels

Параметры запроса

ПараметрОбязательныйВалидацияОписание
fromнетСтрока не длиннее 255 символовТокен следующей страницы, полученный в предыдущем запросе. Если токен неверный или пустой, возвращается первая страница
perнетЧисло от 1 до 100Количество элементов на странице. По умолчанию: 50
sort_directionнетСтрокаРезультаты сортируются по id. Позволяет изменить направление сортировки. Допустимые значения: asc, desc. По умолчанию: asc.

Параметры URL

ПараметрОписание
COMPANY_IDID компании

Создать новый канал

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=telegram&token=12345677890"

Создание канала:

php
<?php

/**
 * Unified method that can create channel in company.
 * @link https://pact-im.github.io/api-doc/#create-new-channel
 * @note You can connect only one channel per one company for each provider.
 *       Contact with support if you want to use more than one channel
 *
 * @param int $companyId Id of the company
 * @param string $provider
 * @param array $parameters
 */

// # Create channel unified method
// Note: The array of parameters variables depending on the provider
//       You need add required parameters for your particular provider

$parameters = [
  'sync_messages_from' => $syncMessagesFrom
  // ...
];

$client->channels->createChannelUnified($companyId,
                                        $provider,
                                        $parameters);

Создание канала whatsapp:

php
<?php

/**
 * This method create a new channel for WhatsApp
 * @link https://pact-im.github.io/api-doc/#create-new-channel
 *
 * @param int $companyId Id of the company
 * @param DateTimeInterface $syncMessagesFrom Only messages created after will be synchronized
 * @param bool $doNotMarkAsRead Do not mark chats as read after synchronization
 * @return Json|null
 */

$client->channels->createChannelWhatsApp(
  $companyId,
  $syncMessagesFrom,
  $doNotMarkAsRead,
  $phone
);

Создание канала instagram business:

php
<?php

/**
 * This method create a new channel for InstagramBusiness
 * @link https://pact-im.github.io/api-doc/#create-new-channel
 *
 * @param int $companyId Id of the company
 * @param string $private_api_token on our side
 * @param string $provider there must be "instagram_business"
 * @param hash $data data from Instagram
 * @param string $token from Instagram data hash
 * @param string $phone user phone
 * @return Json|null
 */

$client->channels->createChannelInstagramBusiness(
  $companyId,
  $private_api_token,
  $provider,
  $data,
  $token
  $phone
);

Создание канала facebook/vkontakte/vkontakte_direct/telegram/viber

php
<?php

/**
 * This method create a new channel in the company using token.
 * @link https://pact-im.github.io/api-doc/#create-new-channel
 * @note List of supported channels that can be created by token
 *       you can see in link above
 *
 * @param int $companyId Id of the company
 * @param string $provider (facebook, viber, vk, ...)
 * @param string $token
 * @return Json|null
 */

$client->channels->createChannelByToken(
  $companyId,
  $provider,
  $token
);

Приведённая выше команда возвращает JSON следующей структуры:

json
{
   "status": "created",
   "data": {
      "external_id": 1
   }
}

Этот эндпоинт создаёт новый канал в компании.

HTTP Request

POST https://api.pact.im/p1/companies/<COMPANY_ID>/channels

Параметры URL

ПараметрОписание
COMPANY_IDID компании

Параметры запроса

Создание канала max (по QR-коду)
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть max
sync_messages_fromнетtimestampБудут синхронизированы только сообщения, созданные после sync_messages_from. Не старше одного месяца. Если параметр не указан, сообщения синхронизироваться не будут.
Создание канала whatsapp (по QR-коду)
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть whatsapp
sync_messages_fromнетtimestampБудут синхронизированы только сообщения, созданные после sync_messages_from. Не старше одного месяца. Если параметр не указан, сообщения синхронизироваться не будут.
Создание канала whatsapp (по цифровому коду)
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть whatsapp
sync_messages_fromнетtimestampБудут синхронизированы только сообщения, созданные после sync_messages_from. Не старше одного месяца. Если параметр не указан, сообщения синхронизироваться не будут.
phoneдаstringНомер телефона. Пример: ‘7999999999’
Создание канала whatsapp business (dialog360 по токену)
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть whatsapp_business
hosting_typeдаДолжно быть cloud или onpremiseТип хостинг-платформы
tokenдаСтрокаТокен для канала.
subtypeнетДолжно быть regular, unlim или no_write_firstНазвание тарифа
Создание канала whatsapp business (dialog360 по channel_id)
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть whatsapp_business
hosting_typeдаДолжно быть cloud или onpremiseТип хостинг-платформы
dialog360_channel_idдаСтрокаchannel_id для авторизации
dialog360_client_idнетСтрокаclient_id для авторизации
account_nameнетСтрокаНазвание аккаунта для профиля waba
subtypeнетДолжно быть regular, unlim или no_write_firstНазвание тарифа
Создание канала avito
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть avito
loginдаСтрокаclient_id из avito
passwordдаСтрокаclient secret из avito
Создание канала instagram business

Шаги:

  1. Необходимо следовать инструкции для Facebook, пока вы не получите токен.

  2. Выполните запрос к https://graph.facebook.com/v4.0/me?fields=first_name,last_name,picture,name,email, указав токен.
    В ответе вы получите информацию о вашем пользователе.

  3. Отправьте запрос к нам на p1/companies/<company_id>/channels.
    Тело запроса должно содержать:

    • provider: "instagram_business"
    • token: "token"
    • phone: "+79131112233"
    • data: "тело ответа из предыдущего запроса"

    На этом этапе канал создан, а информация о бизнес-аккаунтах Instagram загружена.

  4. Отправьте запрос на p1/companies/<company_id>/channels/<external_id>/enable_page_instagram?page_id=<page[:id]>&sync_period=<sync_period>.

    external_id — параметр из предыдущего запроса
    page[:id] — параметр из предыдущего запроса
    sync_period — определяет, за какой период будут синхронизированы сообщения: day, week, month, all.

    Это необходимо, чтобы определить, какой аккаунт Instagram использовать.

ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть instagram_business
private_api_tokenдаСтрокаПриватный токен пользователя
dataдаХешДанные из Instagram, переданные в redirect_url
phoneдаСтрокаТелефон пользователя
tokenдаСтрокаТокен Instagram
Создание канала facebook/vkontakte/vkontakte_direct/telegram/viber
ПараметрОбязательныйВалидацияОписание
providerдаОдно из значений: facebook, vkontakte, vkontakte_direct, telegram, viberУказывает, какого провайдера вы хотите подключить
tokenдаСтрокаТокен для канала.
Создание канала telegram personal (по QR-коду)
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть telegram_personal
via_qr_codeдаbooleanДолжно быть 'true'
sync_messages_fromнетtimestampБудут синхронизированы только сообщения, созданные после sync_messages_from. Не старше одного месяца. Если параметр не указан, сообщения синхронизироваться не будут.
Создание канала telegram personal (по цифровому коду)
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть telegram_personal
phoneдаСтрокаНомер телефона. Пример: '7999999999'
sync_messages_fromнетtimestampБудут синхронизированы только сообщения, созданные после sync_messages_from. Не старше одного месяца. Если параметр не указан, сообщения синхронизироваться не будут.

Запросить код Подтвердить код

Как получить токен для группы VK:
  1. Откройте раздел «Управление» в нужном сообществе
  2. Откройте «Работа с API» (https://vk.com/public<GROUP_ID>?act=tokens)
  3. Создайте и скопируйте новый токен

Обновить канал

shell
curl -X PUT "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "token=9876543210"

Обновление канала:

php
<?php

/**
 * This method updates existing channel in the company
 * @link https://pact-im.github.io/api-doc/#update-channel
 *
 * @param int $companyId
 * @param int $conversationId
 * @param array $parameters
 * @return Json|null
 */

// # Update channel unified method
// Note: The array of parameters variables depending on the provider
//       You need add required parameters for your particular provider

$parameters = [
  'login' => $login,
  'password' => $password,
  // ...
];

$client->channels->updateChannel(
  $companyId,
  $conversationId,
  $parameters
);

Обновление канала instagram:

php
<?php

/**
 * This method updates instagramm channel
 * @link https://pact-im.github.io/api-doc/#update-channel
 *
 * @param int $companyId
 * @param int $conversationId
 * @param string $login Instagram login
 * @param string $password Instagram password
 * @return Json|null
 */

$client->channels->updateChannelInstagram(
  $companyId,
  $conversationId,
  $login,
  $password
);

Обновление канала facebook/vkontakte/vkontakte_direct/telegram/viber:

php
<?php

/**
 * This method updates channels that using tokens to auth
 * @link https://pact-im.github.io/api-doc/#update-channel
 * @note List of supported channels that can be created by token
 *       you can see in link above
 *
 * @param int $companyId
 * @param int $conversationId
 * @param string $token
 * @return Json|null
 */

$client->channels->updateChannelToken(
  $companyId,
  $conversationId,
  $token
);

Приведённая выше команда возвращает JSON следующей структуры:

json
{
   "status":"updated",
   "data":{
      "external_id":2
   }
}

Этот эндпоинт обновляет существующий канал в компании.

HTTP Request

PUT https://api.pact.im/p1/companies/<COMPANY_ID>/channels/<ID>

Параметры URL

ПараметрОписание
COMPANY_IDID компании
IDID канала

Параметры запроса

Для каналов facebook/vkontakte/vkontakte_direct/telegram/viber/instagram_business
ПараметрОбязательныйВалидацияОписание
tokenдаСтрока...

Удалить канал

shell
curl -X DELETE "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"

Удаление канала:

php
<?php
/**
 * Method deletes (disables) the channel
 * @link https://pact-im.github.io/api-doc/#delete-channel
 *
 * @param int $companyId Id of the company
 * @param int $channelId Id of the conversation
 */

$client->chanells->deleteChannel($companyId, $channelId);

Приведённая выше команда возвращает JSON следующей структуры:

json
{
   "status":"deleted"
}

HTTP Request

DELETE https://api.pact.im/p1/companies/<COMPANY_ID>/channels/<ID>

Параметры URL

ПараметрОписание
COMPANY_IDID компании
IDID отключаемого канала

Как написать первое сообщение в Whatsapp Business

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/conversations"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "phone=79250000001&template[id]=template_id&template[language_code]=ru&template[parameters][]=имя"

Этот эндпоинт позволяет создать диалог с клиентом в канале whatsapp. При выполнении запроса мы добавим задачу на доставку. Когда операция завершится успешно или с ошибкой, мы отправим вебхук.

Статус доставки также можно опрашивать здесь: Jobs

HTTP Request

POST https://api.pact.im/p1/companies/<COMPANY_ID>/channels/<ID>/conversations

Параметры URL

ПараметрОписание
COMPANY_IDID компании
IDID канала

Параметры запроса

ПараметрОбязательныйВалидацияОписание
phoneдаДолжен быть в формате 79250000001Номер телефона контакта
messageнетСтрокаТекст сообщения. Только для обычного канала Whatsapp
templateнетОбъектДанные шаблона. Только для канала Whatsapp Business

Параметры шаблона Whatsapp Business

ПараметрОбязательныйВалидацияОписание
idдаСтрокаID зарегистрированного шаблона
language_codeдаСтрокаКод языка зарегистрированного шаблона ('en', 'ru' и т. д.)
parametersдаМассивПараметры подстановки в шаблон

Запросить код (whatsapp)

Запрос кода:

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/request_code"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=whatsapp"

Приведённая выше команда возвращает JSON следующей структуры:

json
{
   "sessionId": "1426",
   "code": "ZHHJ-KQSP",
   "ttl": "160s"
}

В мобильном приложении WhatsApp вы получите уведомление с просьбой ввести код канала. Введите там значение из поля "code"

HTTP Request

POST https://api.pact.im/p1/companies/<COMPANY_ID>/channels/<ID>/request_code

Параметры URL

ПараметрОписание
COMPANY_IDID компании
IDID канала
providerwhatsapp

Параметры запроса

Запрос кода проверки

Параметр | Обязательный | Валидация | Описание --------- | -------- | ----------- | provider | да | Должно быть whatsapp |

Запросить код (telegram personal)

Запрос кода:

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/request_code"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=telegram_personal"

Приведённая выше команда возвращает JSON следующей структуры:

json
{
  "code_length": 6,
  "code_type": "app",
  "expires_in": 60,
  "next_type": "app",
  "session_id": 1337,
  "status": "ok"
}

Этот эндпоинт запрашивает код для telegram personal

HTTP Request

POST https://api.pact.im/p1/companies/<COMPANY_ID>/channels/<ID>/request_code

Параметры URL

ПараметрОписание
COMPANY_IDID компании
IDID канала

Параметры запроса

Запрос кода проверки

Параметр | Обязательный | Валидация | Описание --------- | -------- | ----------- | provider | да | Должно быть telegram_personal |

Подтвердить код (telegram personal)

Тип подтверждения — code

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/confirm"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=telegram_personal&confirmation_type=code&code=2567"

Успешный ответ:

json
{
  "result": "ok",
  "state": "enabled"
}

Тип подтверждения — password

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/confirm"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=telegram_personal&confirmation_type=password&password=123456"

Приведённая выше команда возвращает JSON следующей структуры:

json
{
  "result": "ok",
  "state": "enabled"
}

Этот эндпоинт подтверждает канал telegram personal двумя способами: кодом или паролем

HTTP Request

POST https://api.pact.im/p1/companies/<COMPANY_ID>/channels/<ID>/confirm

Параметры URL

ПараметрОписание
COMPANY_IDID компании
IDID канала

Параметры запроса

Тип подтверждения — code

Параметр | Обязательный | Валидация | Описание --------- | -------- | ----------- | provider | да | Должно быть telegram_personal | confirmation_type | да | Должно быть code | code | да | Число | Пример: 1234

Тип подтверждения — password

Параметр | Обязательный | Валидация | Описание --------- | -------- | ----------- | provider | да | Должно быть telegram_personal | confirmation_type | да | Должно быть password | password | да | Строка | Пример: qwerty123

Запросить код (только instagram)

Запрос кода проверки:

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/request_code"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=instagram&challenge_variant=0"

Приведённая выше команда возвращает JSON следующей структуры:

json
{
  "result": "ok"
}

Запрос кода двухфакторной аутентификации:

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/request_code"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=instagram&challenge_type=two_factor"

Приведённая выше команда возвращает JSON следующей структуры:

json
{
  "result": "ok"
}

Этот эндпоинт запрашивает код проверки или код двухфакторной аутентификации.

HTTP Request

POST https://api.pact.im/p1/companies/<COMPANY_ID>/channels/<ID>/request_code

Параметры URL

ПараметрОписание
COMPANY_IDID компании
IDID канала

Параметры запроса

Запрос кода проверки

Параметр | Обязательный | Валидация | Описание --------- | -------- | ----------- | provider | да | Должно быть instagram | challenge_variant | да | |

Запрос кода двухфакторной аутентификации по SMS
ПараметрОбязательныйВалидацияОписание
providerдаДолжно быть instagram
challenge_typeдаДолжно быть two_factor

Подтвердить код (только instagram)

Подтверждение кода проверки:

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/confirm"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=instagram&confirmation_code=123456"

Приведённая выше команда возвращает JSON следующей структуры.

Успешный ответ:

json
{
  "result": "ok"
}

Требуется двухфакторная аутентификация:

json
{
  "result": "ok",
  "data": {
    "two_factor_requires": true,
    "details": [
      { "value": 1, "key": "sms" },
      { "value": 2, "key": "recovery_code" },
      { "value": 3, "key": "totp" }
    ]
  }
}

Требуется проверка (challenge):

json
{
  "result": "ok",
  "data": {
    "confirmation_requires": true,
    "details": [
      { "value" => 1, "label" => "e*******e@example.org" },
      { "value" => 0, "label" => "+0 *** ***-**-00" }
    ]
  }
}

Подтверждение кода двухфакторной аутентификации:

shell
curl -X POST "https://api.pact.im/p1/companies/COMPANY_ID/channels/ID/confirm"
  -H "X-Private-Api-Token: YOUR_API_TOKEN"
  -d "provider=instagram&confirmation_type=two_factor&confirmation_variant=3&confirmation_code=123456"

Приведённая выше команда возвращает JSON следующей структуры:

json
{
  "result": "ok"
}

Этот эндпоинт отправляет код проверки или код двухфакторной аутентификации.

HTTP Request

POST https://api.pact.im/p1/companies/<COMPANY_ID>/channels/<ID>/confirm

Параметры URL

ПараметрОписание
COMPANY_IDID компании
IDID канала

Параметры запроса

код проверки

Параметр | Обязательный | Валидация | Описание --------- | -------- | ----------- | provider | да | Должно быть instagram | confirmation_code | да | Строка |

код двухфакторной аутентификации

Параметр | Обязательный | Валидация | Описание --------- | -------- | ----------- | provider | да | Должно быть instagram | confirmation_type| да | Должно быть two_factor | confirmation_variant | да | Целое число | Вариант из ответа на запрос кода (data->details->value). Обычно 1, 2 или 3. confirmation_code | да | Строка |

Поиск…

Начните вводить запрос