Интеграция Clickatel WhatsApp не позволяет отправлять изображения

Я не могу отправлять мультимедийные файлы, особенно изображения (jpeg), с помощью Clickatel One API.

Тем не менее, текстовые сообщения доставляются.

Ниже приведен фрагмент кода для отправки файла: (PHP)

$header = [
    'Authorization: ' . $clickatel_api_key,
    'Content-Type: image/jpeg'
];

$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_URL, 'https://platform.clickatell.com/v1/media?fileName=' . $name . '&to=254712345678');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $file);
curl_setopt($ch, CURLOPT_ENCODING, '');
curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
curl_setopt($ch, CURLOPT_TIMEOUT, 0);

$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);

return $result;

Ниже приведен ответ на запрос:

{"error":null,"fileId":"2eee5d0eee4fc4f42943e47c06f12345fdss2ddd.jpg","accepted":true}

Медиафайл не доставляется.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
41
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я думаю, что вызов API, который вы делаете в своем примере, загружает файл и возвращает идентификатор файла. Затем вы должны отправить сообщение (другой HTTP POST), используя этот идентификатор файла, например:

{
  "messages": [
    {
      "channel": "whatsapp",
      "to": "2799900001",
      "media": {
        "fileId": "USE YOUR FILE ID HERE",
        "caption": "First Image File"
      }
    }
  ]
}

Uploaded media file will be available for message sending for 30 days after uploading

Альтернативой является выполнение одного HTTP-запроса, содержащего встроенные данные файла:

{
  "messages": [
    {
      "channel": "whatsapp",
      "to": "2799900001",
      "content": "/9j/4AAQSkZJRgABAQEASABIAAD/2w...SDayT2Nha/OIUS3FhlyHzB8ic6ctekf/9k = ",
      "media": {
        "contentType": "image/png",
        "caption": "First Image File"
      }
    }
  ]
}

Примеры в документации Clickatell, на которые я ссылаюсь, называются:

  • Whatsapp: По справочным СМИ: Одно сообщение
  • Whatsapp: встроенные медиа: одно сообщение

Если вы используете метод отправки по ссылке (включая два HTTP-запроса), было бы полезно повторно использовать ваш объект curl ($ch) между всеми HTTP-запросами (даже для других сообщений), чтобы вы повторно использовали свое HTTP-соединение для уменьшения задержки и снижение использования ЦП на вашей стороне.

Спасибо. Это решило проблему. Мне не хватало части для отправки дополнительного почтового запроса с идентификатором файла.

Tarus 10.05.2022 12:55

Отправка ответа изображения в виде сообщения, как показано, сработала

Как сейчас написано, ваш ответ неясен. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, которая поможет другим понять, как это относится к заданному вопросу. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.

Community 11.05.2022 03:19

Другие вопросы по теме