bigperson / kontur-talk-sdk
PHP SDK для работы с API Kontur.Talk
v1.0.1
2025-03-14 12:23 UTC
Requires
- php: >=8.2
- ext-json: *
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- mockery/mockery: ^1.6
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^11.0
- squizlabs/php_codesniffer: ^3.7
README
Неофициальный PHP SDK для удобной интеграции с API сервиса Контур.Толк.
Важно: Данный SDK не является официальным продуктом компании СКБ Контур и разрабатывается независимо.
Установка
composer require bigperson/kontur-talk-sdk
Использование
Инициализация клиента
use Kontur\Talk\TalkClient; // Создание клиента API $client = new TalkClient('company', 'your-api-key');
Работа с пользователями
// Получение списка пользователей $users = $client->users->get(100, 0, null, [], null, false, true); // Получение пользователя по ключу $user = $client->users->getByKey('user-key'); // Создание или обновление пользователей $result = $client->users->createOrUpdate([ [ 'email' => 'user@example.com', 'firstname' => 'Иван', 'surname' => 'Иванов', 'post' => 'Менеджер' ] ]); // Блокировка пользователя $client->users->setPermissions('user-key', true); // Разблокировка пользователя $client->users->setPermissions('user-key', false);
Работа с ролями
// Получение списка ролей $roles = $client->roles->getAll(); // Получение информации о роли $role = $client->roles->get('admin', true); // Создание роли $newRole = $client->roles->create('Тестировщик', 'Роль для тестировщиков', [ [ 'productId' => 'talk', 'permissionId' => 'remoteControl' ] ]); // Управление ролями пользователя $client->roles->manageUserRoles('user-key', ['admin'], ['kioskAdmin']);
Работа с комнатами
// Получение информации о комнате $room = $client->rooms->get('room-key'); // Создание или обновление комнаты $room = $client->rooms->createOrUpdate( 'room-key', 'Тестовая комната', 'Описание комнаты', ['moderator-key-1', 'moderator-key-2'], new DateTime('2023-12-31T23:59:59Z'), true, false, 'none', 'none', 'none', 0 ); // Добавление модератора $client->rooms->addModerator('room-key', 'user-key'); // Установка PIN-кода $client->rooms->setPinCode('room-key', '123456'); // Удаление PIN-кода $client->rooms->setPinCode('room-key', ''); // Принудительное завершение конференции $client->rooms->endConference('room-key');
Исходящие звонки
// Выполнение исходящего звонка $result = $client->rooms->notifyCall( 'room-key', 'Тестовая комната', 'caller-user-key', [ [ 'userKey' => 'callee-user-key', 'userCallMethod' => 'talk' ], [ 'phoneNumber' => '+7 (999) 123-45-67' ], [ 'email' => 'user@example.com' ] ] ); // Отмена звонка $client->rooms->cancelCall('room-key');
Документация
Подробная документация по API доступна в официальной документации Контур.Толк.
Обработка ошибок
SDK использует исключения для обработки ошибок:
use Kontur\Talk\Exception\TalkApiException; use Kontur\Talk\Exception\TalkClientException; use Kontur\Talk\Exception\TalkRateLimitException; use Kontur\Talk\Exception\TalkNotFoundException; try { $users = $client->users->get(); } catch (TalkNotFoundException $e) { // Ресурс не найден echo "Ресурс не найден: " . $e->getMessage(); } catch (TalkRateLimitException $e) { // Превышены ограничения по количеству запросов echo "Превышен лимит запросов к API: " . $e->getMessage(); } catch (TalkApiException $e) { // Ошибка API (400-499) echo "Ошибка API: " . $e->getMessage(); } catch (TalkClientException $e) { // Общая ошибка клиента echo "Ошибка клиента: " . $e->getMessage(); }
Требования
- PHP 8.2 или выше
- Guzzle HTTP 7.0 или выше
- Расширение JSON