Детали WhatsApp Flow
Один WhatsApp Flow: статус, категории и ошибки валидации (если запрошены через fields).
JWT tokentoken<token>flowId*stringИдентификатор Flow
fields?stringСписок полей через запятую (id,name,status,categories,preview,validation_errors,json_version,data_api_version,endpoint_uri,data_channel_uri,whatsapp_business_account)
Детали Flow
application/json- response
id?stringname?stringstatus?FlowStatusСтатус сценария
"DRAFT""PUBLISHED""DEPRECATED"categories?array<>validationErrors?array<>jsonVersion?stringdataApiVersion?stringendpointUri?stringHTTPS-адрес вашего сервера для data channel этого Flow. Это не маршрут 1msg, и эти вызовы не приходят на webhookUrl канала.
WhatsApp отправляет POST JSON с полями encrypted_flow_data, encrypted_aes_key и initial_vector. Расшифруйте encrypted_aes_key приватным RSA-ключом от загруженного business_public_key (RSA-OAEP, SHA-256), затем encrypted_flow_data через AES-128-GCM (initial_vector — IV, последние 16 байт ciphertext — auth tag). Ответ — эта ciphertext-строка в base64 и заголовок Content-Type: text/plain. Шифруйте ответ тем же AES-ключом и IV, у которого инвертирован каждый байт. Если расшифровать запрос не удалось, ответьте HTTP 421: приложение WhatsApp заново запросит публичный ключ.
Тот же URL получает служебный ping. Ответьте в том же зашифрованном виде; расшифрованное тело — {"data":{"status":"active"}}. ping и обмены экранами не приходят в webhook канала. Когда пользователь отправляет форму, итог приходит на webhookUrl канала: messages[].interactive.type = nfm_reply.
Сначала загрузите публичный ключ через POST /whatsapp_business_encryption и вызывайте GET /whatsapp_business_encryption, пока business_public_key_signature_status не станет VALID.
uridataChannelUri?stringuripreview?whatsappBusinessAccount?curl -X GET 'https://api.1msg.io/123/flows/string'{ "id": "string", "name": "string", "status": "DRAFT", "categories": [ "SIGN_UP" ], "validationErrors": [ { "error": "string", "errorType": "string", "message": "string", "lineStart": 0, "lineEnd": 0, "columnStart": 0, "columnEnd": 0, "pointers": [ { "lineStart": 0, "lineEnd": 0, "columnStart": 0, "columnEnd": 0, "path": "string" } ] } ], "jsonVersion": "string", "dataApiVersion": "string", "endpointUri": "http://example.com", "dataChannelUri": "http://example.com", "preview": { "previewUrl": "http://example.com", "expiresAt": "2019-08-24T14:15:22Z", "id": "string" }, "whatsappBusinessAccount": {}}