## 1. Для чего это нужно
Эта инструкция нужна, чтобы:
- входящие сообщения из Wazzup приходили в CRM;
- исходящие из CRM корректно отправлялись через Wazzup;
- webhook не уходил в другую базу (например, `copytest` вместо боевой базы);
- быстро диагностировать, почему сообщения не появляются в CRM.



---

## 2. Что важно понимать заранее

1. Настройка webhook хранится в **Wazzup** и привязана к **API-токену**.
2. Один токен = один `webhooksUri`.
3. Если использовать другой токен, webhook может указывать на другую базу.
4. Для попадания входящих в CRM должно быть включено `messagesAndStatuses: true`.

---

## 3. Минимальные требования

- Есть рабочий API-токен Wazzup.
- Есть публичный URL вашей 1С базы для webhook (пример: `https://gds.4dev.app/api/hs/extint/wazzup/test`).
- Этот URL при проверке Wazzup возвращает HTTP `200`.
- В 1С настроена учетная запись Wazzup (токен, каналы, права).

---

## 4. Проверить текущую настройку webhook

Запрос:

```http
GET https://api.wazzup24.com/v3/webhooks
Authorization: Bearer <WAZZUP_API_KEY>
```

Ожидаем в ответе:
- `webhooksUri` — куда сейчас уходят события;
- `subscriptions.messagesAndStatuses` = `true`.

Если здесь указан `copytest` или другая база — webhook уходит не туда.

---

## 5. Установить правильный webhook URL

Запрос:

```http
PATCH https://api.wazzup24.com/v3/webhooks
Authorization: Bearer <WAZZUP_API_KEY>
Content-Type: application/json
```

Тело:

```json
{
  "webhooksUri": "https://gds.4dev.app/api/hs/extint/wazzup/test",
  "subscriptions": {
    "messagesAndStatuses": true,
    "contactsAndDealsCreation": false,
    "channelsUpdates": false,
    "wabaTemplatesStatus": false
  }
}
```

### Если получили ошибку `WEBHOOKS_REQUEST_NOT_VALID`
Описание обычно: `Response status must be 200`.

Это значит Wazzup проверил указанный URL и получил не `200`.

Что делать:
1. Подставить endpoint, который точно отвечает `200` (часто это `/test`).
2. Проверить этот URL вручную (GET/POST) и убедиться в `200`.
3. Повторить PATCH.

---

## 6. Проверить каналы и channelId

Запрос:

```http
GET https://api.wazzup24.com/v3/channels
Authorization: Bearer <WAZZUP_API_KEY>
```

Проверьте:
- нужный канал активен (`state=active`);
- зафиксирован `channelId`;
- понимаете `transport` (например, `tgapi`) для диагностики маппинга в 1С.

---

## 7. Тест исходящего сообщения (через Wazzup API)

Запрос:

```http
POST https://api.wazzup24.com/v3/message
Authorization: Bearer <WAZZUP_API_KEY>
Content-Type: application/json
```

Тело (пример):

```json
{
  "channelId": "<CHANNEL_ID>",
  "chatType": "max",
  "chatId": "289480261",
  "text": "Тест исходящего"
}
```

Успех:
- HTTP `201`;
- в ответе есть `messageId` и `chatId`.

Важно:
- это только факт приема Wazzup;
- чтобы CRM обновилась, должен прийти webhook обратно в 1С.

---

## 8. Тест входящего сообщения

Правильный тест:
1. Написать в подключенный канал **с внешнего личного аккаунта**.
2. Проверить, что сообщение видно в Wazzup.
3. Проверить, что webhook ушел в вашу базу (`webhooksUri`).
4. Проверить, что событие записалось в CRM.

Важно:
- не тестировать "сам с собой" на сервисный канал;
- входящее может не дойти до CRM из-за фильтрации в обработчике (тип канала, channelId, права).

---

## 9. Проверки в 1С CRM

Проверьте в конфигурации/данных:

1. Учетная запись Wazzup:
- `Справочник.CRM_УчетныеЗаписиМессенджеров`
- корректный токен, активная учетка.

2. Распределение каналов (если включено):
- `Константа.РазделятьЧатыПоОтветственным`
- `РегистрСведений.CRM_WazzupОтветственныеПоКаналам`
- `Константа.ПользовательНеразобранныхЧатовWazzup`

3. Логи обмена:
- `РегистрСведений.Дев_ЖурналОбменаМессенджеры`
- проверка факта входа webhook/ошибок.

4. Документ сообщений:
- `Документ.CRM_СообщениеМессенджера`
- проверка, создаются ли записи по входящим.

---

## 10. Частые причины "в Wazzup есть, в CRM нет"

1. `webhooksUri` указывает на другую базу (например, `copytest`).
2. Используется другой API-токен, где webhook настроен иначе.
3. `messagesAndStatuses` выключен.
4. Endpoint webhook не возвращает `200`.
5. В 1С включено распределение, но channelId не назначен и нет fallback-пользователя.
6. Тип канала из webhook не маппится в ожидаемый тип в 1С.

---

## 11. Быстрый чек-лист перед сдачей

- [ ] `GET /v3/webhooks` показывает правильный `webhooksUri` (боевая база).
- [ ] `messagesAndStatuses = true`.
- [ ] `PATCH /v3/webhooks` выполняется без 400.
- [ ] `GET /v3/channels` показывает активный канал и нужный `channelId`.
- [ ] Входящее от внешнего аккаунта видно в Wazzup.
- [ ] В 1С фиксируется webhook и создается сообщение.
- [ ] В UI CRM чат/лента обновляются.

---

## 12. Шаблон для техподдержки Wazzup

Здравствуйте.

По каналу `<CHANNEL_ID>` входящие сообщения видны в Wazzup, но webhook в нашу CRM не приходит.

Просим проверить:
1. delivery log webhook по времени `<TIME_WINDOW>`;
2. активность подписки `messagesAndStatuses`;
3. фактический payload и статус отправки webhook;
4. причину, если webhook по inbound не отправляется.

Наш текущий `webhooksUri`: `<WEBHOOK_URL>`