Ставит в очередь запуск workflow в диалоге контакта. У workflow должен быть выбран запуск Запрос извне.
POST /public/workflows/{id}/trigger
В {id} передайте ID workflow. Готовый адрес можно взять в самом workflow: откройте узел запуска, выберите Запрос извне и скопируйте адрес из блока Адрес для внешней системы.
Workflow должен быть опубликован и включён.
Тело запроса
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
contact.id |
строка | одно из трёх | ID контакта в Polygram |
contact.external_id |
строка | одно из трёх | Идентификатор клиента в канале: номер WhatsApp, ID в Telegram или Instagram |
contact.phone |
строка | одно из трёх | Телефон, 5–32 символа |
data |
объект | нет | Любые данные. В workflow доступны как $trigger.data.<поле> |
request_id |
строка | нет | Ключ повтора, 1–200 символов. Второй запрос с тем же ключом workflow не запустит |
Передайте хотя бы один признак контакта. Если их несколько, используется первый по порядку: id, затем external_id, затем phone.
{
"contact": { "phone": "+7 700 000 00 00" },
"data": { "order_id": "1042", "amount": 15000 },
"request_id": "payment-1042"
}
Искать контакт по полю карточки (match) этот метод не умеет.
Как ищется контакт
- По
idищется точное совпадение. - По
external_idищется точное совпадение с идентификатором клиента в любом канале. - Из
phoneберутся только цифры. Подойдёт номер переписки WhatsApp из этих цифр (с+или без) и поле карточкиphone, равное+цифры,цифрыили строке из запроса как есть. Если номер в карточке записан с пробелами, он найдётся, только когда в запросе он записан так же.
Ответ
202 Accepted.
{
"accepted": true,
"contact_id": "cmf9a1b2c0000de34fg56hi78",
"conversation_id": "cmf9a1b2c0001de34fg56hi78"
}
| Поле | Описание |
|---|---|
accepted |
Запуск поставлен в очередь |
contact_id |
Найденный контакт. Его можно передавать в contact.id в следующих запросах |
conversation_id |
Диалог, в котором запустится workflow |
Workflow запускается в открытом диалоге контакта с последней активностью. Если открытых диалогов нет, берётся последний.
Код 202 подтверждает только, что запуск принят. Запуск будет пропущен без ошибки, если:
request_idуже запускал этот workflow;- у workflow включено Один раз на контакт, и для контакта он уже выполнялся;
- в workflow выбраны роли в блоке Для кого, а диалог ведёт сотрудник другой роли или диалог ни на кого не назначен;
- workflow выключили или сняли с публикации между запросом и запуском.
Ошибки
| Код | Когда |
|---|---|
| 400 | Поля не прошли проверку или не передан ни один признак контакта |
| 401 | Ключ доступа не передан или неверный |
| 404 | Workflow с таким ID не найден или не найден контакт |
| 409 | У workflow выбран другой запуск, не Запрос извне; workflow не опубликован или выключен; по external_id или phone нашлось несколько контактов, в этом случае передайте contact.id |
| 422 | У контакта нет ни одного диалога |
Что происходит в Polygram
- Workflow выполняет свои шаги в выбранном диалоге: отправляет сообщения, ставит теги, назначает диалог.
- В ленте диалога появляются события запуска и завершения workflow.
- Без
request_idкаждый запрос запускает workflow заново, даже с теми же данными. - С
request_idзапрос можно повторять: ключ запоминается для этого workflow навсегда.
Пример
curl -X POST https://api.polygram.chat/api/public/workflows/cmf7z8y9x0000ab12cd34ef56/trigger \
-H "X-Api-Key: ak_..." \
-H "Content-Type: application/json" \
-d '{
"contact": { "external_id": "77000000000" },
"data": { "order_id": "1042" },
"request_id": "order-1042-paid"
}'