Входящие файлы
Фото, видео, голосовые, документы и стикеры Gratio забирает к себе сразу при приёме: ссылки самих мессенджеров временные. В уведомлении и в истории у файла — downloadUrl, ссылка на хранилище Gratio:
https://api.gratio.net/media/{idInstance}/{chatId}/{idMessage}/{номер файла}/{подпись}
- Ссылка подписанная: токен канала для скачивания не нужен, ссылку можно отдать в браузер оператора или в CRM.
- Ответ — сам файл с его
Content-Type. Неверная подпись —404. - У альбома (несколько файлов в одном сообщении) у каждого файла своя ссылка: первый — в
fileMessageData, остальные — вadditionalFiles. - У письма с несколькими вложениями — по ссылке на каждое, письмо целиком (.eml) — отдельной ссылкой.
Ссылка не истекает, но важные файлы стоит сохранять у себя: файл нужен вашему приложению дольше, чем переписка в канале.
Ссылку на файл старого сообщения, которого нет в журнале, даёт downloadFile:
curl -X POST "$GRATIO_URL/waInstance$GRATIO_ID/downloadFile/$GRATIO_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"chatId": "8695836", "idMessage": "117428960974949548"}'
Ответ 200 OK:
{"downloadUrl": "https://api.gratio.net/media/7100000001/8695836/117428960974949548/0/d8f9…"}
Исходящие файлы
Три способа отправить файл — см. sendFileByUpload:
| Способ | Когда удобно |
|---|---|
sendFileByUpload |
файл у приложения: отправить одним запросом multipart/form-data |
sendFileByUrl |
файл лежит по публичной ссылке |
uploadFile + sendFileByUrl |
один файл — многим получателям: загрузить один раз, отправлять по ссылке |
Ссылку на отправленный файл (urlFile) Gratio возвращает в ответе — она того же вида, что downloadUrl.
Типы и пределы
- Файл — до 100 МБ (почта — письмо целиком до 20 МБ).
- Тип картинки Gratio определяет по содержимому (JPEG, PNG, GIF, WebP), а не по имени файла.
- Картинка уходит фото, видео — видео, остальное — документом. Если мессенджер не принял картинку как фото, она уходит документом.
- OGG/Opus в Telegram и WhatsApp уходит голосовым сообщением с длительностью, как из приложения.
- WhatsApp: MP3, M4A, AAC, AMR — аудио (без подписи); WAV, WebP, GIF — документом.
- Аватар группы — только JPEG.
Скачивание по ссылке
Gratio скачивает файл по ссылке сам. Ссылка должна вести на публичный адрес http(s) — не во внутреннюю сеть и не на localhost, без перенаправлений. Иначе — 400 bad_url или url_unavailable.
Аватары
Фото профиля и группы — getAvatar, getContactInfo.avatar, getGroupData.urlAvatar. В Telegram у фото нет публичных ссылок: Gratio скачивает фото и отдаёт свою подписанную ссылку того же вида.
Записи звонков
Запись разговора, который вёл сервер Gratio, — WAV, моно, 16 кГц, подписанная ссылка без токена:
https://api.gratio.net/calls/{idInstance}/{callId}/{подпись}.wav
Что дальше
- sendFileByUpload и sendFileByUrl — отправить файл.
- Файлы и альбомы — как файлы приходят в уведомлениях.
- Возможности каналов — что умеет каждый канал.
