Задать вопрос
@RMate

Как отправить последовательность сообщений в строгом порядке с помощью batch?

Всем привет!
Пишу маленького чат-бота, есть необходимость отправить последовательность сообщений.
Отправляю методом
$fb = new \Facebook\Facebook([ данные подключения ]);
$batch = [];
foreach ($messages as $msg) { // messages - уже валидное сообщение для фейсбука
    $batch[] = $fb->request('POST', '/me/messages', $msg);
}
$fb->sendBatchRequest($batch);

И всё работает, но вот не задача, последовательность сообщений нарушается. Оно и не удивительно, в документации пишут, что каждый запрос выполняется асинхронно.

есть Официальный пример, и он работает... пробовал так:

$fb = new \Facebook\Facebook([ данные подключения ]);
$batch = [];
$i = 0;
foreach ($messages as $msg) { // messages - уже валидное сообщение для фейсбука
          if($i > 0) 
            $msg['message']['text'] = "{result=p_$i:$.*}" . $msg['text'];

          $batch['p_' . $i++] = $fb->request('POST', '/me/messages', $msg);
}
$fb->sendBatchRequest($batch);


и всё снова работает. И последовательность работает. только вот в сообщения, естественно, прилетает вставленная билеберда. Может подскажете куда её спрятать... если я вообще в правильную сторону двигаюсь. Спасибо.
  • Вопрос задан
  • 62 просмотра
Подписаться 2 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы