Skip to content

Commit 3ad69cb

Browse files
committed
(fix) readme updated
(fix) model for talk close added
1 parent 51e3fc2 commit 3ad69cb

File tree

4 files changed

+99
-39
lines changed

4 files changed

+99
-39
lines changed

README.md

Lines changed: 42 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -130,39 +130,41 @@ $leadsService = $apiClient->leads();
130130

131131
В данный момент доступны следующие сервисы:
132132

133-
| Сервис | Цель сервиса |
134-
|-------------------|-------------------------------|
135-
| notes | Примечание сущности |
136-
| tags | Теги сущностей |
137-
| tasks | Задачи |
138-
| leads | Сделки |
139-
| contacts | Контакты |
140-
| companies | Компании |
141-
| catalogs | Каталоги |
142-
| catalogElements | Элементы каталогов |
143-
| customFields | Пользовательские поля |
144-
| customFieldGroups | Группы пользовательских полей |
145-
| account | Информация об аккаунте |
146-
| roles | Роли пользователей |
147-
| users | Роли юзеров |
148-
| customersSegments | Сегменты покупателей |
149-
| events | Список событий |
150-
| webhooks | Вебхуки |
151-
| unsorted | Неразобранное |
152-
| pipelines | Воронки сделок |
153-
| statuses | Статусы сделок |
154-
| widgets | Виджеты |
155-
| lossReason | Причины отказа |
156-
| transactions | Покупки покупателей |
157-
| customers | Покупатели |
158-
| customersStatuses | Сегменты покупателя |
133+
| Сервис | Цель сервиса |
134+
|----------------------|-------------------------------|
135+
| notes | Примечание сущности |
136+
| tags | Теги сущностей |
137+
| tasks | Задачи |
138+
| leads | Сделки |
139+
| contacts | Контакты |
140+
| companies | Компании |
141+
| catalogs | Каталоги |
142+
| catalogElements | Элементы каталогов |
143+
| customFields | Пользовательские поля |
144+
| customFieldGroups | Группы пользовательских полей |
145+
| account | Информация об аккаунте |
146+
| roles | Роли пользователей |
147+
| users | Роли юзеров |
148+
| customersSegments | Сегменты покупателей |
149+
| events | Список событий |
150+
| webhooks | Вебхуки |
151+
| unsorted | Неразобранное |
152+
| pipelines | Воронки сделок |
153+
| statuses | Статусы сделок |
154+
| widgets | Виджеты |
155+
| lossReason | Причины отказа |
156+
| transactions | Покупки покупателей |
157+
| customers | Покупатели |
158+
| customersStatuses | Сегменты покупателя |
159159
| customersBonusPoints | Бонусные баллы покупателя |
160-
| calls | Звонки |
161-
| products | Товары |
162-
| links | Массовая привязка сущностей |
163-
| shortLinks | Короткие ссылки |
164-
| getOAuthClient | oAuth сервис |
165-
| getRequest | Голый запросы |
160+
| calls | Звонки |
161+
| products | Товары |
162+
| links | Массовая привязка сущностей |
163+
| shortLinks | Короткие ссылки |
164+
| talks | Беседы |
165+
| entitySubscriptions | Подписчики сущности |
166+
| getOAuthClient | oAuth сервис |
167+
| getRequest | Голый запросы |
166168

167169
#### Для большинства сервисов есть базовый набор методов:
168170

@@ -362,7 +364,7 @@ $leadsService = $apiClient->leads();
362364
redeemPoints(BonusPointsActionModel $bonusPointsActionModel)
363365
```
364366

365-
#### Методы доступные в сервисе ```notes```:
367+
#### Методы доступные в сервисе ```notes```, ```entitySubscriptions```:
366368
1. getByParentId Получение данных по ID родительской сущности
367369
1. parentId - ID родительской сущности
368370
2. filter (BaseEntityFilter) - фильтр
@@ -473,6 +475,13 @@ $leadsService = $apiClient->leads();
473475
updateSettings(ProductsSettingsModel $productsSettings);
474476
```
475477

478+
#### Методы, доступные в сервисе ```talks```
479+
2. close
480+
1. model (TalkCloseActionModel) - модель для закрытия беседы
481+
2. Результатом выполнения - является закрытие беседы или запуск NPS-бота для последующего закрытия беседы
482+
```php
483+
close(TalkCloseActionModel $closeAction)
484+
```
476485

477486
## Обработка ошибок
478487

examples/talks_actions.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
declare(strict_types=1);
44

5+
use AmoCRM\AmoCRM\Models\Talks\TalkCloseActionModel;
56
use AmoCRM\Exceptions\AmoCRMApiException;
67
use League\OAuth2\Client\Token\AccessTokenInterface;
78

@@ -35,7 +36,7 @@ function (AccessTokenInterface $accessToken, string $baseDomain) {
3536
}
3637

3738
try {
38-
$talksService->close($talk->getTalkId());
39+
$talksService->close(new TalkCloseActionModel($talk->getTalkId(), true));
3940
} catch (AmoCRMApiException $exception) {
4041
printError($exception);
4142
die;

src/AmoCRM/EntitiesServices/Talks.php

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace AmoCRM\EntitiesServices;
44

55
use AmoCRM\AmoCRM\Models\TalkModel;
6+
use AmoCRM\AmoCRM\Models\Talks\TalkCloseActionModel;
67
use AmoCRM\Client\AmoCRMApiClient;
78
use AmoCRM\Client\AmoCRMApiRequest;
89
use AmoCRM\Collections\BaseApiCollection;
@@ -97,18 +98,17 @@ public function syncOne(BaseApiModel $apiModel, $with = []): BaseApiModel
9798
/**
9899
* Закрыть беседу
99100
*
100-
* @param int $talkId
101-
* @param bool|null $forceClose
101+
* @param TalkCloseActionModel $closeAction
102102
*
103103
* @return void
104104
* @throws AmoCRMApiException
105105
* @throws AmoCRMoAuthApiException
106106
* @throws \AmoCRM\Exceptions\AmoCRMApiNoContentException
107107
*/
108-
public function close(int $talkId, ?bool $forceClose = null): void
108+
public function close(TalkCloseActionModel $closeAction): void
109109
{
110-
$body = $forceClose === null ? [] : ['force_close' => $forceClose];
110+
$body = ['force_close' => $closeAction->isForceClose()];
111111
/** @noinspection UnusedFunctionResultInspection */
112-
$this->request->post($this->getMethod() . '/' . $talkId . '/close', $body);
112+
$this->request->post($this->getMethod() . '/' . $closeAction->getTalkId() . '/close', $body);
113113
}
114114
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace AmoCRM\AmoCRM\Models\Talks;
6+
7+
/**
8+
* Модель для закрытия беседы
9+
*/
10+
class TalkCloseActionModel
11+
{
12+
/** @var int */
13+
protected $talkId;
14+
/**
15+
* Если выставлен true - закрыть беседу без запуска NPS-бота
16+
*
17+
* @var bool
18+
*/
19+
protected $forceClose = false;
20+
21+
public function __construct(int $talkId, bool $forceClose = false)
22+
{
23+
$this->talkId = $talkId;
24+
$this->forceClose = $forceClose;
25+
}
26+
27+
public function getTalkId(): int
28+
{
29+
return $this->talkId;
30+
}
31+
32+
public function setTalkId(int $talkId): self
33+
{
34+
$this->talkId = $talkId;
35+
36+
return $this;
37+
}
38+
39+
public function isForceClose(): bool
40+
{
41+
return $this->forceClose;
42+
}
43+
44+
public function setForceClose(bool $forceClose): self
45+
{
46+
$this->forceClose = $forceClose;
47+
48+
return $this;
49+
}
50+
}

0 commit comments

Comments
 (0)